From 5e0000d1395d20bd88216afabd328c8ddf4b84e5 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Sat, 15 Mar 2014 19:25:40 +0100 Subject: [PATCH] Properly cancel or modify packets intercepted in the channel thread. This fixes ticket #204 on BukkitDev. --- .../comphenix/protocol/injector/netty/ChannelInjector.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/netty/ChannelInjector.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/netty/ChannelInjector.java index f75ced2f..e7f74fc3 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/netty/ChannelInjector.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/netty/ChannelInjector.java @@ -43,6 +43,7 @@ import com.comphenix.protocol.utility.MinecraftMethods; import com.comphenix.protocol.utility.MinecraftReflection; import com.google.common.base.Preconditions; import com.google.common.collect.MapMaker; +import com.google.common.primitives.Bytes; /** * Represents a channel injector. @@ -311,6 +312,11 @@ class ChannelInjector extends ByteToMessageDecoder implements Injector { } else { event = processSending(packet, marker); + + // Handle the output + if (event != null) { + packet = !event.isCancelled() ? event.getPacket().getHandle() : null; + } } } if (event != null) { @@ -327,6 +333,7 @@ class ChannelInjector extends ByteToMessageDecoder implements Injector { for (PacketOutputHandler handler : marker.getOutputHandlers()) { handler.handle(event, data); } + // Write the result output.writeBytes(data); return;