feat: 加slsBoardEnabled规则作榜单总开关(服务端规则控制客户端命令)
BoardTogglePayload同步开关状态;客户端/slsboard检查enabled,未开启则拒绝。ServerMain加轮询线程检测规则变化。
This commit is contained in:
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
|
||||
|
||||
Reference in new issue
Block a user