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

@@ -61,12 +61,18 @@ public final class BoardSyncManager {
return list;
}
/** 把两个榜单都同步给某玩家。 */
/** 把两个榜单 + 开关状态同步给某玩家。 */
public static void syncTo(ServerPlayer player) {
MinecraftServer server = ServerMain.server;
if (server == null) {
return;
}
boolean enabled = com.github.zly2006.carpetslsaddition.SLSCarpetSettings.slsBoardEnabled;
// 先发开关状态
ServerPlayNetworking.send(player, new com.github.zly2006.carpetslsaddition.net.BoardTogglePayload(enabled));
if (!enabled) {
return;
}
ServerPlayNetworking.send(player, new BoardSyncPayload(BOARD_DEATHS, buildBoard(server, BOARD_DEATHS)));
ServerPlayNetworking.send(player, new BoardSyncPayload(BOARD_MINED, buildBoard(server, BOARD_MINED)));
}
@@ -77,4 +83,15 @@ public final class BoardSyncManager {
syncTo(player);
}
}
private static volatile Boolean lastEnabled = null;
/** 由轮询线程每秒调用:规则值变化时同步给所有玩家。 */
public static void tick(MinecraftServer server) {
boolean now = com.github.zly2006.carpetslsaddition.SLSCarpetSettings.slsBoardEnabled;
if (lastEnabled == null || lastEnabled != now) {
lastEnabled = now;
syncToAll(server);
}
}
}