From ef37f42fa392980732e24b55c50c7502f349e93f Mon Sep 17 00:00:00 2001 From: mxntal-git <98919768+mxntal-git@users.noreply.github.com> Date: Wed, 1 Jan 2025 13:22:23 -0500 Subject: [PATCH] make some renderers "class specific". only 1 class specific hud will render when editing HUD positions --- .../java/fr/alexdoru/mwe/config/MWEConfig.java | 4 ++-- .../fr/alexdoru/mwe/gui/guiapi/GuiManager.java | 17 +++++++++++++---- .../mwe/gui/guiapi/PositionEditGuiScreen.java | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/alexdoru/mwe/config/MWEConfig.java b/src/main/java/fr/alexdoru/mwe/config/MWEConfig.java index e077175b..80e78352 100644 --- a/src/main/java/fr/alexdoru/mwe/config/MWEConfig.java +++ b/src/main/java/fr/alexdoru/mwe/config/MWEConfig.java @@ -701,7 +701,7 @@ public static void onColoredLeatherArmorSetting() { public static boolean witherHUDinSidebar = true; @ConfigProperty( - category = MEGA_WALLS, subCategory = "HUD", + category = MEGA_WALLS, subCategory = "Class-Specific HUD", name = "Strength HUD", comment = "Displays the duration of the strength effect when you have it or when you are about to have it with Hunter." + " Works with Dreadlord, Herobrine, Hunter and Zombie.") @@ -715,7 +715,7 @@ public static void onStrengthHUDSetting() { } @ConfigProperty( - category = MEGA_WALLS, subCategory = "HUD", + category = MEGA_WALLS, subCategory = "Class-Specific HUD", name = "Creeper primed TNT HUD", comment = "Displays the cooldown of primed TNT when playing Creeper") public static final GuiPosition creeperTNTHUDPosition = new GuiPosition(true, 0.5d, 8d / 20d); diff --git a/src/main/java/fr/alexdoru/mwe/gui/guiapi/GuiManager.java b/src/main/java/fr/alexdoru/mwe/gui/guiapi/GuiManager.java index e04459f6..19025a5b 100644 --- a/src/main/java/fr/alexdoru/mwe/gui/guiapi/GuiManager.java +++ b/src/main/java/fr/alexdoru/mwe/gui/guiapi/GuiManager.java @@ -12,6 +12,7 @@ public final class GuiManager { private static final ArrayList registeredRenderers = new ArrayList<>(); + private static final ArrayList classSpecificRenderers = new ArrayList<>(); private static final Minecraft mc = Minecraft.getMinecraft(); public static final ArmorHUD armorHUD = new ArmorHUD(); public static final ArrowHitHUD arrowHitHUD = new ArrowHitHUD(); @@ -48,6 +49,9 @@ public final class GuiManager { registeredRenderers.add(squadHealthHUD); registeredRenderers.add(warcryHUD); registeredRenderers.trimToSize(); + classSpecificRenderers.add(creeperPrimedTntHUD); + classSpecificRenderers.add(strengthHUD); + classSpecificRenderers.trimToSize(); } /** @@ -83,13 +87,18 @@ public static IRenderer getRendererFromPosition(GuiPosition guiPosition) { return null; } - public static void renderAllDummy() { + /** + * renders the appropriate HUDs for the PositionEditGuiScreen instance + * @param c the renderer which is being positioned in the PositionEditGuiScreen + */ + public static void renderDummiesForPositionEditScreen(IRenderer c) { final ScaledResolution resolution = new ScaledResolution(mc); for (final IRenderer renderer : registeredRenderers) { - if (renderer.getGuiPosition().isEnabled()) { - renderer.getGuiPosition().updateAbsolutePosition(resolution); - renderer.renderDummy(); + if (!renderer.getGuiPosition().isEnabled() || classSpecificRenderers.contains(renderer) && !renderer.getClass().isInstance(c)) { + continue; } + renderer.getGuiPosition().updateAbsolutePosition(resolution); + renderer.renderDummy(); } } diff --git a/src/main/java/fr/alexdoru/mwe/gui/guiapi/PositionEditGuiScreen.java b/src/main/java/fr/alexdoru/mwe/gui/guiapi/PositionEditGuiScreen.java index 1ecdb3d2..ff2ddf4b 100644 --- a/src/main/java/fr/alexdoru/mwe/gui/guiapi/PositionEditGuiScreen.java +++ b/src/main/java/fr/alexdoru/mwe/gui/guiapi/PositionEditGuiScreen.java @@ -34,7 +34,7 @@ public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.renderCrosshair(); final boolean prevEnabled = this.guiPosition.isEnabled(); this.guiPosition.setEnabled(false); - GuiManager.renderAllDummy(); + GuiManager.renderDummiesForPositionEditScreen(renderer); this.guiPosition.setEnabled(prevEnabled); super.drawDefaultBackground(); renderer.renderDummy();