From 4c0ac7e900fb3f2115574b8d433e66367d9faf96 Mon Sep 17 00:00:00 2001 From: Joe van der Zwet Date: Thu, 20 Aug 2020 19:40:20 +1200 Subject: [PATCH] feat: Update to 1.16.2 --- build.gradle | 13 +++++----- gradle.properties | 18 +++++++------- .../fabricforwarding/config/ConfigImpl.java | 8 +++++-- .../mixin/HandshakeC2SPacketAccessor.java | 17 ------------- .../mixin/HandshakeC2SPacketMixin.java | 6 ++--- .../LoginQueryResponseC2SPacketAccessor.java | 24 ------------------- .../mixin/MinecraftServerAccessor.java | 14 ----------- .../ServerHandshakeNetworkHandlerMixin.java | 4 ++-- .../mixin/ServerLoginNetworkHandlerMixin.java | 7 +++--- .../fabricforwarding/proxy/Velocity.java | 2 +- src/main/resources/fabric.mod.json | 1 + .../resources/fabricforwarding.accesswidener | 6 +++++ .../resources/fabricforwarding.mixins.json | 5 +--- 13 files changed, 38 insertions(+), 87 deletions(-) delete mode 100644 src/main/java/me/joezwet/fabricforwarding/mixin/HandshakeC2SPacketAccessor.java delete mode 100644 src/main/java/me/joezwet/fabricforwarding/mixin/LoginQueryResponseC2SPacketAccessor.java delete mode 100644 src/main/java/me/joezwet/fabricforwarding/mixin/MinecraftServerAccessor.java create mode 100644 src/main/resources/fabricforwarding.accesswidener diff --git a/build.gradle b/build.gradle index a97511b..5a336a0 100644 --- a/build.gradle +++ b/build.gradle @@ -6,18 +6,19 @@ plugins { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 -archivesBaseName = project.archives_base_name -version = project.mod_version -group = project.maven_group +archivesBaseName = project.name +version = "${project.mod}+${project.minecraft}" +group = project.group minecraft { refmapName = "fabricforwarding.refmap.json" + accessWidener "src/main/resources/fabricforwarding.accesswidener" } dependencies { - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + minecraft "com.mojang:minecraft:${project.minecraft}" + mappings "net.fabricmc:yarn:${project.minecraft}+build.${project.yarn}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader}" } processResources { diff --git a/gradle.properties b/gradle.properties index 5a3ba50..28264e8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,14 +1,12 @@ # Done to increase the memory available to gradle. org.gradle.jvmargs=-Xmx3G + # Fabric Properties -# check these on https://fabricmc.net/use -minecraft_version=1.15.2 -yarn_mappings=1.15.2+build.14 -loader_version=0.7.8+build.187 +minecraft=1.16.2 +yarn=21 +loader=0.9.2+build.206 + # Mod Properties -mod_version=1.1.0+fabric.1.15.2 -maven_group=me.joezwet -archives_base_name=FabricForwarding -# Dependencies -# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.5.1+build.294-1.15 +mod=2.0.0 +group=me.joezwet +name=FabricForwarding \ No newline at end of file diff --git a/src/main/java/me/joezwet/fabricforwarding/config/ConfigImpl.java b/src/main/java/me/joezwet/fabricforwarding/config/ConfigImpl.java index 863dee3..ef55fc6 100644 --- a/src/main/java/me/joezwet/fabricforwarding/config/ConfigImpl.java +++ b/src/main/java/me/joezwet/fabricforwarding/config/ConfigImpl.java @@ -10,12 +10,16 @@ @Environment(EnvType.SERVER) public class ConfigImpl implements Config { - @Expose private ForwardingMode mode = ForwardingMode.OFF; + @Expose private String mode = ""; @Expose private String secret = ""; @Override public ForwardingMode getMode() { - return this.mode; + try { + return ForwardingMode.valueOf(this.mode.toUpperCase()); + } catch (IllegalArgumentException e) { + return ForwardingMode.OFF; + } } @Override diff --git a/src/main/java/me/joezwet/fabricforwarding/mixin/HandshakeC2SPacketAccessor.java b/src/main/java/me/joezwet/fabricforwarding/mixin/HandshakeC2SPacketAccessor.java deleted file mode 100644 index 04f8f26..0000000 --- a/src/main/java/me/joezwet/fabricforwarding/mixin/HandshakeC2SPacketAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.joezwet.fabricforwarding.mixin; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Environment(EnvType.SERVER) -@Mixin(HandshakeC2SPacket.class) -public interface HandshakeC2SPacketAccessor { - @Accessor - String getAddress(); - - @Accessor - void setAddress(String address); -} diff --git a/src/main/java/me/joezwet/fabricforwarding/mixin/HandshakeC2SPacketMixin.java b/src/main/java/me/joezwet/fabricforwarding/mixin/HandshakeC2SPacketMixin.java index 64539f8..5bf8e90 100644 --- a/src/main/java/me/joezwet/fabricforwarding/mixin/HandshakeC2SPacketMixin.java +++ b/src/main/java/me/joezwet/fabricforwarding/mixin/HandshakeC2SPacketMixin.java @@ -7,7 +7,7 @@ import net.minecraft.network.Packet; import net.minecraft.network.listener.ServerHandshakePacketListener; import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -17,8 +17,8 @@ public abstract class HandshakeC2SPacketMixin implements Packet { @Redirect( - method = "read(Lnet/minecraft/util/PacketByteBuf;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/util/PacketByteBuf;readString(I)Ljava/lang/String;") + method = "read(Lnet/minecraft/network/PacketByteBuf;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketByteBuf;readString(I)Ljava/lang/String;") ) public String read(final PacketByteBuf buf, final int value) { diff --git a/src/main/java/me/joezwet/fabricforwarding/mixin/LoginQueryResponseC2SPacketAccessor.java b/src/main/java/me/joezwet/fabricforwarding/mixin/LoginQueryResponseC2SPacketAccessor.java deleted file mode 100644 index 8873df3..0000000 --- a/src/main/java/me/joezwet/fabricforwarding/mixin/LoginQueryResponseC2SPacketAccessor.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.joezwet.fabricforwarding.mixin; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.network.packet.c2s.login.LoginQueryResponseC2SPacket; -import net.minecraft.util.PacketByteBuf; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Environment(EnvType.SERVER) -@Mixin(LoginQueryResponseC2SPacket.class) -public interface LoginQueryResponseC2SPacketAccessor { - @Accessor - int getQueryId(); - - @Accessor - void setQueryId(int queryId); - - @Accessor - PacketByteBuf getResponse(); - - @Accessor - void setResponse(PacketByteBuf response); -} diff --git a/src/main/java/me/joezwet/fabricforwarding/mixin/MinecraftServerAccessor.java b/src/main/java/me/joezwet/fabricforwarding/mixin/MinecraftServerAccessor.java deleted file mode 100644 index 4904703..0000000 --- a/src/main/java/me/joezwet/fabricforwarding/mixin/MinecraftServerAccessor.java +++ /dev/null @@ -1,14 +0,0 @@ -package me.joezwet.fabricforwarding.mixin; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.server.MinecraftServer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Environment(EnvType.SERVER) -@Mixin({MinecraftServer.class}) -public interface MinecraftServerAccessor { - @Accessor - boolean isOnlineMode(); -} diff --git a/src/main/java/me/joezwet/fabricforwarding/mixin/ServerHandshakeNetworkHandlerMixin.java b/src/main/java/me/joezwet/fabricforwarding/mixin/ServerHandshakeNetworkHandlerMixin.java index eaa9e0f..d387a3a 100644 --- a/src/main/java/me/joezwet/fabricforwarding/mixin/ServerHandshakeNetworkHandlerMixin.java +++ b/src/main/java/me/joezwet/fabricforwarding/mixin/ServerHandshakeNetworkHandlerMixin.java @@ -35,10 +35,10 @@ public class ServerHandshakeNetworkHandlerMixin { @Inject(method = "onHandshake", at = @At("HEAD")) private void onHandshake(HandshakeC2SPacket packet, CallbackInfo info) { if((Config.getInstance().getMode().equals(ForwardingMode.LEGACY) || Config.getInstance().getMode().equals(ForwardingMode.MODERN)) && packet.getIntendedState().equals(NetworkState.LOGIN)) { - String[] addressSplit = ((HandshakeC2SPacketAccessor)packet).getAddress().split("\00\\|", 2)[0].split("\00"); + String[] addressSplit = packet.address.split("\00\\|", 2)[0].split("\00"); if(addressSplit.length == 3 || addressSplit.length == 4) { - ((HandshakeC2SPacketAccessor)packet).setAddress(addressSplit[0]); + packet.address = addressSplit[0]; ((ClientConnectionBridge)this.connection).setAddress(new InetSocketAddress(addressSplit[1], ((InetSocketAddress)this.connection.getAddress()).getPort())); ((ClientConnectionBridge)this.connection).setSpoofedUUID(UUIDTypeAdapter.fromString(addressSplit[2])); diff --git a/src/main/java/me/joezwet/fabricforwarding/mixin/ServerLoginNetworkHandlerMixin.java b/src/main/java/me/joezwet/fabricforwarding/mixin/ServerLoginNetworkHandlerMixin.java index c803b8a..5d4a707 100644 --- a/src/main/java/me/joezwet/fabricforwarding/mixin/ServerLoginNetworkHandlerMixin.java +++ b/src/main/java/me/joezwet/fabricforwarding/mixin/ServerLoginNetworkHandlerMixin.java @@ -18,7 +18,7 @@ import net.minecraft.server.network.ServerLoginNetworkHandler; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -103,9 +103,8 @@ private void onHelloVelocity(LoginHelloC2SPacket packet, CallbackInfo info) { @Inject(method = "onQueryResponse", at = @At("HEAD"), cancellable = true) private void onQueryResponse(LoginQueryResponseC2SPacket packet, CallbackInfo info) { - if(Config.getInstance().getMode().equals(ForwardingMode.MODERN) && - ((LoginQueryResponseC2SPacketAccessor)packet).getQueryId() == this.velocityLoginMsgId) { - PacketByteBuf buf = ((LoginQueryResponseC2SPacketAccessor)packet).getResponse(); + if(Config.getInstance().getMode().equals(ForwardingMode.MODERN) && packet.queryId == this.velocityLoginMsgId) { + PacketByteBuf buf = packet.response; if(buf == null) { this.disconnect(new LiteralText("This server requires you to join via a proxy.")); info.cancel(); diff --git a/src/main/java/me/joezwet/fabricforwarding/proxy/Velocity.java b/src/main/java/me/joezwet/fabricforwarding/proxy/Velocity.java index 40a01a4..ab740eb 100644 --- a/src/main/java/me/joezwet/fabricforwarding/proxy/Velocity.java +++ b/src/main/java/me/joezwet/fabricforwarding/proxy/Velocity.java @@ -7,7 +7,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.util.Identifier; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index d02a9db..4ff6da7 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -11,6 +11,7 @@ "mixins": [ "fabricforwarding.mixins.json" ], + "accessWidener": "fabricforwarding.accesswidener", "depends": { "fabricloader": ">=0.7.8+build.187", "minecraft": "1.15.2" diff --git a/src/main/resources/fabricforwarding.accesswidener b/src/main/resources/fabricforwarding.accesswidener new file mode 100644 index 0000000..47d26b3 --- /dev/null +++ b/src/main/resources/fabricforwarding.accesswidener @@ -0,0 +1,6 @@ +accessWidener v1 named +accessible field net/minecraft/network/packet/c2s/login/LoginQueryResponseC2SPacket response Lnet/minecraft/network/PacketByteBuf; +accessible field net/minecraft/network/packet/c2s/login/LoginQueryResponseC2SPacket queryId I +accessible field net/minecraft/server/MinecraftServer onlineMode J +accessible field net/minecraft/network/packet/c2s/handshake/HandshakeC2SPacket address Ljava/lang/String; +mutable field net/minecraft/network/packet/c2s/handshake/HandshakeC2SPacket address Ljava/lang/String; \ No newline at end of file diff --git a/src/main/resources/fabricforwarding.mixins.json b/src/main/resources/fabricforwarding.mixins.json index 495a6af..db49f72 100644 --- a/src/main/resources/fabricforwarding.mixins.json +++ b/src/main/resources/fabricforwarding.mixins.json @@ -4,13 +4,10 @@ "compatibilityLevel": "JAVA_8", "server": [ "ClientConnectionMixin", - "HandshakeC2SPacketAccessor", "HandshakeC2SPacketMixin", - "MinecraftServerAccessor", "MinecraftServerMixin", "ServerHandshakeNetworkHandlerMixin", - "ServerLoginNetworkHandlerMixin", - "LoginQueryResponseC2SPacketAccessor" + "ServerLoginNetworkHandlerMixin" ], "injectors": { "defaultRequire": 1