diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java index 6b0d0a12..fcc628b0 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java @@ -59,6 +59,7 @@ public class PlayerGameListener implements Listener { registerPlayerEquipmentListener(); registerPlayerArmListener(); registerEntityUseListener(); + registerSlotChangeListener(); //registerLookMovement(); //registerMoveListener(); @@ -445,6 +446,30 @@ public class PlayerGameListener implements Listener { }); } + private void registerSlotChangeListener() { + ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Server.SET_SLOT) { + @Override + public void onPacketSending(PacketEvent event) { + MessagesUtil.sendDebugMessages("SetSlot Initial "); + + Player player = event.getPlayer(); + if (event.getPlayer() == null) return; + + int windowID = event.getPacket().getIntegers().read(0); + if (windowID != 0) return; + + CosmeticUser user = CosmeticUsers.getUser(player); + if (user == null) return; + + int slot = event.getPacket().getIntegers().read(2); + MessagesUtil.sendDebugMessages("SetSlot Slot " + slot); + if (slot == 45 && user.hasCosmeticInSlot(CosmeticSlot.OFFHAND)) { + event.getPacket().getItemModifier().write(0, user.getUserCosmeticItem(CosmeticSlot.OFFHAND)); + } + } + }); + } + private void registerPlayerEquipmentListener() { ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Server.ENTITY_EQUIPMENT) { @Override