Skip to content

Commit b8d4b7a

Browse files
authored
Merge pull request #5 from tildejustin/1.19.4-1.20.6
1.20.5-1.20.6 support and fix button order
2 parents 87d58e5 + 3c1127b commit b8d4b7a

File tree

3 files changed

+29
-12
lines changed

3 files changed

+29
-12
lines changed

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ org.gradle.jvmargs = -Xmx2G
22
org.gradle.parallel = true
33
org.gradle.caching = true
44

5-
mod_version = 1.4.2
6-
target_version = 1.19.4-1.20.4
5+
mod_version = 1.4.3
6+
target_version = 1.19.4-1.20.6
77
archives_name = fast-reset
88
maven_group = fast_reset.client

src/main/java/fast_reset/client/mixin/GameMenuMixin.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package fast_reset.client.mixin;
22

3+
import com.llamalad7.mixinextras.sugar.Share;
4+
import com.llamalad7.mixinextras.sugar.ref.LocalRef;
35
import fast_reset.client.Client;
46
import net.minecraft.client.gui.*;
57
import net.minecraft.client.gui.screen.*;
68
import net.minecraft.client.gui.widget.*;
79
import net.minecraft.text.Text;
10+
import org.jetbrains.annotations.Nullable;
811
import org.spongepowered.asm.mixin.*;
912
import org.spongepowered.asm.mixin.injection.*;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1014

1115
@Mixin(GameMenuScreen.class)
1216
public abstract class GameMenuMixin extends Screen {
@@ -20,8 +24,11 @@ protected GameMenuMixin(Text title) {
2024
@Unique
2125
private static final int bottomRightWidth = 102;
2226

27+
@Shadow
28+
private @Nullable ButtonWidget exitButton;
29+
2330
@Redirect(method = "initWidgets", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/GridWidget$Adder;add(Lnet/minecraft/client/gui/widget/Widget;I)Lnet/minecraft/client/gui/widget/Widget;"))
24-
private <T extends Widget> T addButtons(GridWidget.Adder instance, T widget, int occupiedColumns) {
31+
private <T extends Widget> T addButtons(GridWidget.Adder instance, T widget, int occupiedColumns, @Share("saveButton") LocalRef<ButtonWidget.Builder> saveButtonStore, @Share("quitButton") LocalRef<T> quitButton) {
2532
final ButtonWidget.Builder saveButton = ButtonWidget.builder(Text.translatable("menu.quitWorld"), (buttonWidgetX) -> {
2633
Client.saveOnQuit = false;
2734
this.disconnect();
@@ -30,7 +37,19 @@ private <T extends Widget> T addButtons(GridWidget.Adder instance, T widget, int
3037
if (Client.buttonLocation == 2) {
3138
// add menu.quitWorld button instead of save button
3239
instance.add(saveButton.width(204).build(), occupiedColumns);
33-
return (T) this.addDrawableChild((ButtonWidget) widget);
40+
quitButton.set(widget);
41+
return null; // warning: GameMenu#exitButton is null here, needs to be set later
42+
}
43+
44+
saveButtonStore.set(saveButton);
45+
return instance.add(widget, occupiedColumns);
46+
}
47+
48+
@Inject(method = "initWidgets", at = @At("TAIL"))
49+
private <T extends Element & Drawable & Selectable> void addFastResetWidget(CallbackInfo ci, @Share("saveButton") LocalRef<ButtonWidget.Builder> saveButtonStore, @Share("quitButton") LocalRef<T> quitButton) {
50+
if (Client.buttonLocation == 2) {
51+
this.exitButton = (ButtonWidget) this.addDrawableChild(quitButton.get());
52+
return;
3453
}
3554

3655
int height = 20;
@@ -52,9 +71,7 @@ private <T extends Widget> T addButtons(GridWidget.Adder instance, T widget, int
5271
}
5372
}
5473

55-
56-
this.addDrawableChild(saveButton.dimensions(x, y, width, height).build());
57-
return instance.add(widget, occupiedColumns);
74+
this.addDrawableChild(saveButtonStore.get().dimensions(x, y, width, height).build());
5875
}
5976

6077
@Redirect(method = "initWidgets", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/ButtonWidget$Builder;width(I)Lnet/minecraft/client/gui/widget/ButtonWidget$Builder;", ordinal = 1))

src/main/java/fast_reset/client/mixin/OptionsScreenMixin.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package fast_reset.client.mixin;
22

3+
import com.llamalad7.mixinextras.sugar.Local;
34
import fast_reset.client.Client;
45
import net.minecraft.client.gui.screen.Screen;
56
import net.minecraft.client.gui.screen.option.OptionsScreen;
67
import net.minecraft.client.gui.widget.*;
78
import net.minecraft.text.Text;
89
import org.spongepowered.asm.mixin.Mixin;
9-
import org.spongepowered.asm.mixin.injection.At;
10-
import org.spongepowered.asm.mixin.injection.Inject;
11-
import org.spongepowered.asm.mixin.injection.callback.*;
10+
import org.spongepowered.asm.mixin.injection.*;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1212

1313
@Mixin(OptionsScreen.class)
1414
public class OptionsScreenMixin extends Screen {
@@ -29,8 +29,8 @@ private static Text getButtonText(){
2929
}
3030
}
3131

32-
@Inject(method = "init", at= @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/GridWidget$Adder;add(Lnet/minecraft/client/gui/widget/Widget;ILnet/minecraft/client/gui/widget/Positioner;)Lnet/minecraft/client/gui/widget/Widget;"), locals = LocalCapture.CAPTURE_FAILHARD)
33-
public void initInject(CallbackInfo ci, GridWidget gridWidget, GridWidget.Adder adder){
32+
@Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/GridWidget$Adder;add(Lnet/minecraft/client/gui/widget/Widget;)Lnet/minecraft/client/gui/widget/Widget;", shift = At.Shift.AFTER), slice = @Slice(from = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/screen/option/OptionsScreen;CREDITS_AND_ATTRIBUTION_TEXT:Lnet/minecraft/text/Text;")))
33+
public void initInject(CallbackInfo ci, @Local GridWidget.Adder adder){
3434
adder.add(ButtonWidget.builder(getButtonText(), (buttonWidget) -> {
3535
Client.updateButtonLocation();
3636
buttonWidget.setMessage(getButtonText());

0 commit comments

Comments
 (0)