From bf1eca54837bb3a0feeb5c4ddf6290c65aa0b7fd Mon Sep 17 00:00:00 2001 From: deirn <deirn@bai.lol> Date: Thu, 18 Jan 2024 00:55:42 +0700 Subject: [PATCH] fix login network addon not properly initialized (#3531) --- .../impl/networking/client/ClientLoginNetworkAddon.java | 6 ------ .../networking/client/ClientLoginNetworkHandlerMixin.java | 2 ++ .../impl/networking/server/ServerLoginNetworkAddon.java | 5 ----- .../mixin/networking/ServerLoginNetworkHandlerMixin.java | 2 ++ 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/impl/networking/client/ClientLoginNetworkAddon.java b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/impl/networking/client/ClientLoginNetworkAddon.java index 299179d41..7056428f7 100644 --- a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/impl/networking/client/ClientLoginNetworkAddon.java +++ b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/impl/networking/client/ClientLoginNetworkAddon.java @@ -18,7 +18,6 @@ package net.fabricmc.fabric.impl.networking.client; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.concurrent.CompletableFuture; import io.netty.util.concurrent.Future; @@ -67,11 +66,6 @@ public final class ClientLoginNetworkAddon extends AbstractNetworkAddon<ClientLo this.logger.debug("Handling inbound login response with id {} and channel with name {}", queryId, channelName); if (this.firstResponse) { - // Register global handlers - for (Map.Entry<Identifier, ClientLoginNetworking.LoginQueryRequestHandler> entry : ClientNetworkingImpl.LOGIN.getHandlers().entrySet()) { - ClientLoginNetworking.registerReceiver(entry.getKey(), entry.getValue()); - } - ClientLoginConnectionEvents.QUERY_START.invoker().onLoginQueryStart(this.handler, this.client); this.firstResponse = false; } diff --git a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientLoginNetworkHandlerMixin.java b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientLoginNetworkHandlerMixin.java index 285aee556..c498731eb 100644 --- a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientLoginNetworkHandlerMixin.java +++ b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientLoginNetworkHandlerMixin.java @@ -50,6 +50,8 @@ abstract class ClientLoginNetworkHandlerMixin implements NetworkHandlerExtension @Inject(method = "<init>", at = @At("RETURN")) private void initAddon(CallbackInfo ci) { this.addon = new ClientLoginNetworkAddon((ClientLoginNetworkHandler) (Object) this, this.client); + // A bit of a hack but it allows the field above to be set in case someone registers handlers during INIT event which refers to said field + this.addon.lateInit(); } @Inject(method = "onQueryRequest", at = @At(value = "INVOKE", target = "Ljava/util/function/Consumer;accept(Ljava/lang/Object;)V", remap = false, shift = At.Shift.AFTER), cancellable = true) diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon.java index 2aca466e0..897a7a0a4 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon.java @@ -80,11 +80,6 @@ public final class ServerLoginNetworkAddon extends AbstractNetworkAddon<ServerLo // Send the compression packet now so clients receive compressed login queries this.sendCompressionPacket(); - // Register global receivers. - for (Map.Entry<Identifier, ServerLoginNetworking.LoginQueryResponseHandler> entry : ServerNetworkingImpl.LOGIN.getHandlers().entrySet()) { - ServerLoginNetworking.registerReceiver(this.handler, entry.getKey(), entry.getValue()); - } - ServerLoginConnectionEvents.QUERY_START.invoker().onLoginStart(this.handler, this.server, this, this.waits::add); this.firstQueryTick = false; } diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerLoginNetworkHandlerMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerLoginNetworkHandlerMixin.java index bdd1c696a..505e5a733 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerLoginNetworkHandlerMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerLoginNetworkHandlerMixin.java @@ -50,6 +50,8 @@ abstract class ServerLoginNetworkHandlerMixin implements NetworkHandlerExtension @Inject(method = "<init>", at = @At("RETURN")) private void initAddon(CallbackInfo ci) { this.addon = new ServerLoginNetworkAddon((ServerLoginNetworkHandler) (Object) this); + // A bit of a hack but it allows the field above to be set in case someone registers handlers during INIT event which refers to said field + this.addon.lateInit(); } @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerLoginNetworkHandler;tickVerify(Lcom/mojang/authlib/GameProfile;)V"))