diff --git a/src/main/java/kamkeel/npcs/controllers/SyncController.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java index 7876b71d9..9617f4d12 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncController.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java @@ -53,22 +53,9 @@ public class SyncController { public static boolean DEBUG_SYNC_LOGGING = false; - private static final SyncController SERVER = new SyncController(); + private static final EnumMap cacheEntries = new EnumMap<>(EnumSyncType.class); + private static final ConcurrentHashMap playerSyncState = new ConcurrentHashMap<>(); - private final EnumMap cacheEntries = new EnumMap<>(EnumSyncType.class); - private final ConcurrentHashMap playerSyncState = new ConcurrentHashMap<>(); - - private SyncController() { - registerCache(EnumSyncType.FACTION, SyncController::factionsNBT); - registerCache(EnumSyncType.DIALOG_CATEGORY, SyncController::dialogCategoriesNBT); - registerCache(EnumSyncType.QUEST_CATEGORY, SyncController::questCategoriesNBT); - registerCache(EnumSyncType.WORKBENCH_RECIPES, SyncController::workbenchNBT); - registerCache(EnumSyncType.CARPENTRY_RECIPES, SyncController::carpentryNBT); - registerCache(EnumSyncType.ANVIL_RECIPES, SyncController::anvilNBT); - registerCache(EnumSyncType.CUSTOM_EFFECTS, SyncController::customEffectsNBT); - registerCache(EnumSyncType.MAGIC, SyncController::magicsNBT); - registerCache(EnumSyncType.MAGIC_CYCLE, SyncController::magicCyclesNBT); - } private static void debug(String message, Object... args) { if (DEBUG_SYNC_LOGGING) { @@ -89,46 +76,25 @@ public class SyncController { }; public static void load() { - SERVER.loadInternal(); - } - - @Deprecated - public static void rebuildAllCaches() { - load(); - } - - public static void resetServerState() { - SERVER.resetState(); - } - - private void loadInternal() { - resetState(); - rebuildAllCachesInternal(); - } - - private void resetState() { - for (SyncCacheEntry entry : cacheEntries.values()) { - if (entry != null) { - entry.reset(); - } - } + cacheEntries.clear(); playerSyncState.clear(); - } - private void rebuildAllCachesInternal() { - for (EnumSyncType type : EnumSyncType.values()) { - SyncCacheEntry entry = cacheEntries.get(type); - if (entry != null) { - entry.getPayload(type); - } - } + registerCache(EnumSyncType.FACTION, SyncController::factionsNBT); + registerCache(EnumSyncType.DIALOG_CATEGORY, SyncController::dialogCategoriesNBT); + registerCache(EnumSyncType.QUEST_CATEGORY, SyncController::questCategoriesNBT); + registerCache(EnumSyncType.WORKBENCH_RECIPES, SyncController::workbenchNBT); + registerCache(EnumSyncType.CARPENTRY_RECIPES, SyncController::carpentryNBT); + registerCache(EnumSyncType.ANVIL_RECIPES, SyncController::anvilNBT); + registerCache(EnumSyncType.CUSTOM_EFFECTS, SyncController::customEffectsNBT); + registerCache(EnumSyncType.MAGIC, SyncController::magicsNBT); + registerCache(EnumSyncType.MAGIC_CYCLE, SyncController::magicCyclesNBT); } public static void syncPlayer(EntityPlayerMP player) { - SERVER.syncPlayerInternal(player, true); + SyncController.syncPlayerInternal(player, true); } - private void syncPlayerInternal(EntityPlayerMP player, boolean includePostPackets) { + private static void syncPlayerInternal(EntityPlayerMP player, boolean includePostPackets) { PlayerSyncState state = playerSyncState.computeIfAbsent(player.getUniqueID(), PlayerSyncState::new); for (EnumSyncType type : LOGIN_SYNC_TYPES) { @@ -161,7 +127,7 @@ public class SyncController { } public static void beginLogin(EntityPlayerMP player) { - SERVER.playerSyncState.computeIfAbsent(player.getUniqueID(), PlayerSyncState::new); + playerSyncState.computeIfAbsent(player.getUniqueID(), PlayerSyncState::new); PacketHandler.Instance.sendToPlayer( new LoginPacket(getServerCacheKey(), getServerRevisionSnapshot()), player @@ -175,7 +141,7 @@ public class SyncController { Map clientRevisions ) { String currentServerKey = getServerCacheKey(); - PlayerSyncState state = SERVER.playerSyncState.computeIfAbsent(player.getUniqueID(), PlayerSyncState::new); + PlayerSyncState state = playerSyncState.computeIfAbsent(player.getUniqueID(), PlayerSyncState::new); if (!currentServerKey.equals(serverKey)) { state.reset(); @@ -213,7 +179,7 @@ public class SyncController { private static EnumMap getServerRevisionSnapshot() { EnumMap snapshot = new EnumMap<>(EnumSyncType.class); for (EnumSyncType type : LOGIN_SYNC_TYPES) { - SyncCacheEntry entry = SERVER.cacheEntries.get(type); + SyncCacheEntry entry = cacheEntries.get(type); if (entry != null) { snapshot.put(type, entry.getRevisionValue()); } @@ -237,7 +203,7 @@ public class SyncController { } public static int getCurrentRevision(EnumSyncType type) { - SyncCacheEntry entry = SERVER.cacheEntries.get(type); + SyncCacheEntry entry = cacheEntries.get(type); return entry == null ? -1 : entry.getRevisionValue(); } @@ -829,12 +795,12 @@ public class SyncController { } } - private void registerCache(EnumSyncType type, Supplier supplier) { + private static void registerCache(EnumSyncType type, Supplier supplier) { cacheEntries.put(type, new SyncCacheEntry(type, supplier)); } private static CachedSyncPayload rebuildNow(EnumSyncType type) { - SyncCacheEntry entry = SERVER.cacheEntries.get(type); + SyncCacheEntry entry = cacheEntries.get(type); if (entry == null) { return null; } @@ -846,7 +812,7 @@ public class SyncController { EnumSet targets = getInvalidationTargets(type); EnumMap revisions = new EnumMap<>(EnumSyncType.class); for (EnumSyncType target : targets) { - SyncCacheEntry entry = SERVER.cacheEntries.get(target); + SyncCacheEntry entry = cacheEntries.get(target); if (entry != null) { int newRevision = entry.invalidate(); revisions.put(target, newRevision); @@ -886,7 +852,7 @@ public class SyncController { if (revision < 0) { return; } - for (PlayerSyncState state : SERVER.playerSyncState.values()) { + for (PlayerSyncState state : playerSyncState.values()) { state.updateRevision(type, revision); } } @@ -895,7 +861,7 @@ public class SyncController { if (revisions.isEmpty()) { return; } - for (PlayerSyncState state : SERVER.playerSyncState.values()) { + for (PlayerSyncState state : playerSyncState.values()) { for (Map.Entry entry : revisions.entrySet()) { state.updateRevision(entry.getKey(), entry.getValue()); } diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index b4ec0a43c..68eaa60b7 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -317,7 +317,6 @@ public class CustomNpcs { @EventHandler public void stopped(FMLServerStoppedEvent event) { - SyncController.resetServerState(); ServerCloneController.Instance = null; GlobalDataController.Instance.saveData(); ScriptController.Instance.saveForgeScripts();