diff --git a/FightSystem_8/src/de/steamwar/fightsystem/utils/BountifulWrapper8.java b/FightSystem_8/src/de/steamwar/fightsystem/utils/BountifulWrapper8.java
index 50ff9ea..5e5a340 100644
--- a/FightSystem_8/src/de/steamwar/fightsystem/utils/BountifulWrapper8.java
+++ b/FightSystem_8/src/de/steamwar/fightsystem/utils/BountifulWrapper8.java
@@ -19,7 +19,6 @@
package de.steamwar.fightsystem.utils;
-import com.comphenix.protocol.wrappers.EnumWrappers;
import de.steamwar.fightsystem.listener.Recording;
import de.steamwar.fightsystem.record.GlobalRecorder;
import net.md_5.bungee.api.chat.BaseComponent;
@@ -35,8 +34,14 @@ import org.bukkit.event.Listener;
import org.bukkit.scoreboard.Team;
public class BountifulWrapper8 implements BountifulWrapper.IBountifulWrapper {
+
@Override
- public boolean bowInHand(EnumWrappers.Hand hand, Player p) {
+ public boolean mainHand(Object packet) {
+ return true;
+ }
+
+ @Override
+ public boolean bowInHand(boolean mainHand, Player p) {
return p.getInventory().getItemInHand().getType() == Material.BOW;
}
diff --git a/FightSystem_9/src/de/steamwar/fightsystem/utils/BountifulWrapper9.java b/FightSystem_9/src/de/steamwar/fightsystem/utils/BountifulWrapper9.java
index 12312f9..360ed2b 100644
--- a/FightSystem_9/src/de/steamwar/fightsystem/utils/BountifulWrapper9.java
+++ b/FightSystem_9/src/de/steamwar/fightsystem/utils/BountifulWrapper9.java
@@ -19,7 +19,7 @@
package de.steamwar.fightsystem.utils;
-import com.comphenix.protocol.wrappers.EnumWrappers;
+import com.comphenix.tinyprotocol.Reflection;
import de.steamwar.fightsystem.listener.Recording;
import de.steamwar.fightsystem.record.GlobalRecorder;
import net.md_5.bungee.api.ChatMessageType;
@@ -38,10 +38,19 @@ import org.bukkit.event.player.PlayerSwapHandItemsEvent;
import org.bukkit.scoreboard.Team;
public class BountifulWrapper9 implements BountifulWrapper.IBountifulWrapper {
+
+ private static final Class> enumHand = Reflection.getClass("{nms}.EnumHand");
+ private static final Object mainHand = enumHand.getEnumConstants()[0];
+ private static final Reflection.FieldAccessor> blockPlaceHand = Reflection.getField(Recording.blockPlacePacket, enumHand, 0);
+
@Override
- public boolean bowInHand(EnumWrappers.Hand hand, Player p) {
- return (hand == EnumWrappers.Hand.MAIN_HAND && p.getInventory().getItemInMainHand().getType() == Material.BOW) ||
- (hand == EnumWrappers.Hand.OFF_HAND && p.getInventory().getItemInOffHand().getType() == Material.BOW);
+ public boolean mainHand(Object packet) {
+ return blockPlaceHand.get(packet) == mainHand;
+ }
+
+ @Override
+ public boolean bowInHand(boolean mainHand, Player p) {
+ return (mainHand ? p.getInventory().getItemInMainHand() : p.getInventory().getItemInOffHand()).getType() == Material.BOW;
}
@Override
diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/Recording.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/Recording.java
index 94d8182..1a69667 100644
--- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/Recording.java
+++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/Recording.java
@@ -19,12 +19,7 @@
package de.steamwar.fightsystem.listener;
-import com.comphenix.protocol.PacketType;
-import com.comphenix.protocol.ProtocolLibrary;
-import com.comphenix.protocol.events.PacketAdapter;
-import com.comphenix.protocol.events.PacketContainer;
-import com.comphenix.protocol.events.PacketEvent;
-import com.comphenix.protocol.wrappers.EnumWrappers;
+import com.comphenix.tinyprotocol.Reflection;
import de.steamwar.fightsystem.ArenaMode;
import de.steamwar.fightsystem.FightSystem;
import de.steamwar.fightsystem.fight.Fight;
@@ -37,6 +32,7 @@ import de.steamwar.fightsystem.states.StateDependentListener;
import de.steamwar.fightsystem.states.StateDependentTask;
import de.steamwar.fightsystem.utils.BountifulWrapper;
import de.steamwar.fightsystem.utils.FlatteningWrapper;
+import de.steamwar.fightsystem.utils.ProtocolAPI;
import de.steamwar.fightsystem.utils.SWSound;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@@ -62,28 +58,6 @@ public class Recording implements Listener {
private static final int AIR = 0;
private static final Random random = new Random();
private static final World world = Bukkit.getWorlds().get(0);
- 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(!BountifulWrapper.impl.bowInHand(hand, p))
- return;
-
- GlobalRecorder.getInstance().bowSpan(p, true, hand != EnumWrappers.Hand.MAIN_HAND);
- }
- };
- private static final PacketAdapter BOW_PACKET_DEDRAW_PROCESSOR = new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Client.BLOCK_DIG) {
- @Override
- public void onPacketReceiving(PacketEvent e) {
- PacketContainer packetDig = e.getPacket();
- if(packetDig.getPlayerDigTypes().read(0) == EnumWrappers.PlayerDigType.RELEASE_USE_ITEM) {
- GlobalRecorder.getInstance().bowSpan(e.getPlayer(), false, false);
- }
- }
- };
public static ItemStack disarmNull(ItemStack stack){
if(stack == null)
@@ -118,14 +92,14 @@ public class Recording implements Listener {
new StateDependent(ArenaMode.AntiReplay, FightState.Ingame) {
@Override
public void enable() {
- ProtocolLibrary.getProtocolManager().addPacketListener(BOW_PACKET_PROCESSOR);
- ProtocolLibrary.getProtocolManager().addPacketListener(BOW_PACKET_DEDRAW_PROCESSOR);
+ ProtocolAPI.setIncomingHandler(blockPlacePacket, Recording.this::blockPlace);
+ ProtocolAPI.setIncomingHandler(blockDigPacket, Recording.this::blockDig);
}
@Override
public void disable() {
- ProtocolLibrary.getProtocolManager().removePacketListener(BOW_PACKET_PROCESSOR);
- ProtocolLibrary.getProtocolManager().removePacketListener(BOW_PACKET_DEDRAW_PROCESSOR);
+ ProtocolAPI.removeIncomingHandler(blockPlacePacket);
+ ProtocolAPI.removeIncomingHandler(blockDigPacket);
}
}.register();
new StateDependentTask(ArenaMode.AntiReplay, FightState.All, () -> {
@@ -141,6 +115,24 @@ public class Recording implements Listener {
}, 1, 1);
}
+ private static final Class> blockDigPacket = Reflection.getClass("{nms}.PacketPlayInBlockDig");
+ private static final Class> playerDigType = blockDigPacket.getDeclaredClasses()[0];
+ private static final Reflection.FieldAccessor> blockDigType = Reflection.getField(blockDigPacket, playerDigType, 0);
+ private static final Object releaseUseItem = playerDigType.getEnumConstants()[5];
+ private Object blockDig(Player p, Object packet) {
+ if(blockDigType.get(packet) == releaseUseItem)
+ GlobalRecorder.getInstance().bowSpan(p, false, false);
+ return packet;
+ }
+
+ public static final Class> blockPlacePacket = Reflection.getClass("{nms}.PacketPlayInBlockPlace");
+ private Object blockPlace(Player p, Object packet) {
+ boolean mainHand = BountifulWrapper.impl.mainHand(packet);
+ if(BountifulWrapper.impl.bowInHand(mainHand, p))
+ GlobalRecorder.getInstance().bowSpan(p, true, !mainHand);
+ return packet;
+ }
+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerMove(PlayerMoveEvent e){
if(isNotSent(e.getPlayer()))
@@ -223,7 +215,7 @@ public class Recording implements Listener {
Location loc = e.getLocation();
GlobalRecorder.getInstance().entityDespawns(e.getEntity());
GlobalRecorder.getInstance().particle(loc.getX(), loc.getY(), loc.getZ(), "EXPLOSION_HUGE");
- GlobalRecorder.getInstance().sound(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), SWSound.ENTITY_GENERIC_EXPLODE, EnumWrappers.SoundCategory.BLOCKS.name(), 4.0F, (1.0F + (random.nextFloat() - random.nextFloat()) * 0.2F) * 0.7F);
+ GlobalRecorder.getInstance().sound(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), SWSound.ENTITY_GENERIC_EXPLODE, "BLOCKS", 4.0F, (1.0F + (random.nextFloat() - random.nextFloat()) * 0.2F) * 0.7F);
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/BountifulWrapper.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/BountifulWrapper.java
index 261c83f..20ef25c 100644
--- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/BountifulWrapper.java
+++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/BountifulWrapper.java
@@ -19,7 +19,6 @@
package de.steamwar.fightsystem.utils;
-import com.comphenix.protocol.wrappers.EnumWrappers;
import de.steamwar.fightsystem.VersionDependent;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.World;
@@ -33,7 +32,8 @@ public class BountifulWrapper {
public static final IBountifulWrapper impl = VersionDependent.getVersionImpl(BountifulWrapper.class.getName());
public interface IBountifulWrapper {
- boolean bowInHand(EnumWrappers.Hand hand, Player p);
+ boolean mainHand(Object packet);
+ boolean bowInHand(boolean mainHand, Player p);
void toActionbar(Player player, BaseComponent... components);
void toChat(Player player, BaseComponent... components);
diff --git a/pom.xml b/pom.xml
index da93e94..99c8b1b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,13 +68,6 @@
system
${main.basedir}/lib/SpigotCore.jar
-
- steamwar
- ProtocolLib
- 1.0
- system
- ${main.basedir}/lib/ProtocolLib.jar
-