From 9e2e1e1969424b9a25f37ba686ccf2f3474eb8ee Mon Sep 17 00:00:00 2001 From: Bafy78 <30290088+Bafy78@users.noreply.github.com> Date: Mon, 21 Sep 2026 20:33:56 +0200 Subject: [PATCH] Fix #19: discard clientbound packets sent to dummies DummyClientConnection has no channel, so vanilla's send, flushChannel and runOnceConnected queued everything in pendingActions forever; a dummy has no client, drop it instead. Co-Authored-By: Claude Fable 5.1 --- .../packtest/dummy/DummyClientConnection.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/io/github/misode/packtest/dummy/DummyClientConnection.java b/src/main/java/io/github/misode/packtest/dummy/DummyClientConnection.java index 49bbe20..afddae3 100644 --- a/src/main/java/io/github/misode/packtest/dummy/DummyClientConnection.java +++ b/src/main/java/io/github/misode/packtest/dummy/DummyClientConnection.java @@ -1,17 +1,36 @@ package io.github.misode.packtest.dummy; +import io.netty.channel.ChannelFutureListener; import net.minecraft.network.Connection; import net.minecraft.network.PacketListener; import net.minecraft.network.ProtocolInfo; +import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.PacketFlow; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.util.function.Consumer; + +/** + * A connection without a channel. Vanilla queues everything sent to a disconnected + * connection until it comes up, which never happens for a dummy, so outbound traffic is + * discarded instead of being retained forever. + */ public class DummyClientConnection extends Connection { public DummyClientConnection(PacketFlow flow) { super(flow); } + @Override + public void send(@NotNull Packet packet, @Nullable ChannelFutureListener listener, boolean flush) {} + + @Override + public void runOnceConnected(@NotNull Consumer action) {} + + @Override + public void flushChannel() {} + @Override public void setReadOnly() {}