From 4cc03892c93c804c6d0cb6217ec95c4cd7401ba7 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Tue, 13 Apr 2021 19:56:10 +0200 Subject: [PATCH] New Method to Register Bow Listener --- .../fightsystem/listener/Recording.java | 63 +++++++++++-------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/Recording.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/Recording.java index 8d0bb26..4acde52 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/Recording.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/Recording.java @@ -55,6 +55,33 @@ public class Recording implements Listener { private static final int AIR = 0; private static final Random random = new Random(); + private static final PacketAdapter BOW_PACKET_PROCESSOR = new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Client.BLOCK_PLACE) { + @Override + public void onPacketReceiving(PacketEvent event) { + PacketContainer packet = event.getPacket(); + EnumWrappers.Hand hand = packet.getHands().read(0); + Player p = event.getPlayer(); + + if(!((hand == EnumWrappers.Hand.MAIN_HAND && p.getInventory().getItemInMainHand().getType() == Material.BOW) || + (hand == EnumWrappers.Hand.OFF_HAND && p.getInventory().getItemInOffHand().getType() == Material.BOW))) + return; + + RecordSystem.bowSpan(p, true, hand != EnumWrappers.Hand.MAIN_HAND); + ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Client.BLOCK_DIG) { + @Override + public void onPacketReceiving(PacketEvent e) { + if(e.getPlayer() != event.getPlayer()) + return; + + PacketContainer packetDig = e.getPacket(); + if(packetDig.getPlayerDigTypes().read(0) == EnumWrappers.PlayerDigType.RELEASE_USE_ITEM) { + RecordSystem.bowSpan(e.getPlayer(), false, hand != EnumWrappers.Hand.MAIN_HAND); + ProtocolLibrary.getProtocolManager().removePacketListener(this); + } + } + }); + } + }; public Recording() { new StateDependentListener(Config.recording(), FightState.All, this); @@ -74,35 +101,17 @@ public class Recording implements Listener { despawnTNT(); } }.register(); - - //Bow Listener - ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Client.BLOCK_PLACE) { + new StateDependent(Config.recording(), FightState.All) { @Override - public void onPacketReceiving(PacketEvent event) { - PacketContainer packet = event.getPacket(); - EnumWrappers.Hand hand = packet.getHands().read(0); - Player p = event.getPlayer(); - - if(!((hand == EnumWrappers.Hand.MAIN_HAND && p.getInventory().getItemInMainHand().getType() == Material.BOW) || - (hand == EnumWrappers.Hand.OFF_HAND && p.getInventory().getItemInOffHand().getType() == Material.BOW))) - return; - - RecordSystem.bowSpan(p, true, hand != EnumWrappers.Hand.MAIN_HAND); - ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Client.BLOCK_DIG) { - @Override - public void onPacketReceiving(PacketEvent e) { - if(e.getPlayer() != event.getPlayer()) - return; - - PacketContainer packetDig = e.getPacket(); - if(packetDig.getPlayerDigTypes().read(0) == EnumWrappers.PlayerDigType.RELEASE_USE_ITEM) { - RecordSystem.bowSpan(e.getPlayer(), false, hand != EnumWrappers.Hand.MAIN_HAND); - ProtocolLibrary.getProtocolManager().removePacketListener(this); - } - } - }); + public void enable() { + ProtocolLibrary.getProtocolManager().addPacketListener(BOW_PACKET_PROCESSOR); } - }); + + @Override + public void disable() { + ProtocolLibrary.getProtocolManager().removePacketListener(BOW_PACKET_PROCESSOR); + } + }; } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)