diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java index c2ea14db..e184766f 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java @@ -418,6 +418,14 @@ public final class PacketFilterManager implements ProtocolManager { throw new IllegalArgumentException("Player has no injected handler."); } + /** + * Retrieves the current plugin class loader. + * @return Class loader. + */ + public ClassLoader getClassLoader() { + return classLoader; + } + @Override public boolean isClosed() { return hasClosed; diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PlayerInjector.java b/ProtocolLib/src/com/comphenix/protocol/injector/PlayerInjector.java index 720bd7be..2982dda5 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PlayerInjector.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PlayerInjector.java @@ -218,19 +218,21 @@ class PlayerInjector { @Override public boolean add(Packet packet) { + Packet result = null; + // Check for fake packets and ignored packets if (packet instanceof FakePacket) { return true; } else if (ignoredPackets.contains(packet)) { ignoredPackets.remove(packet); } else { - packet = handlePacketRecieved(packet); + result = handlePacketRecieved(packet); } // A NULL packet indicate cancelling try { - if (packet != null) { - super.add(packet); + if (result != null) { + super.add(result); } else { // We'll use the FakePacket marker instead of preventing the filters sendServerPacket(createNegativePacket(packet), true); @@ -280,7 +282,7 @@ class PlayerInjector { // } ex.setInterfaces(new Class[] { FakePacket.class } ); ex.setUseCache(true); - ex.setClassLoader(type.getClassLoader()); + ex.setClassLoader(manager.getClassLoader()); ex.setSuperclass(type); ex.setCallback(new MethodInterceptor() { @Override