diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/client/BoardHudElement.java b/src/main/java/com/github/zly2006/carpetslsaddition/client/BoardHudElement.java index 1fca32a..150e3e0 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/client/BoardHudElement.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/client/BoardHudElement.java @@ -28,7 +28,6 @@ public class BoardHudElement implements HudElement { @Override public void extractRenderState(GuiGraphicsExtractor g, DeltaTracker delta) { String board = BoardClientState.displaying; - com.github.zly2006.carpetslsaddition.ServerMain.LOGGER.info("[SLSA-HUD] extractRenderState board={}", board); if (board == null || board.isEmpty()) { return; } @@ -37,6 +36,9 @@ public class BoardHudElement implements HudElement { return; } List list = BoardClientState.current(); + if (list.isEmpty()) { + return; + } Font font = mc.font; String title = BoardClientState.currentTitle(); diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/util/BoardSyncManager.java b/src/main/java/com/github/zly2006/carpetslsaddition/util/BoardSyncManager.java index 58277d5..a3dae69 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/util/BoardSyncManager.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/util/BoardSyncManager.java @@ -85,13 +85,22 @@ public final class BoardSyncManager { } private static volatile Boolean lastEnabled = null; + private static long lastSyncTick = 0; - /** 由轮询线程每秒调用:规则值变化时同步给所有玩家。 */ + /** 由轮询线程每秒调用:规则值变化时立即同步;否则每 5 秒定期同步一次数据。 */ public static void tick(MinecraftServer server) { boolean now = com.github.zly2006.carpetslsaddition.SLSCarpetSettings.slsBoardEnabled; if (lastEnabled == null || lastEnabled != now) { lastEnabled = now; syncToAll(server); + return; + } + if (now) { + long tick = server.getTickCount(); + if (tick - lastSyncTick >= 100) { // 每 100 tick(5秒)同步一次数据 + lastSyncTick = tick; + syncToAll(server); + } } } }