From 3f12413c6b5cbf6569cc8f292ae7e5c86da9fc70 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 19 May 2024 17:05:31 +0200 Subject: [PATCH] De-duplicate recording channel configuration --- .../handler/ConnectionEventHandler.java | 2 ++ .../recording/packet/PacketListener.java | 18 +----------------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java b/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java index 5318013f..2635860b 100644 --- a/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java +++ b/src/main/java/com/replaymod/recording/handler/ConnectionEventHandler.java @@ -159,9 +159,11 @@ public class ConnectionEventHandler { if (channel.pipeline().get(PacketListener.DECODER_KEY) != null) { // Regular channel, we'll inject our recorder directly before the decoder channel.pipeline().addBefore(PacketListener.DECODER_KEY, PacketListener.RAW_RECORDER_KEY, packetListener); + channel.pipeline().addAfter(PacketListener.DECODER_KEY, PacketListener.DECODED_RECORDER_KEY, packetListener.new DecodedPacketListener()); } else { // Integrated server passes packets directly, there's no splitting, decompression or decoding channel.pipeline().addFirst(PacketListener.RAW_RECORDER_KEY, packetListener); + channel.pipeline().addAfter(PacketListener.RAW_RECORDER_KEY, PacketListener.DECODED_RECORDER_KEY, packetListener.new DecodedPacketListener()); } recordingEventHandler = new RecordingEventHandler(packetListener); diff --git a/src/main/java/com/replaymod/recording/packet/PacketListener.java b/src/main/java/com/replaymod/recording/packet/PacketListener.java index c04f44bc..07027547 100644 --- a/src/main/java/com/replaymod/recording/packet/PacketListener.java +++ b/src/main/java/com/replaymod/recording/packet/PacketListener.java @@ -218,22 +218,6 @@ public class PacketListener extends ChannelInboundHandlerAdapter { } } - @Override - public void handlerAdded(ChannelHandlerContext ctx) throws Exception { - super.handlerAdded(ctx); - - if (ctx.pipeline().get(DECODED_RECORDER_KEY) == null) { - if (ctx.pipeline().get(PacketListener.DECODER_KEY) != null) { - // Regular channel, we'll inject our decoded recorder directly after the decoder - ctx.pipeline().addAfter(DECODER_KEY, DECODED_RECORDER_KEY, new DecodedPacketListener()); - } else { - // Integrated server passes packets directly, there's no splitting, decompression or decoding - // The decoded packet handler can just go directly behind this hand - ctx.pipeline().addAfter(RAW_RECORDER_KEY, DECODED_RECORDER_KEY, new DecodedPacketListener()); - } - } - } - @Override public void channelInactive(ChannelHandlerContext ctx) { metaData.setDuration((int) lastSentPacket); @@ -450,7 +434,7 @@ public class PacketListener extends ChannelInboundHandlerAdapter { return resourcePackRecorder; } - private class DecodedPacketListener extends ChannelInboundHandlerAdapter { + public class DecodedPacketListener extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {