wisp-forest / owo-lib

Open ωorthωhile Operations, yes the acronym was "totally accidental"
https://modrinth.com/mod/owo-lib
MIT License
191 stars 37 forks source link

[owo-ui] Hud does not work correctly when using f1, causing hud to persist after removing them #213

Closed Zailer43 closed 7 months ago

Zailer43 commented 8 months ago

Description

Attempting to remove or add a Hud with F1 (hidden hud) causes the Hud to persist, making it so that there may be more than 1 when there should only be 1 or that there is 1 when it should be disabled.

Code

public static boolean hudActive = false;

KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("key.test", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_J, "key.category.test"));
        Identifier hudIdentifier = new Identifier("test", "test-hud");

        ClientTickEvents.END_CLIENT_TICK.register(client -> {
            if (keyBinding.wasPressed()) {

                if (hudActive) {
                    Hud.remove(hudIdentifier);
                    hudActive = false;
                } else {
                    Hud.add(hudIdentifier, () -> Containers.horizontalFlow(Sizing.fill(100), Sizing.fill(100)).surface(Surface.VANILLA_TRANSLUCENT).positioning(Positioning.relative(0, 0)));
                    hudActive = true;
                }

            }
        });

Reproduction steps

  1. Press F1 to hidde Hud
  2. Press J to active Hud
  3. Press J to desactive Hud
  4. Press F1 to enable Hud
  5. Bug, the Hud is active, if you press J again, there will be 2 Hud

Temporary solutions

If before calling Hud.remove or Hud.add you put

MinecraftClient.getInstance().options.hudHidden = false;

it will disable f1, although you can't enable it immediately afterwards since Hud works through events

Versions

owo_version=0.12.3+1.20.3 minecraft_version=1.20.4 fabric_version=0.93.1+1.20.4

gliscowo commented 7 months ago

Thanks for reporting this and bringing my attention to the Hud again - this whole pending addition/removal system was a bit... ill-guided from the start. I've made some changes in 0.12.5 (check the changelog) which should alleviate all the problems

Cheers