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
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user