diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/compat/netty/independent/NettyProtocolInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/compat/netty/independent/NettyProtocolInjector.java index 54972c7a..726db9c4 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/compat/netty/independent/NettyProtocolInjector.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/compat/netty/independent/NettyProtocolInjector.java @@ -269,18 +269,42 @@ public class NettyProtocolInjector implements ProtocolInjector { } } - @Override - public PacketEvent onPacketSending(Injector injector, Object packet, NetworkMarker marker) { + @Override + public PacketEvent onPacketSending(Injector injector, Object packet, NetworkMarker marker) { Class clazz = packet.getClass(); - + if (sendingFilters.contains(clazz) || marker != null) { - PacketContainer container = new PacketContainer(PacketRegistry.getPacketType(clazz), packet); - return packetQueued(container, injector.getPlayer(), marker); + try { + PacketContainer container = new PacketContainer(PacketRegistry.getPacketType(clazz), packet); + return packetQueued(container, injector.getPlayer(), marker); + } catch (LinkageError er) { + // Issue #109 + if (isDebug()) { + try { + System.out.println("Encountered a LinkageError in onPacketSending"); + System.out.println("injector=" + injector); + System.out.println("packet=" + packet); + System.out.println("marker=" + marker); + + Thread curr = Thread.currentThread(); + System.out.println("current thread=" + curr.getName()); + System.out.println("class loader=" + curr.getContextClassLoader()); + + Class container = PacketContainer.class; + System.out.println("packet container=" + container); + System.out.println("class loader=" + container.getClassLoader()); + } catch (LinkageError e1) { + e1.printStackTrace(); + } + } + + er.printStackTrace(); + } } // Don't change anything return null; - } + } @Override public PacketEvent onPacketReceiving(Injector injector, Object packet, NetworkMarker marker) {