1010import org .spongepowered .asm .mixin .injection .callback .CallbackInfoReturnable ;
1111import net .minecraft .client .gui .Gui ;
1212import net .minecraft .client .gui .Gui .ContextualInfo ;
13+ import net .minecraft .client .gui .GuiGraphicsExtractor ;
1314import net .minecraft .world .entity .LivingEntity ;
1415
1516@ Mixin (value = Gui .class )
1617public abstract class InGameHudMixin {
1718 @ Shadow protected abstract LivingEntity getPlayerVehicleWithHealth ();
1819
19- private boolean showOneBar = MixinConfigQuery .isOneBarEnabled ();;
20+ private OneBarElements oneBarElements ;
21+ private boolean showOneBar = false ;
22+
23+ @ Inject (at = @ At ("HEAD" ), method = "extractRenderState" )
24+ public void render (GuiGraphicsExtractor context , DeltaTracker tickCounter , CallbackInfo ci ) {
25+ oneBarElements = new OneBarElements (context );
26+ showOneBar = MixinConfigQuery .isOneBarEnabled (); // This var exists because it also shows whether oneBarElements is initialized
27+
28+ boolean barsVisible = !minecraft .options .hideGui && Objects .requireNonNull (minecraft .gameMode ).canHurtPlayer ();
29+ if (showOneBar && barsVisible ) oneBarElements .renderOneBar ();
30+ if (showOneBar && MixinConfigQuery .showMountJump () && !minecraft .options .hideGui ) oneBarElements .mountJumpBar ();
31+
32+ PlayerProperties .setLocatorBarAvailable (minecraft .player .connection .getWaypointManager ().hasWaypoints ());
33+ }
34+
35+ @ Inject (method = "extractPlayerHealth" , at = @ At (value = "HEAD" ), cancellable = true )
36+ private void hideHud (GuiGraphicsExtractor context , CallbackInfo ci ){
37+ if (showOneBar && !MixinConfigQuery .isCompatModeEnabled ())
38+ ci .cancel ();
39+ }
40+
41+ @ Inject (method = "extractVehicleHealth" , at = @ At (value = "HEAD" ), cancellable = true )
42+ private void hideMountHealth (GuiGraphicsExtractor context , CallbackInfo ci ) {
43+ if (showOneBar && !MixinConfigQuery .isCompatModeEnabled ())
44+ ci .cancel ();
45+ oneBarElements .mountBar (getPlayerVehicleWithHealth ());
46+ }
2047
2148 @ Inject (method = "nextContextualInfoState" , at = @ At ("HEAD" ), cancellable = true )
2249 private void forceLocatorBar (CallbackInfoReturnable <ContextualInfo > cir ) {
@@ -29,7 +56,7 @@ private void forceLocatorBar(CallbackInfoReturnable<ContextualInfo> cir) {
2956 }
3057 }
3158
32- @ ModifyVariable (method = "renderSelectedItemName " , at = @ At (value = "STORE" ), ordinal = 2 )
59+ @ ModifyVariable (method = "extractSelectedItemName " , at = @ At (value = "STORE" ), name = "y" )
3360 private int renderHeldItemTooltip (int k ) {
3461 if (!showOneBar || !MixinConfigQuery .isHotbarTooltipsDown ()) {
3562 return k ;
0 commit comments