diff --git a/build.gradle b/build.gradle index 3f7fbc3..ac19ee2 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ plugins { id "org.ajoberstar.grgit" version "3.1.1" id "com.matthewprenger.cursegradle" version "1.4.0" id "com.modrinth.minotaur" version "2.2.0" - id "fabric-loom" version "1.0-SNAPSHOT" apply false + id "fabric-loom" version "1.1-SNAPSHOT" apply false id "com.github.ben-manes.versions" version "0.42.0" } @@ -162,7 +162,7 @@ processResources { } List mcReleases = new ArrayList<>( - Arrays.asList("1.19.3", "1.18.2", "1.17.1", "1.16.5", "1.15.2", "1.14.4", "1.8.9")) + Arrays.asList("1.18.2", "1.17.1", "1.16.5", "1.15.2", "1.14.4", "1.8.9")) List javaVersions = IntStream.rangeClosed(8, 18) .mapToObj { n -> (String) "Java $n" } .collect(Collectors.toList()) @@ -220,6 +220,7 @@ modrinth { dependencies { optional.project "P7dR8mSH" // fabric api + optional.project "9CJED7xi" // legacy fabric api } } diff --git a/gradle.properties b/gradle.properties index e13c963..91a2b67 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,12 @@ # suppress inspection "UnusedProperty" for whole file # rip my ram -org.gradle.jvmargs=-Xms32M -Xmx3G -XX:+UseG1GC -XX:+UseStringDeduplication +org.gradle.jvmargs=-Xms32M -Xmx4G -XX:+UseG1GC -XX:+UseStringDeduplication -loader_version=0.14.12 +loader_version=0.14.14 viaver_version=4.6.0-1.19.4-rc2-SNAPSHOT yaml_version=1.33 # example: 1.19.1-rc2 -modrinth_mc_snapshot= +modrinth_mc_snapshot=1.19.4-rc2 # example: 1.19-Snapshot -curseforge_mc_snapshot= +curseforge_mc_snapshot=1.19-Snapshot diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 1328ea4..13052a9 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -13,7 +13,7 @@ }, "depends": { "fabricloader": ">=0.10.0", - "minecraft": ["1.8.x", "1.14.4", "1.15.2", "~1.16.4", "1.17.1", "1.18.2", "~1.19.3"], + "minecraft": ["1.8.x", "1.14.4", "1.15.2", "~1.16.4", "1.17.1", "1.18.2", "~1.19.4-alpha.23.7.a"], "viaversion": ">=4.0.0" }, "environment": "*", diff --git a/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/mixin/gui/client/MixinMultiplayerServerListPingerListener.java b/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/mixin/gui/client/MixinMultiplayerServerListPingerListener.java index 7a8f753..cfa7f05 100644 --- a/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/mixin/gui/client/MixinMultiplayerServerListPingerListener.java +++ b/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/mixin/gui/client/MixinMultiplayerServerListPingerListener.java @@ -4,26 +4,26 @@ import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.handler.FabricDecodeHandler; import com.viaversion.fabric.mc117.mixin.debug.client.MixinClientConnectionAccessor; import net.minecraft.client.network.ServerInfo; -import net.minecraft.network.ClientConnection; import net.minecraft.network.listener.ClientQueryPacketListener; +import net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.client.network.MultiplayerServerListPinger$1") public abstract class MixinMultiplayerServerListPingerListener implements ClientQueryPacketListener { - @Shadow - public abstract ClientConnection getConnection(); + @Accessor + abstract ServerInfo getField_3776(); // Synthetic - @Redirect(method = "onResponse(Lnet/minecraft/network/packet/s2c/query/QueryResponseS2CPacket;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ServerInfo;getIcon()Ljava/lang/String;")) - private String onResponseCaptureServerInfo(ServerInfo serverInfo) { + @Inject(method = "onResponse(Lnet/minecraft/network/packet/s2c/query/QueryResponseS2CPacket;)V", at = @At(value = "HEAD")) + private void onResponseCaptureServerInfo(QueryResponseS2CPacket packet, CallbackInfo ci) { FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getConnection()).getChannel() .pipeline().get(FabricDecodeHandler.class); if (decoder != null) { - ((ViaServerInfo) serverInfo).setViaTranslating(decoder.getInfo().isActive()); - ((ViaServerInfo) serverInfo).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); + ((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); + ((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); } - return serverInfo.getIcon(); } } diff --git a/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/mixin/gui/client/MixinMultiplayerServerListPingerListener.java b/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/mixin/gui/client/MixinMultiplayerServerListPingerListener.java index 499e814..1b21c10 100644 --- a/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/mixin/gui/client/MixinMultiplayerServerListPingerListener.java +++ b/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/mixin/gui/client/MixinMultiplayerServerListPingerListener.java @@ -4,26 +4,26 @@ import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.handler.FabricDecodeHandler; import com.viaversion.fabric.mc118.mixin.debug.client.MixinClientConnectionAccessor; import net.minecraft.client.network.ServerInfo; -import net.minecraft.network.ClientConnection; import net.minecraft.network.listener.ClientQueryPacketListener; +import net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.client.network.MultiplayerServerListPinger$1") public abstract class MixinMultiplayerServerListPingerListener implements ClientQueryPacketListener { - @Shadow - public abstract ClientConnection getConnection(); + @Accessor + abstract ServerInfo getField_3776(); // synthetic - @Redirect(method = "onResponse(Lnet/minecraft/network/packet/s2c/query/QueryResponseS2CPacket;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ServerInfo;getIcon()Ljava/lang/String;")) - private String onResponseCaptureServerInfo(ServerInfo serverInfo) { + @Inject(method = "onResponse(Lnet/minecraft/network/packet/s2c/query/QueryResponseS2CPacket;)V", at = @At(value = "HEAD")) + private void onResponseCaptureServerInfo(QueryResponseS2CPacket packet, CallbackInfo ci) { FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getConnection()).getChannel() .pipeline().get(FabricDecodeHandler.class); if (decoder != null) { - ((ViaServerInfo) serverInfo).setViaTranslating(decoder.getInfo().isActive()); - ((ViaServerInfo) serverInfo).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); + ((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); + ((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); } - return serverInfo.getIcon(); } } diff --git a/viafabric-mc119/build.gradle.kts b/viafabric-mc119/build.gradle.kts index 446edb4..d661762 100644 --- a/viafabric-mc119/build.gradle.kts +++ b/viafabric-mc119/build.gradle.kts @@ -1,8 +1,8 @@ dependencies { - minecraft("com.mojang:minecraft:1.19.3") - mappings("net.fabricmc:yarn:1.19.3+build.2:v2") + minecraft("com.mojang:minecraft:1.19.4-rc2") + mappings("net.fabricmc:yarn:1.19.4-rc2+build.1:v2") - modImplementation("net.fabricmc.fabric-api:fabric-api:0.68.1+1.19.3") + modImplementation("net.fabricmc.fabric-api:fabric-api:0.75.3+1.19.4") modImplementation("com.terraformersmc:modmenu:5.0.0-alpha.4") } diff --git a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/gui/ViaConfigScreen.java b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/gui/ViaConfigScreen.java index 4655fb7..20e308e 100644 --- a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/gui/ViaConfigScreen.java +++ b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/gui/ViaConfigScreen.java @@ -144,7 +144,7 @@ public class ViaConfigScreen extends Screen implements AbstractViaConfigScreen { @Override public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { this.renderBackground(matrices); - drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 20, 16777215); + drawCenteredTextWithShadow(matrices, this.textRenderer, this.title, this.width / 2, 20, 16777215); super.render(matrices, mouseX, mouseY, delta); } diff --git a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/mixin/gui/client/MixinMultiplayerServerListPingerListener.java b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/mixin/gui/client/MixinMultiplayerServerListPingerListener.java index 74cafae..1ba0505 100644 --- a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/mixin/gui/client/MixinMultiplayerServerListPingerListener.java +++ b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/mixin/gui/client/MixinMultiplayerServerListPingerListener.java @@ -6,24 +6,28 @@ import com.viaversion.fabric.mc119.mixin.debug.client.MixinClientConnectionAcces import net.minecraft.client.network.ServerInfo; import net.minecraft.network.ClientConnection; import net.minecraft.network.listener.ClientQueryPacketListener; +import net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.client.network.MultiplayerServerListPinger$1") public abstract class MixinMultiplayerServerListPingerListener implements ClientQueryPacketListener { - @Shadow - public abstract ClientConnection getConnection(); + @Accessor + abstract ClientConnection getField_3774(); // Synthetic - @Redirect(method = "onResponse(Lnet/minecraft/network/packet/s2c/query/QueryResponseS2CPacket;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ServerInfo;getIcon()Ljava/lang/String;")) - private String onResponseCaptureServerInfo(ServerInfo serverInfo) { - FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getConnection()).getChannel() + @Accessor + abstract ServerInfo getField_3776(); // Synthetic + + @Inject(method = "onResponse(Lnet/minecraft/network/packet/s2c/query/QueryResponseS2CPacket;)V", at = @At(value = "HEAD")) + private void onResponseCaptureServerInfo(QueryResponseS2CPacket packet, CallbackInfo ci) { + FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel() .pipeline().get(FabricDecodeHandler.class); if (decoder != null) { - ((ViaServerInfo) serverInfo).setViaTranslating(decoder.getInfo().isActive()); - ((ViaServerInfo) serverInfo).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); + ((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); + ((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); } - return serverInfo.getIcon(); } } diff --git a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/service/ProtocolAutoDetector.java b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/service/ProtocolAutoDetector.java index a27ce23..f845838 100644 --- a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/service/ProtocolAutoDetector.java +++ b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/service/ProtocolAutoDetector.java @@ -69,10 +69,10 @@ public class ProtocolAutoDetector { clientConnection.setPacketListener(new ClientQueryPacketListener() { @Override public void onResponse(QueryResponseS2CPacket packet) { - ServerMetadata meta = packet.getServerMetadata(); - ServerMetadata.Version version; - if (meta != null && (version = meta.getVersion()) != null) { - ProtocolVersion ver = ProtocolVersion.getProtocol(version.getProtocolVersion()); + ServerMetadata meta = packet.metadata(); + if (meta != null && meta.version().isPresent()) { + ProtocolVersion ver = ProtocolVersion.getProtocol(meta.version().get() + .protocolVersion()); future.complete(ver); ViaFabric.JLOGGER.info("Auto-detected " + ver + " for " + address); } else { @@ -92,8 +92,8 @@ public class ProtocolAutoDetector { } @Override - public ClientConnection getConnection() { - return clientConnection; + public boolean isConnectionOpen() { + return ch.channel().isOpen(); } });