From b47a2bc1d2c68cee19f362e3bbea93ba7c5dc343 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 5 Nov 2025 16:52:38 -0500 Subject: [PATCH] Reset sync caches between worlds --- .../kamkeel/npcs/controllers/SyncController.java | 15 +++++++++++++++ src/main/java/noppes/npcs/CustomNpcs.java | 3 +++ 2 files changed, 18 insertions(+) diff --git a/src/main/java/kamkeel/npcs/controllers/SyncController.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java index 7678c2a5e..9e960fc1e 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncController.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java @@ -86,6 +86,15 @@ public class SyncController { registerCache(EnumSyncType.MAGIC_CYCLE, SyncController::magicCyclesNBT); } + public static void resetServerState() { + for (SyncCacheEntry entry : CACHE_ENTRIES.values()) { + if (entry != null) { + entry.reset(); + } + } + PLAYER_SYNC_STATE.clear(); + } + public static void syncPlayer(EntityPlayerMP player) { syncPlayer(player, true); } @@ -939,6 +948,12 @@ public class SyncController { return revision; } + private synchronized void reset() { + dirty = true; + payload = null; + revision = 0; + } + private static byte[][] splitIntoChunks(byte[] payload) { int totalSize = payload.length; int chunkCount = (totalSize + LargeAbstractPacket.CHUNK_SIZE - 1) / LargeAbstractPacket.CHUNK_SIZE; diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 3cfcd18e4..a8504edbe 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -19,6 +19,7 @@ import kamkeel.npcs.command.CommandKamkeel; import kamkeel.npcs.command.profile.CommandProfile; import kamkeel.npcs.controllers.AttributeController; import kamkeel.npcs.controllers.ProfileController; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.controllers.data.profile.CNPCData; import kamkeel.npcs.developer.Developer; import kamkeel.npcs.network.PacketHandler; @@ -303,6 +304,7 @@ public class CustomNpcs { //Loading items in the about to start event was corrupting items with a damage value @EventHandler public void started(FMLServerStartedEvent event) { + SyncController.resetServerState(); RecipeController.Instance.load(); new BankController(); DialogController.Instance.load(); @@ -315,6 +317,7 @@ public class CustomNpcs { @EventHandler public void stopped(FMLServerStoppedEvent event) { + SyncController.resetServerState(); ServerCloneController.Instance = null; GlobalDataController.Instance.saveData(); ScriptController.Instance.saveForgeScripts();