Combine inventory listener server and client into one listener. Seeing as they don't need to be seperate and actually cuts down on code
This commit is contained in:
		| @@ -51,6 +51,40 @@ public class DisguiseConfig { | ||||
|         return maxClonedDisguises; | ||||
|     } | ||||
|  | ||||
|     public static void initConfig(ConfigurationSection config) { | ||||
|         setSoundsEnabled(config.getBoolean("DisguiseSounds")); | ||||
|         setVelocitySent(config.getBoolean("SendVelocity")); | ||||
|         setViewDisguises(config.getBoolean("ViewSelfDisguises")); | ||||
|         setHearSelfDisguise(config.getBoolean("HearSelfDisguise")); | ||||
|         setHideArmorFromSelf(config.getBoolean("RemoveArmor")); | ||||
|         setHideHeldItemFromSelf(config.getBoolean("RemoveHeldItem")); | ||||
|         setAddEntityAnimations(config.getBoolean("AddEntityAnimations")); | ||||
|         setNameOfPlayerShownAboveDisguise(config.getBoolean("ShowNamesAboveDisguises")); | ||||
|         setNameAboveHeadAlwaysVisible(config.getBoolean("NameAboveHeadAlwaysVisible")); | ||||
|         setModifyBoundingBox(config.getBoolean("ModifyBoundingBox")); | ||||
|         setMonstersIgnoreDisguises(config.getBoolean("MonstersIgnoreDisguises")); | ||||
|         setDisguiseBlownOnAttack(config.getBoolean("BlowDisguises")); | ||||
|         setDisguiseBlownMessage(ChatColor.translateAlternateColorCodes('&', | ||||
|                 config.getString("BlownDisguiseMessage"))); | ||||
|         setKeepDisguiseOnPlayerDeath(config.getBoolean("KeepDisguises.PlayerDeath")); | ||||
|         setKeepDisguiseOnPlayerLogout(config.getBoolean("KeepDisguises.PlayerLogout")); | ||||
|         setKeepDisguiseOnEntityDespawn(config.getBoolean("KeepDisguises.EntityDespawn")); | ||||
|         setMiscDisguisesForLivingEnabled(config.getBoolean("MiscDisguisesForLiving")); | ||||
|         setMovementPacketsEnabled(config.getBoolean("PacketsEnabled.Movement")); | ||||
|         setWitherSkullPacketsEnabled(config.getBoolean("PacketsEnabled.WitherSkull")); | ||||
|         setEnquipmentPacketsEnabled(config.getBoolean("PacketsEnabled.Enquipment")); | ||||
|         setAnimationPacketsEnabled(config.getBoolean("PacketsEnabled.Animation")); | ||||
|         setBedPacketsEnabled(config.getBoolean("PacketsEnabled.Bed")); | ||||
|         setRidingPacketsEnabled(config.getBoolean("PacketsEnabled.Riding")); | ||||
|         setEntityStatusPacketsEnabled(config.getBoolean("PacketsEnabled.EntityStatus")); | ||||
|         setCollectPacketsEnabled(config.getBoolean("PacketsEnabled.Collect")); | ||||
|         setMetadataPacketsEnabled(config.getBoolean("PacketsEnabled.Metadata")); | ||||
|         setMaxHealthDeterminedByDisguisedEntity(config.getBoolean("MaxHealthDeterminedByEntity")); | ||||
|         setDisguiseEntityExpire(config.getInt("DisguiseEntityExpire")); | ||||
|         setDisguiseCloneExpire(config.getInt("DisguiseCloneExpire")); | ||||
|         setMaxClonedDisguises(config.getInt("DisguiseCloneSize")); | ||||
|     } | ||||
|  | ||||
|     public static boolean isAnimationPacketsEnabled() { | ||||
|         return animationEnabled; | ||||
|     } | ||||
| @@ -347,38 +381,4 @@ public class DisguiseConfig { | ||||
|  | ||||
|     private DisguiseConfig() { | ||||
|     } | ||||
|  | ||||
|     public static void initConfig(ConfigurationSection config) { | ||||
|         setSoundsEnabled(config.getBoolean("DisguiseSounds")); | ||||
|         setVelocitySent(config.getBoolean("SendVelocity")); | ||||
|         setViewDisguises(config.getBoolean("ViewSelfDisguises")); | ||||
|         setHearSelfDisguise(config.getBoolean("HearSelfDisguise")); | ||||
|         setHideArmorFromSelf(config.getBoolean("RemoveArmor")); | ||||
|         setHideHeldItemFromSelf(config.getBoolean("RemoveHeldItem")); | ||||
|         setAddEntityAnimations(config.getBoolean("AddEntityAnimations")); | ||||
|         setNameOfPlayerShownAboveDisguise(config.getBoolean("ShowNamesAboveDisguises")); | ||||
|         setNameAboveHeadAlwaysVisible(config.getBoolean("NameAboveHeadAlwaysVisible")); | ||||
|         setModifyBoundingBox(config.getBoolean("ModifyBoundingBox")); | ||||
|         setMonstersIgnoreDisguises(config.getBoolean("MonstersIgnoreDisguises")); | ||||
|         setDisguiseBlownOnAttack(config.getBoolean("BlowDisguises")); | ||||
|         setDisguiseBlownMessage(ChatColor.translateAlternateColorCodes('&', | ||||
|                 config.getString("BlownDisguiseMessage"))); | ||||
|         setKeepDisguiseOnPlayerDeath(config.getBoolean("KeepDisguises.PlayerDeath")); | ||||
|         setKeepDisguiseOnPlayerLogout(config.getBoolean("KeepDisguises.PlayerLogout")); | ||||
|         setKeepDisguiseOnEntityDespawn(config.getBoolean("KeepDisguises.EntityDespawn")); | ||||
|         setMiscDisguisesForLivingEnabled(config.getBoolean("MiscDisguisesForLiving")); | ||||
|         setMovementPacketsEnabled(config.getBoolean("PacketsEnabled.Movement")); | ||||
|         setWitherSkullPacketsEnabled(config.getBoolean("PacketsEnabled.WitherSkull")); | ||||
|         setEnquipmentPacketsEnabled(config.getBoolean("PacketsEnabled.Enquipment")); | ||||
|         setAnimationPacketsEnabled(config.getBoolean("PacketsEnabled.Animation")); | ||||
|         setBedPacketsEnabled(config.getBoolean("PacketsEnabled.Bed")); | ||||
|         setRidingPacketsEnabled(config.getBoolean("PacketsEnabled.Riding")); | ||||
|         setEntityStatusPacketsEnabled(config.getBoolean("PacketsEnabled.EntityStatus")); | ||||
|         setCollectPacketsEnabled(config.getBoolean("PacketsEnabled.Collect")); | ||||
|         setMetadataPacketsEnabled(config.getBoolean("PacketsEnabled.Metadata")); | ||||
|         setMaxHealthDeterminedByDisguisedEntity(config.getBoolean("MaxHealthDeterminedByEntity")); | ||||
|         setDisguiseEntityExpire(config.getInt("DisguiseEntityExpire")); | ||||
|         setDisguiseCloneExpire(config.getInt("DisguiseCloneExpire")); | ||||
|         setMaxClonedDisguises(config.getInt("DisguiseCloneSize")); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -56,8 +56,7 @@ public class PacketsManager { | ||||
|      */ | ||||
|     private static boolean cancelSound; | ||||
|     private static PacketListener clientInteractEntityListener; | ||||
|     private static PacketListener inventoryListenerClient; | ||||
|     private static PacketListener inventoryListenerServer; | ||||
|     private static PacketListener inventoryListener; | ||||
|     private static boolean inventoryModifierEnabled; | ||||
|     private static LibsDisguises libsDisguises; | ||||
|     private static PacketListener mainListener; | ||||
| @@ -771,93 +770,9 @@ public class PacketsManager { | ||||
|                 } | ||||
|             } | ||||
|         }; | ||||
|         // TODO Potentionally combine both listeners. | ||||
|         inventoryListenerServer = new PacketAdapter(libsDisguises, ListenerPriority.HIGHEST, PacketType.Play.Server.SET_SLOT, | ||||
|                 PacketType.Play.Server.WINDOW_ITEMS) { | ||||
|             @Override | ||||
|             public void onPacketSending(PacketEvent event) { | ||||
|                 // If the inventory is the players inventory | ||||
|                 if (!(event.getPlayer() instanceof com.comphenix.net.sf.cglib.proxy.Factory) | ||||
|                         && event.getPlayer().getVehicle() == null && event.getPacket().getIntegers().read(0) == 0) { | ||||
|                     Disguise disguise = DisguiseAPI.getDisguise(event.getPlayer(), event.getPlayer()); | ||||
|                     // If the player is disguised, views self disguises and is hiding a item. | ||||
|                     if (disguise != null && disguise.isSelfDisguiseVisible() | ||||
|                             && (disguise.isHidingArmorFromSelf() || disguise.isHidingHeldItemFromSelf())) { | ||||
|                         // If the server is setting the slot | ||||
|                         // Need to set it to air if its in a place it shouldn't be. | ||||
|                         // Things such as picking up a item, spawned in item. Plugin sets the item. etc. Will fire this | ||||
|                         /** | ||||
|                          * Done | ||||
|                          */ | ||||
|                         if (event.getPacketType() == PacketType.Play.Server.SET_SLOT) { | ||||
|                             // The raw slot | ||||
|                             // nms code has the start of the hotbar being 36. | ||||
|                             int slot = event.getPacket().getIntegers().read(1); | ||||
|                             // If the slot is a armor slot | ||||
|                             if (slot >= 5 && slot <= 8) { | ||||
|                                 if (disguise.isHidingArmorFromSelf()) { | ||||
|                                     // Get the bukkit armor slot! | ||||
|                                     int armorSlot = Math.abs((slot - 5) - 3); | ||||
|                                     org.bukkit.inventory.ItemStack item = event.getPlayer().getInventory().getArmorContents()[armorSlot]; | ||||
|                                     if (item != null && item.getType() != Material.AIR) { | ||||
|                                         event.setPacket(event.getPacket().shallowClone()); | ||||
|                                         event.getPacket().getModifier() | ||||
|                                                 .write(2, ReflectionManager.getNmsItem(new org.bukkit.inventory.ItemStack(0))); | ||||
|                                     } | ||||
|                                 } | ||||
|                                 // Else if its a hotbar slot | ||||
|                             } else if (slot >= 36 && slot <= 44) { | ||||
|                                 if (disguise.isHidingHeldItemFromSelf()) { | ||||
|                                     int currentSlot = event.getPlayer().getInventory().getHeldItemSlot(); | ||||
|                                     // Check if the player is on the same slot as the slot that its setting | ||||
|                                     if (slot == currentSlot + 36) { | ||||
|                                         org.bukkit.inventory.ItemStack item = event.getPlayer().getItemInHand(); | ||||
|                                         if (item != null && item.getType() != Material.AIR) { | ||||
|                                             event.setPacket(event.getPacket().shallowClone()); | ||||
|                                             event.getPacket() | ||||
|                                                     .getModifier() | ||||
|                                                     .write(2, ReflectionManager.getNmsItem(new org.bukkit.inventory.ItemStack(0))); | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } | ||||
|                             } | ||||
|                         } else if (event.getPacketType() == PacketType.Play.Server.WINDOW_ITEMS) { | ||||
|                             event.setPacket(event.getPacket().deepClone()); | ||||
|                             StructureModifier<ItemStack[]> mods = event.getPacket().getItemArrayModifier(); | ||||
|                             ItemStack[] items = mods.read(0); | ||||
|                             for (int slot = 0; slot < items.length; slot++) { | ||||
|                                 if (slot >= 5 && slot <= 8) { | ||||
|                                     if (disguise.isHidingArmorFromSelf()) { | ||||
|                                         // Get the bukkit armor slot! | ||||
|                                         int armorSlot = Math.abs((slot - 5) - 3); | ||||
|                                         org.bukkit.inventory.ItemStack item = event.getPlayer().getInventory().getArmorContents()[armorSlot]; | ||||
|                                         if (item != null && item.getType() != Material.AIR) { | ||||
|                                             items[slot] = new org.bukkit.inventory.ItemStack(0); | ||||
|                                         } | ||||
|                                     } | ||||
|                                     // Else if its a hotbar slot | ||||
|                                 } else if (slot >= 36 && slot <= 44) { | ||||
|                                     if (disguise.isHidingHeldItemFromSelf()) { | ||||
|                                         int currentSlot = event.getPlayer().getInventory().getHeldItemSlot(); | ||||
|                                         // Check if the player is on the same slot as the slot that its setting | ||||
|                                         if (slot == currentSlot + 36) { | ||||
|                                             org.bukkit.inventory.ItemStack item = event.getPlayer().getItemInHand(); | ||||
|                                             if (item != null && item.getType() != Material.AIR) { | ||||
|                                                 items[slot] = new org.bukkit.inventory.ItemStack(0); | ||||
|                                             } | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } | ||||
|                             } | ||||
|                             mods.write(0, items); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }; | ||||
|         inventoryListenerClient = new PacketAdapter(libsDisguises, ListenerPriority.HIGHEST, | ||||
|                 PacketType.Play.Client.HELD_ITEM_SLOT, PacketType.Play.Client.SET_CREATIVE_SLOT, | ||||
|                 PacketType.Play.Client.WINDOW_CLICK) { | ||||
|         inventoryListener = new PacketAdapter(libsDisguises, ListenerPriority.HIGHEST, PacketType.Play.Server.SET_SLOT, | ||||
|                 PacketType.Play.Server.WINDOW_ITEMS, PacketType.Play.Client.HELD_ITEM_SLOT, | ||||
|                 PacketType.Play.Client.SET_CREATIVE_SLOT, PacketType.Play.Client.WINDOW_CLICK) { | ||||
|             @Override | ||||
|             public void onPacketReceiving(final PacketEvent event) { | ||||
|                 if (!(event.getPlayer() instanceof com.comphenix.net.sf.cglib.proxy.Factory) | ||||
| @@ -1011,6 +926,87 @@ public class PacketsManager { | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             public void onPacketSending(PacketEvent event) { | ||||
|                 // If the inventory is the players inventory | ||||
|                 if (!(event.getPlayer() instanceof com.comphenix.net.sf.cglib.proxy.Factory) | ||||
|                         && event.getPlayer().getVehicle() == null && event.getPacket().getIntegers().read(0) == 0) { | ||||
|                     Disguise disguise = DisguiseAPI.getDisguise(event.getPlayer(), event.getPlayer()); | ||||
|                     // If the player is disguised, views self disguises and is hiding a item. | ||||
|                     if (disguise != null && disguise.isSelfDisguiseVisible() | ||||
|                             && (disguise.isHidingArmorFromSelf() || disguise.isHidingHeldItemFromSelf())) { | ||||
|                         // If the server is setting the slot | ||||
|                         // Need to set it to air if its in a place it shouldn't be. | ||||
|                         // Things such as picking up a item, spawned in item. Plugin sets the item. etc. Will fire this | ||||
|                         /** | ||||
|                          * Done | ||||
|                          */ | ||||
|                         if (event.getPacketType() == PacketType.Play.Server.SET_SLOT) { | ||||
|                             // The raw slot | ||||
|                             // nms code has the start of the hotbar being 36. | ||||
|                             int slot = event.getPacket().getIntegers().read(1); | ||||
|                             // If the slot is a armor slot | ||||
|                             if (slot >= 5 && slot <= 8) { | ||||
|                                 if (disguise.isHidingArmorFromSelf()) { | ||||
|                                     // Get the bukkit armor slot! | ||||
|                                     int armorSlot = Math.abs((slot - 5) - 3); | ||||
|                                     org.bukkit.inventory.ItemStack item = event.getPlayer().getInventory().getArmorContents()[armorSlot]; | ||||
|                                     if (item != null && item.getType() != Material.AIR) { | ||||
|                                         event.setPacket(event.getPacket().shallowClone()); | ||||
|                                         event.getPacket().getModifier() | ||||
|                                                 .write(2, ReflectionManager.getNmsItem(new org.bukkit.inventory.ItemStack(0))); | ||||
|                                     } | ||||
|                                 } | ||||
|                                 // Else if its a hotbar slot | ||||
|                             } else if (slot >= 36 && slot <= 44) { | ||||
|                                 if (disguise.isHidingHeldItemFromSelf()) { | ||||
|                                     int currentSlot = event.getPlayer().getInventory().getHeldItemSlot(); | ||||
|                                     // Check if the player is on the same slot as the slot that its setting | ||||
|                                     if (slot == currentSlot + 36) { | ||||
|                                         org.bukkit.inventory.ItemStack item = event.getPlayer().getItemInHand(); | ||||
|                                         if (item != null && item.getType() != Material.AIR) { | ||||
|                                             event.setPacket(event.getPacket().shallowClone()); | ||||
|                                             event.getPacket() | ||||
|                                                     .getModifier() | ||||
|                                                     .write(2, ReflectionManager.getNmsItem(new org.bukkit.inventory.ItemStack(0))); | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } | ||||
|                             } | ||||
|                         } else if (event.getPacketType() == PacketType.Play.Server.WINDOW_ITEMS) { | ||||
|                             event.setPacket(event.getPacket().deepClone()); | ||||
|                             StructureModifier<ItemStack[]> mods = event.getPacket().getItemArrayModifier(); | ||||
|                             ItemStack[] items = mods.read(0); | ||||
|                             for (int slot = 0; slot < items.length; slot++) { | ||||
|                                 if (slot >= 5 && slot <= 8) { | ||||
|                                     if (disguise.isHidingArmorFromSelf()) { | ||||
|                                         // Get the bukkit armor slot! | ||||
|                                         int armorSlot = Math.abs((slot - 5) - 3); | ||||
|                                         org.bukkit.inventory.ItemStack item = event.getPlayer().getInventory().getArmorContents()[armorSlot]; | ||||
|                                         if (item != null && item.getType() != Material.AIR) { | ||||
|                                             items[slot] = new org.bukkit.inventory.ItemStack(0); | ||||
|                                         } | ||||
|                                     } | ||||
|                                     // Else if its a hotbar slot | ||||
|                                 } else if (slot >= 36 && slot <= 44) { | ||||
|                                     if (disguise.isHidingHeldItemFromSelf()) { | ||||
|                                         int currentSlot = event.getPlayer().getInventory().getHeldItemSlot(); | ||||
|                                         // Check if the player is on the same slot as the slot that its setting | ||||
|                                         if (slot == currentSlot + 36) { | ||||
|                                             org.bukkit.inventory.ItemStack item = event.getPlayer().getItemInHand(); | ||||
|                                             if (item != null && item.getType() != Material.AIR) { | ||||
|                                                 items[slot] = new org.bukkit.inventory.ItemStack(0); | ||||
|                                             } | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } | ||||
|                             } | ||||
|                             mods.write(0, items); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }; | ||||
|     } | ||||
|  | ||||
| @@ -1041,11 +1037,9 @@ public class PacketsManager { | ||||
|         if (inventoryModifierEnabled != enabled) { | ||||
|             inventoryModifierEnabled = enabled; | ||||
|             if (inventoryModifierEnabled) { | ||||
|                 ProtocolLibrary.getProtocolManager().addPacketListener(inventoryListenerClient); | ||||
|                 ProtocolLibrary.getProtocolManager().addPacketListener(inventoryListenerServer); | ||||
|                 ProtocolLibrary.getProtocolManager().addPacketListener(inventoryListener); | ||||
|             } else { | ||||
|                 ProtocolLibrary.getProtocolManager().removePacketListener(inventoryListenerClient); | ||||
|                 ProtocolLibrary.getProtocolManager().removePacketListener(inventoryListenerServer); | ||||
|                 ProtocolLibrary.getProtocolManager().removePacketListener(inventoryListener); | ||||
|             } | ||||
|             for (Player player : Bukkit.getOnlinePlayers()) { | ||||
|                 Disguise disguise = DisguiseAPI.getDisguise(player, player); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user