Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit 6a1e94b

Browse files
committed
fix "show Hunger bar" bedwars option >1.8.9
- this makes the mod require at least fabric loader 0.17.0 in order to use mixinextras expressions
1 parent 657c58a commit 6a1e94b

File tree

12 files changed

+82
-56
lines changed

12 files changed

+82
-56
lines changed

1.16_combat-6/src/main/java/io/github/axolotlclient/mixin/InGameHudMixin.java

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222

2323
package io.github.axolotlclient.mixin;
2424

25+
import com.llamalad7.mixinextras.expression.Expression;
26+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
27+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
28+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2529
import io.github.axolotlclient.AxolotlClient;
2630
import io.github.axolotlclient.bridge.events.Events;
2731
import io.github.axolotlclient.bridge.events.types.ScoreboardRenderEvent;
@@ -41,10 +45,14 @@
4145
import net.minecraft.scoreboard.ScoreboardObjective;
4246
import net.minecraft.text.StringVisitable;
4347
import net.minecraft.text.Text;
48+
import net.minecraft.world.WorldProperties;
4449
import org.jetbrains.annotations.Nullable;
4550
import org.spongepowered.asm.mixin.Mixin;
4651
import org.spongepowered.asm.mixin.Shadow;
47-
import org.spongepowered.asm.mixin.injection.*;
52+
import org.spongepowered.asm.mixin.injection.At;
53+
import org.spongepowered.asm.mixin.injection.Inject;
54+
import org.spongepowered.asm.mixin.injection.ModifyArgs;
55+
import org.spongepowered.asm.mixin.injection.Redirect;
4856
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
4957
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
5058

@@ -194,35 +202,31 @@ public abstract class InGameHudMixin {
194202
return scaledWidth;
195203
}
196204

197-
@ModifyVariable(
205+
@WrapOperation(
198206
method = "renderStatusBars",
199207
at = @At(
200-
value = "STORE"
201-
),
202-
ordinal = 18
208+
value = "INVOKE",
209+
target = "Lnet/minecraft/world/WorldProperties;isHardcore()Z")
203210
)
204-
public int axolotlclient$displayHardcoreHearts(int offset) {
211+
public boolean axolotlclient$displayHardcoreHearts(WorldProperties instance, Operation<Boolean> original) {
205212
boolean hardcore = BedwarsMod.getInstance().isEnabled() &&
206213
BedwarsMod.getInstance().inGame() && BedwarsMod.getInstance().hardcoreHearts.get() &&
207214
!BedwarsMod.getInstance().getGame().get().getSelf().isBed();
208-
return hardcore ? 5 : offset;
215+
return hardcore || original.call(instance);
209216
}
210217

211-
@ModifyVariable(
212-
method = "renderStatusBars",
213-
at = @At(
214-
value = "STORE"
215-
), ordinal = 20
216-
)
217-
public int axolotlclient$dontHunger(int heartCount) {
218-
if (heartCount == 0 && BedwarsMod.getInstance().isEnabled() &&
218+
@Expression("? == 0")
219+
@ModifyExpressionValue(method = "renderStatusBars", at = @At(value = "MIXINEXTRAS:EXPRESSION", ordinal = 6))
220+
public boolean axolotlclient$dontHunger(boolean original) {
221+
if (original && BedwarsMod.getInstance().isEnabled() &&
219222
BedwarsMod.getInstance().inGame() &&
220223
!BedwarsMod.getInstance().showHunger.get()) {
221-
return 3;
224+
return false;
222225
}
223-
return heartCount;
226+
return original;
224227
}
225228

229+
226230
@Inject(method = "renderVignetteOverlay", at = @At("HEAD"), cancellable = true)
227231
private void axolotlclient$removeVignette(Entity entity, CallbackInfo ci) {
228232
if (AxolotlClient.config().removeVignette.get()) {

1.16_combat-6/src/main/resources/axolotlclient.mixins.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,8 @@
6666
],
6767
"injectors": {
6868
"defaultRequire": 1
69+
},
70+
"mixinextras": {
71+
"minVersion": "0.5.0"
6972
}
7073
}

1.16_combat-6/src/main/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@
124124
}
125125
},
126126
"depends": {
127-
"fabricloader": ">=0.15.0",
127+
"fabricloader": ">=0.17.0",
128128
"minecraft": [
129129
"1.16.3-combat.8.c",
130130
"1.16.3-combat.8.a"

1.20/src/main/java/io/github/axolotlclient/mixin/InGameHudMixin.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
package io.github.axolotlclient.mixin;
2424

25+
import com.llamalad7.mixinextras.expression.Expression;
26+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
2527
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2628
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2729
import io.github.axolotlclient.AxolotlClient;
@@ -39,14 +41,18 @@
3941
import net.minecraft.client.gui.GuiGraphics;
4042
import net.minecraft.client.gui.hud.InGameHud;
4143
import net.minecraft.entity.Entity;
44+
import net.minecraft.entity.player.PlayerEntity;
4245
import net.minecraft.scoreboard.ScoreboardObjective;
4346
import net.minecraft.text.StringVisitable;
4447
import net.minecraft.text.Text;
4548
import net.minecraft.world.WorldProperties;
4649
import org.jetbrains.annotations.Nullable;
4750
import org.spongepowered.asm.mixin.Mixin;
4851
import org.spongepowered.asm.mixin.Shadow;
49-
import org.spongepowered.asm.mixin.injection.*;
52+
import org.spongepowered.asm.mixin.injection.At;
53+
import org.spongepowered.asm.mixin.injection.Inject;
54+
import org.spongepowered.asm.mixin.injection.ModifyArgs;
55+
import org.spongepowered.asm.mixin.injection.Redirect;
5056
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
5157
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
5258

@@ -203,19 +209,15 @@ public abstract class InGameHudMixin {
203209
return original.call(instance);
204210
}
205211

206-
@ModifyVariable(
207-
method = "renderStatusBars",
208-
at = @At(
209-
value = "STORE"
210-
), ordinal = 15
211-
)
212-
public int axolotlclient$dontHunger(int heartCount) {
213-
if (heartCount == 0 && BedwarsMod.getInstance().isEnabled() &&
212+
@Expression("? == 0")
213+
@ModifyExpressionValue(method = "renderStatusBars", at = @At(value = "MIXINEXTRAS:EXPRESSION", ordinal = 1))
214+
public boolean axolotlclient$dontHunger(boolean original) {
215+
if (original && BedwarsMod.getInstance().isEnabled() &&
214216
BedwarsMod.getInstance().inGame() &&
215217
!BedwarsMod.getInstance().showHunger.get()) {
216-
return 3;
218+
return false;
217219
}
218-
return heartCount;
220+
return original;
219221
}
220222

221223
@Inject(method = "renderVignetteOverlay", at = @At("HEAD"), cancellable = true)
@@ -225,11 +227,11 @@ public abstract class InGameHudMixin {
225227
}
226228
}
227229

228-
@ModifyVariable(method = "renderStatusBars", at = @At("STORE"), ordinal = 12)
229-
private int axolotlclient$dontShowArmor(int armorValue) {
230+
@WrapOperation(method = "renderStatusBars", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;getArmor()I"))
231+
private int axolotlclient$dontShowArmor(PlayerEntity instance, Operation<Integer> original) {
230232
if (BedwarsMod.getInstance().isEnabled() && BedwarsMod.getInstance().inGame() && !BedwarsMod.getInstance().displayArmor.get()) {
231233
return 0;
232234
}
233-
return armorValue;
235+
return original.call(instance);
234236
}
235237
}

1.20/src/main/resources/axolotlclient.mixins.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,8 @@
6565
],
6666
"injectors": {
6767
"defaultRequire": 1
68+
},
69+
"mixinextras": {
70+
"minVersion": "0.5.0"
6871
}
6972
}

1.20/src/main/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
}
126126
},
127127
"depends": {
128-
"fabricloader": ">=0.15.0",
128+
"fabricloader": ">=0.17.0",
129129
"minecraft": "1.20.1",
130130
"fabric-resource-loader-v0": "*",
131131
"axolotlclientconfig": "*",

1.21.7/src/main/java/io/github/axolotlclient/mixin/InGameHudMixin.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
package io.github.axolotlclient.mixin;
2424

25+
import com.llamalad7.mixinextras.expression.Expression;
26+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
2527
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2628
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2729
import io.github.axolotlclient.AxolotlClient;
@@ -42,13 +44,15 @@
4244
import net.minecraft.world.entity.Entity;
4345
import net.minecraft.world.entity.player.Player;
4446
import net.minecraft.world.scores.Objective;
47+
import org.spongepowered.asm.mixin.Debug;
4548
import org.spongepowered.asm.mixin.Final;
4649
import org.spongepowered.asm.mixin.Mixin;
4750
import org.spongepowered.asm.mixin.Shadow;
4851
import org.spongepowered.asm.mixin.injection.At;
4952
import org.spongepowered.asm.mixin.injection.Inject;
5053
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
5154

55+
@Debug(export = true)
5256
@Mixin(Gui.class)
5357
public abstract class InGameHudMixin {
5458

@@ -113,14 +117,15 @@ private void onHudRender(GuiGraphics guiGraphics, DeltaTracker deltaTracker, Cal
113117
original.call(instance, graphics, type, x, y, hardcoreMod || hardcore, blinking, half);
114118
}
115119

116-
@WrapOperation(method = "renderPlayerHealth", at = @At(value = "INVOKE",
117-
target = "Lnet/minecraft/client/gui/Gui;renderFood(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/entity/player/Player;II)V"))
118-
public void axolotlclient$dontHunger(Gui instance, GuiGraphics graphics, Player player, int y, int x, Operation<Void> original) {
119-
if (BedwarsMod.getInstance().isEnabled() && BedwarsMod.getInstance().inGame() &&
120+
@Expression("? == 0")
121+
@ModifyExpressionValue(method = "renderPlayerHealth", at = @At(value = "MIXINEXTRAS:EXPRESSION", ordinal = 1))
122+
public boolean axolotlclient$dontHunger(boolean original) {
123+
if (original && BedwarsMod.getInstance().isEnabled() &&
124+
BedwarsMod.getInstance().inGame() &&
120125
!BedwarsMod.getInstance().showHunger.get()) {
121-
return;
126+
return false;
122127
}
123-
original.call(instance, graphics, player, y, x);
128+
return original;
124129
}
125130

126131
@Inject(method = "renderVignette", at = @At("HEAD"), cancellable = true)

1.21.7/src/main/resources/axolotlclient.mixins.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,8 @@
6868
],
6969
"injectors": {
7070
"defaultRequire": 1
71+
},
72+
"mixinextras": {
73+
"minVersion": "0.5.0"
7174
}
7275
}

1.21.7/src/main/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
}
129129
},
130130
"depends": {
131-
"fabricloader": ">=0.15.11",
131+
"fabricloader": ">=0.17.0",
132132
"minecraft": "1.21.x",
133133
"fabric-api": "*",
134134
"axolotlclientconfig": "*",

1.21/src/main/java/io/github/axolotlclient/mixin/InGameHudMixin.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222

2323
package io.github.axolotlclient.mixin;
2424

25+
import com.llamalad7.mixinextras.expression.Expression;
26+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
27+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
28+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
2529
import com.llamalad7.mixinextras.sugar.Local;
2630
import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef;
2731
import io.github.axolotlclient.AxolotlClient;
@@ -47,7 +51,10 @@
4751
import org.jetbrains.annotations.Nullable;
4852
import org.spongepowered.asm.mixin.Mixin;
4953
import org.spongepowered.asm.mixin.Shadow;
50-
import org.spongepowered.asm.mixin.injection.*;
54+
import org.spongepowered.asm.mixin.injection.At;
55+
import org.spongepowered.asm.mixin.injection.Inject;
56+
import org.spongepowered.asm.mixin.injection.ModifyArgs;
57+
import org.spongepowered.asm.mixin.injection.Redirect;
5158
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
5259
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
5360

@@ -220,19 +227,15 @@ private void onHudRender(GuiGraphics graphics, DeltaTracker tracker, CallbackInf
220227
}
221228
}
222229

223-
@ModifyVariable(
224-
method = "renderStatusBars",
225-
at = @At(
226-
value = "STORE"
227-
), ordinal = 15
228-
)
229-
public int axolotlclient$dontHunger(int heartCount) {
230-
if (heartCount == 0 && BedwarsMod.getInstance().isEnabled() &&
230+
@Expression("? == 0")
231+
@ModifyExpressionValue(method = "renderStatusBars", at = @At(value = "MIXINEXTRAS:EXPRESSION", ordinal = 1))
232+
public boolean axolotlclient$dontHunger(boolean original) {
233+
if (original && BedwarsMod.getInstance().isEnabled() &&
231234
BedwarsMod.getInstance().inGame() &&
232235
!BedwarsMod.getInstance().showHunger.get()) {
233-
return 3;
236+
return false;
234237
}
235-
return heartCount;
238+
return original;
236239
}
237240

238241
@Inject(method = "renderVignetteOverlay", at = @At("HEAD"), cancellable = true)
@@ -242,11 +245,11 @@ private void onHudRender(GuiGraphics graphics, DeltaTracker tracker, CallbackInf
242245
}
243246
}
244247

245-
@ModifyVariable(method = "renderStatusBars", at = @At("STORE"), ordinal = 12)
246-
private int axolotlclient$dontShowArmor(int armorValue) {
248+
@WrapOperation(method = "renderStatusBars", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/in_game/InGameHud;renderArmorBar(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/entity/player/PlayerEntity;IIII)V"))
249+
private static void axolotlclient$dontShowArmor(GuiGraphics graphics, PlayerEntity player, int y, int uncappedMaxHealth, int cappedMaxHealth, int x, Operation<Void> original) {
247250
if (BedwarsMod.getInstance().isEnabled() && BedwarsMod.getInstance().inGame() && !BedwarsMod.getInstance().displayArmor.get()) {
248-
return 0;
251+
return;
249252
}
250-
return armorValue;
253+
original.call(graphics, player, y, uncappedMaxHealth, cappedMaxHealth, x);
251254
}
252255
}

0 commit comments

Comments
 (0)