From c7469b213f5ae98bede6db0cac9e4ca120eb9083 Mon Sep 17 00:00:00 2001
From: Joseph Burton <burtonjae@hotmail.co.uk>
Date: Mon, 23 Sep 2024 18:47:02 +0100
Subject: [PATCH] Add access to ClientConfigurationNetworkHandler in context
 (#4097)

---
 .../client/networking/v1/ClientConfigurationNetworking.java | 6 ++++++
 .../networking/client/ClientConfigurationNetworkAddon.java  | 5 +++--
 .../fabric/test/networking/unit/CommonPacketTests.java      | 5 +++++
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/api/client/networking/v1/ClientConfigurationNetworking.java b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/api/client/networking/v1/ClientConfigurationNetworking.java
index 4bf48a994..ac8b0cb66 100644
--- a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/api/client/networking/v1/ClientConfigurationNetworking.java
+++ b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/api/client/networking/v1/ClientConfigurationNetworking.java
@@ -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
 		 */
diff --git a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/impl/networking/client/ClientConfigurationNetworkAddon.java b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/impl/networking/client/ClientConfigurationNetworkAddon.java
index d391223bb..17cbcab37 100644
--- a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/impl/networking/client/ClientConfigurationNetworkAddon.java
+++ b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/impl/networking/client/ClientConfigurationNetworkAddon.java
@@ -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");
 		}
 	}
diff --git a/fabric-networking-api-v1/src/test/java/net/fabricmc/fabric/test/networking/unit/CommonPacketTests.java b/fabric-networking-api-v1/src/test/java/net/fabricmc/fabric/test/networking/unit/CommonPacketTests.java
index 1674ef82c..a74d02e3f 100644
--- a/fabric-networking-api-v1/src/test/java/net/fabricmc/fabric/test/networking/unit/CommonPacketTests.java
+++ b/fabric-networking-api-v1/src/test/java/net/fabricmc/fabric/test/networking/unit/CommonPacketTests.java
@@ -138,6 +138,11 @@ public class CommonPacketTests {
 				return null;
 			}
 
+			@Override
+			public ClientConfigurationNetworkHandler networkHandler() {
+				return clientNetworkHandler;
+			}
+
 			@Override
 			public PacketSender responseSender() {
 				return packetSender;