diff --git a/gradle.properties b/gradle.properties index bb008e6..a257f31 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,17 +7,17 @@ org.gradle.configuration-cache=false # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=26.1.2 -loader_version=0.19.2 -loom_version=1.16-SNAPSHOT +minecraft_version=26.2 +loader_version=0.19.3 +loom_version=1.17-SNAPSHOT # Mod Properties mod_version=3.1.4 -target_version=26.1.x +target_version=26.2 maven_group=me.contaria archives_base_name=fastquit # Dependencies -fabric_api_version=0.149.1+26.1.2 -modmenu_version=18.0.0-beta.1 -cloth_config_version=26.1.154 +fabric_api_version=0.154.0+26.2 +modmenu_version=20.0.0-beta.4 +cloth_config_version=26.2.155 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9..d997cfc 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c61a118..a351597 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6..739907d 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -173,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -206,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9b42019..e509b2d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/java/me/contaria/fastquit/FastQuit.java b/src/main/java/me/contaria/fastquit/FastQuit.java index 5908b52..bf9f9aa 100644 --- a/src/main/java/me/contaria/fastquit/FastQuit.java +++ b/src/main/java/me/contaria/fastquit/FastQuit.java @@ -1,6 +1,7 @@ package me.contaria.fastquit; import me.contaria.fastquit.mixin.MinecraftAccessor; +import me.contaria.fastquit.mixin.GuiAccessor; import me.contaria.fastquit.mixin.MinecraftServerAccessor; import me.contaria.fastquit.mixin.LevelStorageSessionAccessor; import com.mojang.logging.LogUtils; @@ -130,7 +131,7 @@ public static void wait(Collection servers, @Nullable Callback return; } - Screen oldScreen = client.screen; + Screen oldScreen = client.gui.screen(); Component stillSaving = TextHelper.translatable("fastquit.screen.waiting", String.join("\" & \"", servers.stream().map(server -> server.getWorldData().getLevelName()).toList())); log(stillSaving.getString()); @@ -138,7 +139,7 @@ public static void wait(Collection servers, @Nullable Callback servers.forEach(server -> server.getRunningThread().setPriority(Thread.NORM_PRIORITY)); try { - client.setScreen(new WaitingScreen(stillSaving, cancellable)); + client.gui.setScreen(new WaitingScreen(stillSaving, cancellable)); while (servers.stream().anyMatch(server -> !server.isShutdown())) { if (cancellable != null && cancellable.isCancelled()) { @@ -153,9 +154,9 @@ public static void wait(Collection servers, @Nullable Callback } finally { // compatibility with "WorldGen" mod if (oldScreen != null && oldScreen.getClass().getName().equals("caeruleusTait.WorldGen.gui.screens.WGConfigScreen")) { - client.screen = oldScreen; + ((GuiAccessor) client.gui).fastquit$setScreen(oldScreen); } else { - client.setScreenAndShow(oldScreen); + client.gui.setScreen(oldScreen); } } } diff --git a/src/main/java/me/contaria/fastquit/mixin/GuiAccessor.java b/src/main/java/me/contaria/fastquit/mixin/GuiAccessor.java new file mode 100644 index 0000000..7edb5d9 --- /dev/null +++ b/src/main/java/me/contaria/fastquit/mixin/GuiAccessor.java @@ -0,0 +1,14 @@ +package me.contaria.fastquit.mixin; + +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.screens.Screen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Gui.class) +public interface GuiAccessor { + @Mutable + @Accessor("screen") + void fastquit$setScreen(Screen screen); +} diff --git a/src/main/java/me/contaria/fastquit/mixin/MinecraftMixin.java b/src/main/java/me/contaria/fastquit/mixin/MinecraftMixin.java index a0f6e89..08d05e5 100644 --- a/src/main/java/me/contaria/fastquit/mixin/MinecraftMixin.java +++ b/src/main/java/me/contaria/fastquit/mixin/MinecraftMixin.java @@ -48,12 +48,12 @@ private boolean fastquit(IntegratedServer server) { if (FastQuit.CONFIG.renderSavingScreen && this.isLocalServer) { original.call(client, screen); } else { - client.setScreen(screen); + client.gui.setScreen(screen); } } @Inject( - method = "destroy", + method = "exitWorldAndClose", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;disconnectWithProgressScreen()V", @@ -65,7 +65,7 @@ private boolean fastquit(IntegratedServer server) { } @Inject( - method = "crash(Lnet/minecraft/client/Minecraft;Ljava/io/File;Lnet/minecraft/CrashReport;)V", + method = "crash(Lnet/minecraft/client/Minecraft;Ljava/io/File;Lnet/minecraft/CrashReport;I)V", at = @At("HEAD") ) private static void fastquit$waitForSaveOnCrash(CallbackInfo ci) { diff --git a/src/main/java/me/contaria/fastquit/mixin/MinecraftServerMixin.java b/src/main/java/me/contaria/fastquit/mixin/MinecraftServerMixin.java index 691f62b..56e2a84 100644 --- a/src/main/java/me/contaria/fastquit/mixin/MinecraftServerMixin.java +++ b/src/main/java/me/contaria/fastquit/mixin/MinecraftServerMixin.java @@ -47,7 +47,7 @@ public abstract class MinecraftServerMixin { description.append(" (" + info.getTimeSaving() + ")"); } if (FastQuit.CONFIG.showToasts) { - Minecraft.getInstance().submit(() -> Minecraft.getInstance().getToastManager().addToast(new SystemToast(SystemToast.SystemToastId.WORLD_BACKUP, TextHelper.translatable("fastquit.toast.title"), description))); + Minecraft.getInstance().submit(() -> Minecraft.getInstance().gui.toastManager().addToast(new SystemToast(SystemToast.SystemToastId.WORLD_BACKUP, TextHelper.translatable("fastquit.toast.title"), description))); } FastQuit.log(description.getString()); } diff --git a/src/main/java/me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin.java b/src/main/java/me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin.java index b3379e5..a1c277e 100644 --- a/src/main/java/me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin.java +++ b/src/main/java/me/contaria/fastquit/mixin/WorldListWidgetWorldEntryMixin.java @@ -65,7 +65,7 @@ public abstract class WorldListWidgetWorldEntryMixin extends WorldSelectionList. ) ) private void fastquit$openWorldListWhenFailed(CallbackInfo ci) { - this.minecraft.setScreen(this.screen); + this.minecraft.gui.setScreen(this.screen); } @Inject( diff --git a/src/main/resources/fastquit.mixins.json b/src/main/resources/fastquit.mixins.json index 17eae35..73dc412 100644 --- a/src/main/resources/fastquit.mixins.json +++ b/src/main/resources/fastquit.mixins.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_17", "client": [ "EditWorldScreenMixin", + "GuiAccessor", "LevelSettingsAccessor", "LevelStorageAccessMixin", "LevelStorageSessionAccessor",