2025-04-13 21:40:00 +08:00

64 lines
2.4 KiB
Java

package com.example.playertime;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PlayerTimeMod implements ModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger("PlayerTimeTracker");
private static PlayerTimeTracker timeTracker;
private static WebServer webServer;
@Override
public void onInitialize() {
try {
LOGGER.info("[在线时间] 初始化玩家在线时长视奸MOD");
ServerLifecycleEvents.SERVER_STARTING.register(server -> {
LOGGER.info("[在线时间] 服务器启动 - 初始化跟踪器");
timeTracker = new PlayerTimeTracker(server);
try {
webServer = new WebServer(timeTracker, 60048);
webServer.start();
LOGGER.info("[在线时间] 在线时长Web服务器启动在端口60048");
} catch (Exception e) {
LOGGER.error("[在线时间] 无法启动 Web 服务器", e);
throw new RuntimeException("[在线时间] Web 服务器启动失败", e);
}
});
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> {
if (timeTracker != null) {
timeTracker.onPlayerJoin(handler.player);
}
});
ServerPlayConnectionEvents.DISCONNECT.register((handler, server) -> {
if (timeTracker != null) {
timeTracker.onPlayerLeave(handler.player);
}
});
ServerLifecycleEvents.SERVER_STOPPING.register(server -> {
LOGGER.info("[在线时间] 服务器停止 - 保存数据");
if (webServer != null) {
webServer.stop();
}
if (timeTracker != null) {
timeTracker.saveAll();
}
});
} catch (Exception e) {
LOGGER.error("[在线时间] Mod 初始化失败!", e);
throw new RuntimeException("[在线时间] Mod 初始化失败", e);
}
}
public static PlayerTimeTracker getTimeTracker() {
return timeTracker;
}
}