Skip to content

Commit 92991f6

Browse files
ZANX3YAlexander01998
authored andcommitted
Fix "Disable Wurst" button
1 parent 06ae29d commit 92991f6

File tree

1 file changed

+20
-48
lines changed

1 file changed

+20
-48
lines changed

src/main/java/net/wurstclient/mixin/StatsScreenMixin.java

Lines changed: 20 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,77 +10,49 @@
1010
import org.spongepowered.asm.mixin.Mixin;
1111
import org.spongepowered.asm.mixin.Unique;
1212
import org.spongepowered.asm.mixin.injection.At;
13-
import org.spongepowered.asm.mixin.injection.Inject;
14-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1513

16-
import net.fabricmc.fabric.api.client.screen.v1.Screens;
17-
import net.minecraft.client.gui.screen.Screen;
14+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
15+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
16+
1817
import net.minecraft.client.gui.screen.StatsScreen;
1918
import net.minecraft.client.gui.widget.ButtonWidget;
20-
import net.minecraft.client.gui.widget.ClickableWidget;
21-
import net.minecraft.client.resource.language.I18n;
19+
import net.minecraft.client.gui.widget.DirectionalLayoutWidget;
20+
import net.minecraft.client.gui.widget.Widget;
2221
import net.minecraft.text.Text;
2322
import net.wurstclient.WurstClient;
2423

2524
@Mixin(StatsScreen.class)
26-
public abstract class StatsScreenMixin extends Screen
25+
public class StatsScreenMixin
2726
{
28-
@Unique
29-
private ButtonWidget toggleWurstButton;
30-
31-
private StatsScreenMixin(WurstClient wurst, Text title)
32-
{
33-
super(title);
34-
}
35-
36-
/**
37-
* Adds the hidden "Enable/Disable Wurst" button on the Statistics screen.
38-
*/
39-
@Inject(at = @At("TAIL"), method = "createButtons()V")
40-
private void onCreateButtons(CallbackInfo ci)
27+
@WrapOperation(at = @At(value = "INVOKE",
28+
target = "Lnet/minecraft/client/gui/widget/DirectionalLayoutWidget;add(Lnet/minecraft/client/gui/widget/Widget;)Lnet/minecraft/client/gui/widget/Widget;",
29+
ordinal = 4), method = "createButtons()V")
30+
private <T extends Widget> T onCreateDoneButton(
31+
DirectionalLayoutWidget layout, T doneButton, Operation<T> original)
4132
{
4233
if(WurstClient.INSTANCE.getOtfs().disableOtf.shouldHideEnableButton())
43-
return;
44-
45-
toggleWurstButton = ButtonWidget
46-
.builder(Text.literal(""), this::toggleWurst).width(150).build();
34+
return original.call(layout, doneButton);
4735

48-
ClickableWidget doneButton = getDoneButton();
49-
doneButton.setX(width / 2 + 2);
50-
doneButton.setWidth(150);
51-
52-
toggleWurstButton.setPosition(width / 2 - 152, doneButton.getY());
53-
54-
updateWurstButtonText(toggleWurstButton);
55-
addDrawableChild(toggleWurstButton);
56-
}
57-
58-
@Unique
59-
private ClickableWidget getDoneButton()
60-
{
61-
for(ClickableWidget button : Screens.getButtons(this))
62-
if(button.getMessage().getString()
63-
.equals(I18n.translate("gui.done")))
64-
return button;
65-
66-
throw new IllegalStateException(
67-
"Can't find the done button on the statistics screen.");
36+
DirectionalLayoutWidget subLayout =
37+
layout.add(DirectionalLayoutWidget.horizontal()).spacing(5);
38+
subLayout.add(ButtonWidget.builder(getButtonText(), this::toggleWurst)
39+
.width(165).build());
40+
return original.call(subLayout, doneButton);
6841
}
6942

7043
@Unique
7144
private void toggleWurst(ButtonWidget button)
7245
{
7346
WurstClient wurst = WurstClient.INSTANCE;
7447
wurst.setEnabled(!wurst.isEnabled());
75-
76-
updateWurstButtonText(button);
48+
button.setMessage(getButtonText());
7749
}
7850

7951
@Unique
80-
private void updateWurstButtonText(ButtonWidget button)
52+
private Text getButtonText()
8153
{
8254
WurstClient wurst = WurstClient.INSTANCE;
8355
String text = (wurst.isEnabled() ? "Disable" : "Enable") + " Wurst";
84-
button.setMessage(Text.literal(text));
56+
return Text.literal(text);
8557
}
8658
}

0 commit comments

Comments
 (0)