feat: 加slsBoardEnabled规则作榜单总开关(服务端规则控制客户端命令)

BoardTogglePayload同步开关状态;客户端/slsboard检查enabled,未开启则拒绝。ServerMain加轮询线程检测规则变化。
This commit is contained in:
AxTps committed 2026-10-06 19:49:26 +08:00
1 parent 7366a8b244
commit 3fde7e2c1b
8 files changed
+99 -10

No files matched your search

@@ -44,6 +44,7 @@ public class ServerMain implements ModInitializer, CarpetExtension {
INSTANCE = this;
CarpetServer.manageExtension(this);
com.github.zly2006.carpetslsaddition.net.BoardSyncPayload.register();
com.github.zly2006.carpetslsaddition.net.BoardTogglePayload.register();
// 玩家加入时同步榜单
net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents.JOIN.register(
(handler, sender, srv) ->
@@ -60,6 +61,25 @@ public class ServerMain implements ModInitializer, CarpetExtension {
ServerMain.server = server;
com.github.zly2006.carpetslsaddition.util.BotListManager.load();
com.github.zly2006.carpetslsaddition.util.BoardSyncManager.syncToAll(server);
startBoardWatcher(server);
}
/** 每秒检测 slsBoardEnabled 规则变化并同步给客户端。 */
private void startBoardWatcher(MinecraftServer server) {
Thread t = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
try {
com.github.zly2006.carpetslsaddition.util.BoardSyncManager.tick(server);
Thread.sleep(1000L);
} catch (InterruptedException e) {
return;
} catch (Throwable ex) {
LOGGER.debug("[SLSA] board watcher error: {}", ex.toString());
}
}
}, "SLSA-BoardWatcher");
t.setDaemon(true);
t.start();
}
@Override