Skip to content

Commit 2de5f9f

Browse files
authored
Merge pull request #93 from KJNine/1.19.4
Fix crash when opening KeyBinds menu (#90 #91)
2 parents 46155ed + 663175e commit 2de5f9f

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed
Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.kqp.inventorytabs.mixin;
22

3-
import java.util.Objects;
4-
53
import com.kqp.inventorytabs.init.InventoryTabsClient;
4+
import net.minecraft.client.util.math.MatrixStack;
5+
import net.minecraft.text.MutableText;
66
import org.spongepowered.asm.mixin.Final;
77
import org.spongepowered.asm.mixin.Mixin;
88
import org.spongepowered.asm.mixin.Shadow;
@@ -11,9 +11,8 @@
1111

1212
import net.minecraft.client.gui.screen.option.ControlsListWidget;
1313
import net.minecraft.client.option.KeyBinding;
14-
import net.minecraft.text.Text;
15-
import net.minecraft.text.TextColor;
1614
import net.minecraft.util.Formatting;
15+
import org.spongepowered.asm.mixin.injection.Redirect;
1716

1817
/**
1918
* The 'Tab' keybinding conflicts with the multiplayer player list keybind, but since you can only see the player list when outside the inventory
@@ -23,14 +22,19 @@
2322
public class ControlsListWidget$KeyBindingEntryMixin_SoftConflict {
2423
@Shadow @Final private KeyBinding binding;
2524

26-
@ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/ButtonWidget;setMessage(Lnet/minecraft/text/Text;)V"))
27-
public Text setMessage(Text text) {
28-
TextColor c = text.getStyle().getColor();
29-
if(c != null && c.getRgb() == Objects.requireNonNull(Formatting.RED.getColorValue())) {
30-
if(this.binding == InventoryTabsClient.NEXT_TAB_KEY_BIND) {
31-
text = text.copy().formatted(Formatting.GOLD);
32-
}
25+
@ModifyArg(method = "render", index = 5, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawableHelper;fill(Lnet/minecraft/client/util/math/MatrixStack;IIIII)V"))
26+
public int fill(MatrixStack matrices, int x1, int y1, int x2, int y2, int color) {
27+
if(this.binding == InventoryTabsClient.NEXT_TAB_KEY_BIND) {
28+
return Formatting.GOLD.getColorValue() | 0xFF000000;
29+
}
30+
return color;
31+
}
32+
33+
@Redirect(method="update", at=@At(value="INVOKE", target="Lnet/minecraft/text/MutableText;formatted(Lnet/minecraft/util/Formatting;)Lnet/minecraft/text/MutableText;"))
34+
public MutableText formatText(MutableText instance, Formatting formatting) {
35+
if(formatting == Formatting.RED && this.binding == InventoryTabsClient.NEXT_TAB_KEY_BIND) {
36+
return instance.formatted(Formatting.GOLD);
3337
}
34-
return text;
38+
return instance.formatted(formatting);
3539
}
3640
}

0 commit comments

Comments
 (0)