From 174a9eb2951bfcda2234e889ce04de18e9ccfbe8 Mon Sep 17 00:00:00 2001 From: tanishisherewithhh <120117618+tanishisherewithhh@users.noreply.github.com> Date: Wed, 10 Jul 2024 22:41:29 +0530 Subject: [PATCH] Some more changes. --- .../java/dev/heliosclient/hud/HudElement.java | 1 + .../hud/hudelements/ModuleList.java | 52 +++++++++++++------ .../clickgui/hudeditor/HudEditorScreen.java | 1 + 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/main/java/dev/heliosclient/hud/HudElement.java b/src/main/java/dev/heliosclient/hud/HudElement.java index def3c9c..9e06044 100644 --- a/src/main/java/dev/heliosclient/hud/HudElement.java +++ b/src/main/java/dev/heliosclient/hud/HudElement.java @@ -482,6 +482,7 @@ public void saveSettingsToMap(Map MAP){ @Override public void loadFromFile(Map MAP) { + //Hope it saves as double and not any other. List obj = (List) MAP.get("dimensions"); this.x = MathUtils.d2iSafe(obj.get(0)); this.y = MathUtils.d2iSafe(obj.get(1)); diff --git a/src/main/java/dev/heliosclient/hud/hudelements/ModuleList.java b/src/main/java/dev/heliosclient/hud/hudelements/ModuleList.java index 78c98f6..e5d0b68 100644 --- a/src/main/java/dev/heliosclient/hud/hudelements/ModuleList.java +++ b/src/main/java/dev/heliosclient/hud/hudelements/ModuleList.java @@ -29,9 +29,6 @@ public class ModuleList extends HudElement implements Listener { public static HudElementData DATA = new HudElementData<>("Module List", "Shows enabled modules", ModuleList::new); - //Managing a structure of sorted Modules to prevent resorting them every time unless the enabled modules change. - private List sortedModules = new ArrayList<>(); - public SettingGroup sgSettings = new SettingGroup("Settings"); private final CycleSetting sort = sgSettings.add(new CycleSetting.Builder() .name("Sort") @@ -49,6 +46,13 @@ public class ModuleList extends HudElement implements Listener { .defaultValue(true) .build() ); + public RGBASetting moduleInfoColor = sgSettings.add(new RGBASetting.Builder() + .name("ModuleInfo Color") + .description("Color of the ModuleInfo text") + .defaultValue(Color.DARK_GRAY) + .onSettingChange(this) + .shouldRender(() -> moduleInfo.value) + .build()); private final BooleanSetting background = sgSettings.add(new BooleanSetting.Builder() .name("Render Module Background") .description("Renders a background behind the module name and info") @@ -168,6 +172,10 @@ public class ModuleList extends HudElement implements Listener { .build() ); private ArrayList enabledModules = ModuleManager.getEnabledModules(); + + //Managing a structure of sorted Modules to prevent resorting them every time unless the enabled modules change. + private List sortedModules = new ArrayList<>(); + private Color rainbow = new Color(255, 255, 255); private double rainbowHue1; private double rainbowHue2; @@ -179,17 +187,11 @@ public ModuleList() { this.width = 50; EventManager.register(this); addSettingGroup(sgSettings); - } @Override public void onLoad() { - } - - @Override - public void renderElement(DrawContext drawContext, TextRenderer textRenderer) { int maxWidth = 0; - // Calculate the maximum width of the module names for enabled modules only for (Module_ m : enabledModules) { if (!m.showInModulesList.value) continue; @@ -197,6 +199,11 @@ public void renderElement(DrawContext drawContext, TextRenderer textRenderer) { int nameWidth = Math.round(Renderer2D.getStringWidth(name)); maxWidth = Math.max(maxWidth, nameWidth); } + this.width = maxWidth + (sideLines.value ? 4 : 0); + } + + @Override + public void renderElement(DrawContext drawContext, TextRenderer textRenderer) { if (colorMode.getOption() == METEOR) { rainbowHue1 += rainbowSpeed.value * mc.getTickDelta(); if (rainbowHue1 > 1) rainbowHue1 -= 1; @@ -206,7 +213,6 @@ public void renderElement(DrawContext drawContext, TextRenderer textRenderer) { } // Render each module with a different color - this.width = maxWidth + (sideLines.value ? 4 : 0); int yOffset = this.y; // Start rendering from this.y for (Module_ m : enabledModules) { @@ -214,7 +220,7 @@ public void renderElement(DrawContext drawContext, TextRenderer textRenderer) { String info = m.getInfoString(); - float nameWidth = Renderer2D.getStringWidth(m.name) + ((info.isEmpty() || !moduleInfo.value) ? 0 : Renderer2D.getStringWidth(" [" + info + "]")); + float nameWidth = Renderer2D.getStringWidth(m.name) + getInfoStringWidth(info); if (colorMode.getOption() == METEOR) { rainbowHue2 += rainbowSpread.value; rainbow = new Color(Color.HSBtoRGB((float) rainbowHue2, (float) rainbowSaturation.value, (float) rainbowBrightness.value)); @@ -253,7 +259,7 @@ public void renderElement(DrawContext drawContext, TextRenderer textRenderer) { if (moduleInfo.value && !info.isEmpty()) { Renderer2D.drawString(drawContext.getMatrices(), "[" + info + "]", textX + Renderer2D.getStringWidth(m.name + " "), 1 + yOffset, - Color.DARK_GRAY.getRGB()); + moduleInfoColor.getColor().getRGB()); } @@ -263,8 +269,8 @@ public void renderElement(DrawContext drawContext, TextRenderer textRenderer) { } private Comparator getComparator() { return (m1, m2) -> { - float name1Width = Renderer2D.getStringWidth(m1.name) + ((m1.getInfoString().isEmpty() || !moduleInfo.value) ? 0 : Renderer2D.getStringWidth(" [" + m1.getInfoString() + "]")); - float name2Width = Renderer2D.getStringWidth(m2.name) + ((m2.getInfoString().isEmpty() || !moduleInfo.value) ? 0 : Renderer2D.getStringWidth(" [" + m2.getInfoString() + "]")); + float name1Width = Renderer2D.getStringWidth(m1.name) + getInfoStringWidth(m1.getInfoString()); + float name2Width = Renderer2D.getStringWidth(m2.name) + getInfoStringWidth(m2.getInfoString()); return switch ((Sort) sort.getOption()) { case Alphabetical -> m1.name.compareTo(m2.name); case Biggest -> Float.compare(name2Width, name1Width); @@ -272,12 +278,27 @@ private Comparator getComparator() { }; }; } + + private float getInfoStringWidth(String infoString){ + return (infoString.isEmpty() || !moduleInfo.value) ? 0 : Renderer2D.getStringWidth(" [" + infoString + "]"); + } + @SubscribeEvent public void update(TickEvent.CLIENT event) { enabledModules = ModuleManager.getEnabledModules(); if (!enabledModules.equals(sortedModules)) { enabledModules.sort(getComparator()); sortedModules = new ArrayList<>(enabledModules); + + int maxWidth = 0; + // Calculate the maximum width of the module names for enabled modules only + for (Module_ m : enabledModules) { + if (!m.showInModulesList.value) continue; + String name = moduleInfo.value ? m.getNameWithInfo() : m.name; + int nameWidth = Math.round(Renderer2D.getStringWidth(name)); + maxWidth = Math.max(maxWidth, nameWidth); + } + this.width = maxWidth + (sideLines.value ? 4 : 0); } } @@ -295,7 +316,4 @@ public enum GlowMode { LOW_BG_ALPHA, NORMAL } - - - } diff --git a/src/main/java/dev/heliosclient/ui/clickgui/hudeditor/HudEditorScreen.java b/src/main/java/dev/heliosclient/ui/clickgui/hudeditor/HudEditorScreen.java index 8071df4..da1da7f 100644 --- a/src/main/java/dev/heliosclient/ui/clickgui/hudeditor/HudEditorScreen.java +++ b/src/main/java/dev/heliosclient/ui/clickgui/hudeditor/HudEditorScreen.java @@ -57,6 +57,7 @@ public void render(DrawContext drawContext, int mouseX, int mouseY, float delta) if (HeliosClient.CLICKGUI.ScreenHelp.value) { float fontHeight = Renderer2D.getCustomStringHeight(FontRenderers.Super_Small_fxfontRenderer); + FontRenderers.Super_Small_fxfontRenderer.drawString(drawContext.getMatrices(), "Ctrl- C/V - To Copy/Paste HudElement properties", 2, drawContext.getScaledWindowHeight() - (5 * fontHeight) - 5 * 2, -1); FontRenderers.Super_Small_fxfontRenderer.drawString(drawContext.getMatrices(), "Left Click - Select Element", 2, drawContext.getScaledWindowHeight() - (4 * fontHeight) - 4 * 2, -1); FontRenderers.Super_Small_fxfontRenderer.drawString(drawContext.getMatrices(), "Right Click - Open Settings", 2, drawContext.getScaledWindowHeight() - (3 * fontHeight) - 3 * 2, -1); FontRenderers.Super_Small_fxfontRenderer.drawString(drawContext.getMatrices(), "Delete / Backspace - Remove Element", 2, drawContext.getScaledWindowHeight() - (2 * fontHeight) - 2 * 2, -1);