diff --git a/build.gradle b/build.gradle index d87ce57..92324d4 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,9 @@ plugins { - id 'fabric-loom' version '1.3-SNAPSHOT' + id 'fabric-loom' version '1.10-SNAPSHOT' } -// Minecraft 1.18 (1.18-pre2) upwards uses Java 17. -var java_version = 17 +// Minecraft 1.20.6 upwards uses Java 21. +var java_version = 21 version = project.mod_version archivesBaseName = project.mod_id @@ -65,12 +65,12 @@ java { // If you remove this line, sources will not be generated. withSourcesJar() - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } jar { from("LICENSE") { rename { "${it}_${project.archivesBaseName}" } } -} \ No newline at end of file +} diff --git a/gradle.properties b/gradle.properties index 172df15..edc65d5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,18 +1,18 @@ # Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx1G +org.gradle.jvmargs=-Xmx3G # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.20.1 -yarn_mappings=1.20.1+build.9 -loader_version=0.14.21 +minecraft_version=1.21.4 +yarn_mappings=1.21.4+build.8 +loader_version=0.16.10 # Mod Properties mod_id = autoreconnect mod_name = AutoReconnect -mod_version = 2.3.0-dev +mod_version = 2.5.0-mc1.21.4 # Dependencies -fabric_version=0.85.0+1.20.1 -modmenu_version=7.0.1 -clothconfig_version=11.0.99 \ No newline at end of file +fabric_version=0.111.0+1.21.4 +modmenu_version=13.0.0 +clothconfig_version=17.0.142 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1ea29f6..416f2ac 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Feb 02 15:26:43 IST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/autoreconnect/mixin/ConnectScreenMixin.java b/src/main/java/autoreconnect/mixin/ConnectScreenMixin.java index 2aca4cc..21c6cae 100644 --- a/src/main/java/autoreconnect/mixin/ConnectScreenMixin.java +++ b/src/main/java/autoreconnect/mixin/ConnectScreenMixin.java @@ -3,7 +3,8 @@ import autoreconnect.AutoReconnect; import autoreconnect.reconnect.MultiplayerReconnectStrategy; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.ConnectScreen; +import net.minecraft.client.gui.screen.multiplayer.ConnectScreen; +import net.minecraft.client.network.CookieStorage; import net.minecraft.client.network.ServerAddress; import net.minecraft.client.network.ServerInfo; import org.spongepowered.asm.mixin.Mixin; @@ -13,9 +14,9 @@ @Mixin(ConnectScreen.class) public class ConnectScreenMixin { - @Inject(at = @At("HEAD"), method = "connect(Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/network/ServerAddress;Lnet/minecraft/client/network/ServerInfo;)V") - private void connect(MinecraftClient client, ServerAddress address, ServerInfo serverInfo, CallbackInfo info) { + @Inject(at = @At("HEAD"), method = "connect(Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/network/ServerAddress;Lnet/minecraft/client/network/ServerInfo;Lnet/minecraft/client/network/CookieStorage;)V") + private void connect(MinecraftClient client, ServerAddress address, ServerInfo serverInfo, CookieStorage cookieStorage, CallbackInfo ci) { if (serverInfo == null) return; - AutoReconnect.getInstance().setReconnectHandler(new MultiplayerReconnectStrategy(serverInfo)); + AutoReconnect.getInstance().setReconnectHandler(new MultiplayerReconnectStrategy(serverInfo, cookieStorage)); } } diff --git a/src/main/java/autoreconnect/mixin/MinecraftClientMixin.java b/src/main/java/autoreconnect/mixin/MinecraftClientMixin.java index ab8c590..8b62d54 100644 --- a/src/main/java/autoreconnect/mixin/MinecraftClientMixin.java +++ b/src/main/java/autoreconnect/mixin/MinecraftClientMixin.java @@ -21,8 +21,8 @@ public class MinecraftClientMixin { public Screen currentScreen; @Inject(method = "startIntegratedServer", at = @At("HEAD")) - private void startIntegratedServer(String levelName, LevelStorage.Session session, ResourcePackManager dataPackManager, SaveLoader saveLoader, boolean newWorld, CallbackInfo info) { - AutoReconnect.getInstance().setReconnectHandler(new SingleplayerReconnectStrategy(levelName)); + private void startIntegratedServer(LevelStorage.Session session, ResourcePackManager dataPackManager, SaveLoader saveLoader, boolean newWorld, CallbackInfo info) { + AutoReconnect.getInstance().setReconnectHandler(new SingleplayerReconnectStrategy(saveLoader.saveProperties().getLevelName())); } @Inject(method = "setScreen", at = @At(value = "FIELD", opcode = PUTFIELD, diff --git a/src/main/java/autoreconnect/reconnect/MultiplayerReconnectStrategy.java b/src/main/java/autoreconnect/reconnect/MultiplayerReconnectStrategy.java index d7ba854..7238818 100644 --- a/src/main/java/autoreconnect/reconnect/MultiplayerReconnectStrategy.java +++ b/src/main/java/autoreconnect/reconnect/MultiplayerReconnectStrategy.java @@ -1,17 +1,20 @@ package autoreconnect.reconnect; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.ConnectScreen; import net.minecraft.client.gui.screen.TitleScreen; +import net.minecraft.client.gui.screen.multiplayer.ConnectScreen; import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; +import net.minecraft.client.network.CookieStorage; import net.minecraft.client.network.ServerAddress; import net.minecraft.client.network.ServerInfo; public class MultiplayerReconnectStrategy extends ReconnectStrategy { private final ServerInfo serverInfo; + private final CookieStorage cookieStorage; - public MultiplayerReconnectStrategy(ServerInfo serverInfo) { + public MultiplayerReconnectStrategy(ServerInfo serverInfo, CookieStorage cookieStorage) { this.serverInfo = serverInfo; + this.cookieStorage = cookieStorage; } @Override @@ -25,10 +28,11 @@ public String getName() { @Override public void reconnect() { ConnectScreen.connect( - new MultiplayerScreen(new TitleScreen()), - MinecraftClient.getInstance(), - ServerAddress.parse(serverInfo.address), - serverInfo, - false); + new MultiplayerScreen(new TitleScreen()), + MinecraftClient.getInstance(), + ServerAddress.parse(serverInfo.address), + serverInfo, + false, + cookieStorage); } } diff --git a/src/main/java/autoreconnect/reconnect/RealmsReconnectStrategy.java b/src/main/java/autoreconnect/reconnect/RealmsReconnectStrategy.java index 86b8c01..bcb07d0 100644 --- a/src/main/java/autoreconnect/reconnect/RealmsReconnectStrategy.java +++ b/src/main/java/autoreconnect/reconnect/RealmsReconnectStrategy.java @@ -6,9 +6,7 @@ import net.minecraft.client.realms.dto.RealmsServer; import net.minecraft.client.realms.gui.screen.RealmsLongRunningMcoTaskScreen; import net.minecraft.client.realms.gui.screen.RealmsMainScreen; -import net.minecraft.client.realms.task.RealmsGetServerDetailsTask; - -import java.util.concurrent.locks.ReentrantLock; +import net.minecraft.client.realms.task.RealmsPrepareConnectionTask; public class RealmsReconnectStrategy extends ReconnectStrategy { private final RealmsServer realmsServer; @@ -28,7 +26,7 @@ public String getName() { @Override public void reconnect() { TitleScreen titleScreen = new TitleScreen(); - RealmsGetServerDetailsTask realmsGetServerDetailsTask = new RealmsGetServerDetailsTask(new RealmsMainScreen(titleScreen), titleScreen, realmsServer, new ReentrantLock()); - MinecraftClient.getInstance().setScreen(new RealmsLongRunningMcoTaskScreen(titleScreen, realmsGetServerDetailsTask)); + RealmsPrepareConnectionTask realmsPrepareConnectionTask = new RealmsPrepareConnectionTask(new RealmsMainScreen(titleScreen), realmsServer); + MinecraftClient.getInstance().setScreen(new RealmsLongRunningMcoTaskScreen(titleScreen, realmsPrepareConnectionTask)); } } diff --git a/src/main/java/autoreconnect/reconnect/SingleplayerReconnectStrategy.java b/src/main/java/autoreconnect/reconnect/SingleplayerReconnectStrategy.java index d07b5c5..6233be2 100644 --- a/src/main/java/autoreconnect/reconnect/SingleplayerReconnectStrategy.java +++ b/src/main/java/autoreconnect/reconnect/SingleplayerReconnectStrategy.java @@ -25,6 +25,6 @@ public void reconnect() { MinecraftClient client = MinecraftClient.getInstance(); if (!client.getLevelStorage().levelExists(getName())) return; client.setScreenAndRender(new MessageScreen(Text.translatable("selectWorld.data_read"))); - client.createIntegratedServerLoader().start(new TitleScreen(), getName()); + client.createIntegratedServerLoader().start(getName(), () -> client.setScreen(new TitleScreen())); } } diff --git a/src/main/resources/autoreconnect.mixins.json b/src/main/resources/autoreconnect.mixins.json index b05e1d0..9406e8c 100644 --- a/src/main/resources/autoreconnect.mixins.json +++ b/src/main/resources/autoreconnect.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "autoreconnect.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "mixins": [], "client": [ "ClientPlayNetworkHandlerMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 6cb8ae8..0f3023e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -7,6 +7,9 @@ "authors": [ "Bstn1802" ], + "contributors": [ + "NotRyken" + ], "contact": { "homepage": "https://github.com/Bstn1802/AutoReconnect", "sources": "https://github.com/Bstn1802/AutoReconnect", @@ -27,13 +30,13 @@ "autoreconnect.mixins.json" ], "depends": { - "java": ">=${java_version}", - "fabric": "*", - "fabricloader": ">=${fabric_loader_version}", - "minecraft": ">=${minecraft_version}", - "cloth-config2": ">=${clothconfig_version}" + "java": ">=21", + "fabric-api": "*", + "fabricloader": ">=0.16.10", + "minecraft": "~1.21.4" }, - "suggests": { + "recommends": { + "cloth-config": ">=${clothconfig_version}", "modmenu": ">=${modmenu_version}" } }