diff --git a/src/main/java/kamkeel/npcs/controllers/SyncController.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java index ca6231ca7..100486761 100644 --- a/src/main/java/kamkeel/npcs/controllers/SyncController.java +++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java @@ -122,7 +122,7 @@ public class SyncController { private static void sendPostLoginPackets(EntityPlayerMP player) { DBCAddon.instance.syncPlayer(player); - PlayerDataSyncHandler.getInstance().syncPlayerData(player, false); + PlayerDataSyncHandler.syncPlayerData(player, false); PartyInfoPacket.sendPartyData(player); ProfileSharedQuestPacket.sendToPlayer(player); @@ -210,6 +210,18 @@ public class SyncController { updateAllPlayerRevisions(type, payload.getRevision()); } + // ═══════════════════════════════════════════════════════════════════════ + // Player data sync + // ═══════════════════════════════════════════════════════════════════════ + + public static void syncPlayerData(SyncType type, NBTTagCompound compound, boolean fullData, EntityPlayerMP player) { + Map revisions = invalidateCaches(type); + int revision = getRequestedInvalidationRevision(type, revisions); + PacketHandler.Instance.sendToPlayer( + new SyncPacket(type, EnumSyncAction.UPDATE, fullData ? 1 : 0, null, revision, compound), player); + updateAllPlayerRevisions(revisions); + } + // ═══════════════════════════════════════════════════════════════════════ // Server-side dispatchers — registry-driven // ═══════════════════════════════════════════════════════════════════════ diff --git a/src/main/java/kamkeel/npcs/controllers/data/profile/CNPCData.java b/src/main/java/kamkeel/npcs/controllers/data/profile/CNPCData.java index 7d77317a0..ccf6ecac7 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/profile/CNPCData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/profile/CNPCData.java @@ -30,7 +30,7 @@ public class CNPCData implements IProfileData { public void save(EntityPlayer player) { PlayerData customNPCData = PlayerData.get(player); customNPCData.save(); - PlayerDataSyncHandler.getInstance().syncPlayerData((EntityPlayerMP) player, false); + PlayerDataSyncHandler.syncPlayerData((EntityPlayerMP) player, false); } @Override diff --git a/src/main/java/kamkeel/npcs/controllers/sync/handlers/PlayerDataSyncHandler.java b/src/main/java/kamkeel/npcs/controllers/sync/handlers/PlayerDataSyncHandler.java index 2842b5cee..b92277c31 100644 --- a/src/main/java/kamkeel/npcs/controllers/sync/handlers/PlayerDataSyncHandler.java +++ b/src/main/java/kamkeel/npcs/controllers/sync/handlers/PlayerDataSyncHandler.java @@ -2,12 +2,10 @@ package kamkeel.npcs.controllers.sync.handlers; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.enums.EnumSyncAction; -import kamkeel.npcs.network.packets.data.large.SyncPacket; -import net.minecraft.entity.player.EntityPlayerMP; +import kamkeel.npcs.controllers.SyncController; import kamkeel.npcs.controllers.sync.SyncHandler; import kamkeel.npcs.network.enums.SyncType; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.client.ClientCacheHandler; import noppes.npcs.controllers.data.PlayerData; @@ -19,21 +17,10 @@ import noppes.npcs.controllers.data.PlayerData; */ public class PlayerDataSyncHandler implements SyncHandler { - private static final PlayerDataSyncHandler INSTANCE = new PlayerDataSyncHandler(); - - public static PlayerDataSyncHandler getInstance() { - return INSTANCE; - } - - public void syncPlayerData(EntityPlayerMP player, boolean update) { + public static void syncPlayerData(EntityPlayerMP player, boolean update) { PlayerData data = PlayerData.get(player); - if (data != null) { - if (update) { - PacketHandler.Instance.sendToPlayer(new SyncPacket(SyncType.PLAYERDATA, EnumSyncAction.UPDATE, -1, data.getSyncNBT()), player); - } else { - PacketHandler.Instance.sendToPlayer(new SyncPacket(SyncType.PLAYERDATA, EnumSyncAction.RELOAD, -1, data.getSyncNBTFull()), player); - } - } + if (data != null) + SyncController.syncPlayerData(SyncType.PLAYERDATA, update ? data.getSyncNBTFull() : data.getSyncNBT(), update, player); } // ========== SERVER-SIDE ========== @@ -46,18 +33,11 @@ public class PlayerDataSyncHandler implements SyncHandler { return null; } - // ========== CLIENT-SIDE ========== - - @SideOnly(Side.CLIENT) - @Override - public void clientHandleReload(NBTTagCompound fullCompound) { - ClientCacheHandler.playerData.setSyncNBTFull(fullCompound); - } - @SideOnly(Side.CLIENT) @Override public void clientHandleUpdate(NBTTagCompound compound, int categoryId) { - ClientCacheHandler.playerData.setSyncNBT(compound); + if (categoryId == 1) ClientCacheHandler.playerData.setSyncNBTFull(compound); + else ClientCacheHandler.playerData.setSyncNBT(compound); } @Override diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 8c1ef02c9..3e7fa07d9 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -143,7 +143,7 @@ public class ScriptPlayerEventHandler { } if (playerData.updateClient) { - PlayerDataSyncHandler.getInstance().syncPlayerData((EntityPlayerMP) player, true); + PlayerDataSyncHandler.syncPlayerData((EntityPlayerMP) player, true); playerData.updateClient = false; }