From 7ed1b5d2457eec9f0f3b2a07dff5588c6c4e39d9 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Fri, 3 Dec 2021 21:27:49 +0800 Subject: [PATCH] Fix bungee compatibility --- .../handshake/CHandshakePacketMixin.java | 16 ++++++++++++++++ arclight-common/src/main/resources/pack.mcmeta | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/protocol/handshake/CHandshakePacketMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/protocol/handshake/CHandshakePacketMixin.java index 688c8b2f..8b7be964 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/protocol/handshake/CHandshakePacketMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/protocol/handshake/CHandshakePacketMixin.java @@ -8,8 +8,11 @@ import net.minecraftforge.network.NetworkConstants; import net.minecraftforge.network.NetworkHooks; import org.spigotmc.SpigotConfig; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Objects; @@ -19,6 +22,8 @@ public class CHandshakePacketMixin { private static final String EXTRA_DATA = "extraData"; private static final Gson GSON = new Gson(); + @Shadow public String hostName; + @Redirect(method = "(Lnet/minecraft/network/FriendlyByteBuf;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/FriendlyByteBuf;readUtf(I)Ljava/lang/String;")) private String arclight$bungeeHostname(FriendlyByteBuf packetBuffer, int maxLength) { return packetBuffer.readUtf(Short.MAX_VALUE); @@ -34,6 +39,7 @@ public class CHandshakePacketMixin { for (Property property : properties) { if (Objects.equals(property.getName(), EXTRA_DATA)) { String extraData = property.getValue().replace("\1", "\0"); + this.arclight$host = ip; return NetworkHooks.getFMLVersion(split[0] + extraData); } } @@ -41,4 +47,14 @@ public class CHandshakePacketMixin { } return fmlVersion; } + + private transient String arclight$host; + + @Inject(method = "(Lnet/minecraft/network/FriendlyByteBuf;)V", at = @At("RETURN")) + private void arclight$writeBack(FriendlyByteBuf p_179801_, CallbackInfo ci) { + if (arclight$host != null) { + this.hostName = arclight$host; + arclight$host = null; + } + } } diff --git a/arclight-common/src/main/resources/pack.mcmeta b/arclight-common/src/main/resources/pack.mcmeta index 95971644..4db7c819 100644 --- a/arclight-common/src/main/resources/pack.mcmeta +++ b/arclight-common/src/main/resources/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { "description": "Arclight resources", - "pack_format": 7 + "pack_format": 8 } }