Add access to ClientConfigurationNetworkHandler in context (#4097)

(cherry picked from commit c7469b213f)
This commit is contained in:
Joseph Burton 2024-09-23 18:47:02 +01:00 committed by modmuss50
parent 6de299b157
commit d3cf6d4e02
3 changed files with 14 additions and 2 deletions

View file

@ -23,6 +23,7 @@ import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientConfigurationNetworkHandler;
import net.minecraft.network.packet.CustomPayload;
import net.minecraft.util.Identifier;
import net.minecraft.util.thread.ThreadExecutor;
@ -280,6 +281,11 @@ public final class ClientConfigurationNetworking {
*/
MinecraftClient client();
/**
* @return The ClientConfigurationNetworkHandler instance
*/
ClientConfigurationNetworkHandler networkHandler();
/**
* @return The packet sender
*/

View file

@ -44,7 +44,7 @@ public final class ClientConfigurationNetworkAddon extends ClientCommonNetworkAd
public ClientConfigurationNetworkAddon(ClientConfigurationNetworkHandler handler, MinecraftClient client) {
super(ClientNetworkingImpl.CONFIGURATION, ((ClientCommonNetworkHandlerAccessor) handler).getConnection(), "ClientPlayNetworkAddon for " + ((ClientConfigurationNetworkHandlerAccessor) handler).getProfile().getName(), handler, client);
this.context = new ContextImpl(client, this);
this.context = new ContextImpl(client, handler, this);
// Must register pending channels via lateinit
this.registerPendingChannels((ChannelInfoHolder) this.connection, NetworkPhase.CONFIGURATION);
@ -128,9 +128,10 @@ public final class ClientConfigurationNetworkAddon extends ClientCommonNetworkAd
return (ChannelInfoHolder) ((ClientCommonNetworkHandlerAccessor) handler).getConnection();
}
private record ContextImpl(MinecraftClient client, PacketSender responseSender) implements ClientConfigurationNetworking.Context {
private record ContextImpl(MinecraftClient client, ClientConfigurationNetworkHandler networkHandler, PacketSender responseSender) implements ClientConfigurationNetworking.Context {
private ContextImpl {
Objects.requireNonNull(client, "client");
Objects.requireNonNull(networkHandler, "networkHandler");
Objects.requireNonNull(responseSender, "responseSender");
}
}

View file

@ -138,6 +138,11 @@ public class CommonPacketTests {
return null;
}
@Override
public ClientConfigurationNetworkHandler networkHandler() {
return clientNetworkHandler;
}
@Override
public PacketSender responseSender() {
return packetSender;