diff --git a/pom.xml b/pom.xml index bacd9a4945..70bbb84d8f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.retrooper packetevents - 1.7.4 + 1.7.5 diff --git a/src/main/java/io/github/retrooper/packetevents/PacketEvents.java b/src/main/java/io/github/retrooper/packetevents/PacketEvents.java index a79d8f9b05..bb56fd6ab8 100644 --- a/src/main/java/io/github/retrooper/packetevents/PacketEvents.java +++ b/src/main/java/io/github/retrooper/packetevents/PacketEvents.java @@ -57,7 +57,7 @@ public final class PacketEvents implements Listener { private static final PacketEvents instance = new PacketEvents(); private static final ArrayList plugins = new ArrayList<>(1); private static boolean loaded, initialized; - private static final PEVersion version = new PEVersion(1, 7, 4); + private static final PEVersion version = new PEVersion(1, 7, 5); private static PacketEventsSettings settings = new PacketEventsSettings(); /** General executor service, basically for anything that the packet executor service doesn't do. diff --git a/src/main/java/io/github/retrooper/packetevents/packetwrappers/WrappedPacket.java b/src/main/java/io/github/retrooper/packetevents/packetwrappers/WrappedPacket.java index 3523278954..75e246b32c 100644 --- a/src/main/java/io/github/retrooper/packetevents/packetwrappers/WrappedPacket.java +++ b/src/main/java/io/github/retrooper/packetevents/packetwrappers/WrappedPacket.java @@ -491,7 +491,8 @@ public Object readAnyObject(int index) { public Object readObject(int index, Class type) { Map, Field[]> cached = fieldCache.get(packetClass); if (cached != null) { - if (!cached.containsKey(type)) { + Field[] cachedFields = cached.get(type); + if (cachedFields == null) { List typeFields = new ArrayList<>(); for (Field f : packetClass.getDeclaredFields()) { f.setAccessible(true); @@ -501,10 +502,14 @@ public Object readObject(int index, Class type) { } if (!typeFields.isEmpty()) { cached.put(type, typeFields.toArray(new Field[0])); + cachedFields = cached.get(type); + } + else { + throw new WrapperFieldNotFoundException("The class you are trying to read fields from does not contain any fields!"); } } try { - return cached.get(type)[index].get(packet); + return cachedFields[index].get(packet); } catch (IllegalAccessException e) { e.printStackTrace(); } @@ -601,12 +606,9 @@ private Field getField(Class type, int index) { } private List getFields(Class type, Field[] fields) { - List ret = null; + List ret = new ArrayList<>(); for (Field field : fields) { if (field.getType() == type) { - if (ret == null) { - ret = new ArrayList<>(); - } ret.add(field); } } diff --git a/src/main/java/io/github/retrooper/packetevents/packetwrappers/in/blockplace/WrappedPacketInBlockPlace.java b/src/main/java/io/github/retrooper/packetevents/packetwrappers/in/blockplace/WrappedPacketInBlockPlace.java index 55c928d6ec..65edf8b246 100644 --- a/src/main/java/io/github/retrooper/packetevents/packetwrappers/in/blockplace/WrappedPacketInBlockPlace.java +++ b/src/main/java/io/github/retrooper/packetevents/packetwrappers/in/blockplace/WrappedPacketInBlockPlace.java @@ -27,8 +27,6 @@ import io.github.retrooper.packetevents.enums.Direction; import io.github.retrooper.packetevents.packetwrappers.WrappedPacket; import io.github.retrooper.packetevents.utils.server.ServerVersion; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; public final class WrappedPacketInBlockPlace extends WrappedPacket { @@ -41,21 +39,17 @@ public WrappedPacketInBlockPlace(final Object packet) { public static void load() { isHigherThan_v_1_8_8 = version.isHigherThan(ServerVersion.v_1_8_8); isHigherThan_v_1_7_10 = version.isHigherThan(ServerVersion.v_1_7_10); - if (isHigherThan_v_1_8_8) { - WrappedPacketInBlockPlace_1_9.load(); - } + WrappedPacketInBlockPlace_1_9.load(); } public Direction getDirection() { - if(isHigherThan_v_1_8_8) { + if (isHigherThan_v_1_8_8) { WrappedPacketInBlockPlace_1_9 blockPlace_1_9 = new WrappedPacketInBlockPlace_1_9(packet); - return Direction.valueOf(((Enum)blockPlace_1_9.getEnumDirectionObject()).name()); - } - else if(isHigherThan_v_1_7_10) { + return Direction.valueOf(((Enum) blockPlace_1_9.getEnumDirectionObject()).name()); + } else if (isHigherThan_v_1_7_10) { WrappedPacketInBlockPlace_1_8 blockPlace_1_8 = new WrappedPacketInBlockPlace_1_8(packet); return Direction.values()[blockPlace_1_8.getFace()]; - } - else { + } else { WrappedPacketInBlockPlace_1_7_10 blockPlace_1_7_10 = new WrappedPacketInBlockPlace_1_7_10(packet); return Direction.values()[blockPlace_1_7_10.face]; } diff --git a/src/main/java/io/github/retrooper/packetevents/packetwrappers/in/blockplace/WrappedPacketInBlockPlace_1_8.java b/src/main/java/io/github/retrooper/packetevents/packetwrappers/in/blockplace/WrappedPacketInBlockPlace_1_8.java index 2156ee3601..bc88d6d071 100644 --- a/src/main/java/io/github/retrooper/packetevents/packetwrappers/in/blockplace/WrappedPacketInBlockPlace_1_8.java +++ b/src/main/java/io/github/retrooper/packetevents/packetwrappers/in/blockplace/WrappedPacketInBlockPlace_1_8.java @@ -40,7 +40,7 @@ final class WrappedPacketInBlockPlace_1_8 extends WrappedPacket { public int getX() { if(blockPosObj == null) { - blockPosObj = readObject(0, NMSUtils.blockPosClass); + blockPosObj = readObject(1, NMSUtils.blockPosClass); } try { return (int) Reflection.getMethod(blockPosObj.getClass().getSuperclass(), "getX", 0).invoke(blockPosObj); @@ -49,10 +49,11 @@ public int getX() { } return -1; } + public int getY() { if(blockPosObj == null) { - blockPosObj = readObject(0, NMSUtils.blockPosClass); + blockPosObj = readObject(1, NMSUtils.blockPosClass); } try { return (int) Reflection.getMethod(blockPosObj.getClass().getSuperclass(), "getY", 0).invoke(blockPosObj); @@ -64,7 +65,7 @@ public int getY() { public int getZ() { if(blockPosObj == null) { - blockPosObj = readObject(0, NMSUtils.blockPosClass); + blockPosObj = readObject(1, NMSUtils.blockPosClass); } try { return (int) Reflection.getMethod(blockPosObj.getClass().getSuperclass(), "getZ", 0).invoke(blockPosObj);