From 9df185d076b74bb312ad8982367c87e2745a8568 Mon Sep 17 00:00:00 2001 From: ninjaguardian <110734253+ninjaguardian@users.noreply.github.com> Date: Sun, 2 Aug 2026 13:57:31 -0500 Subject: [PATCH] Improve dropdown visibility --- .../controllers/dropdown/DropdownWidget.java | 17 +++-------------- .../dev/isxander/yacl3/platform/YACLConfig.java | 8 ++++++++ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownWidget.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownWidget.java index fb7aea6c..8b99b5c0 100644 --- a/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownWidget.java +++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownWidget.java @@ -4,6 +4,7 @@ import dev.isxander.yacl3.api.utils.MutableDimension; import dev.isxander.yacl3.gui.YACLScreen; import dev.isxander.yacl3.gui.controllers.ControllerPopupWidget; +import dev.isxander.yacl3.platform.YACLConfig; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.input.CharacterEvent; @@ -58,24 +59,12 @@ public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mo if (dropdownLength() == 0) return; // Background - int x = dropdownDim.x(); - int y1 = dropdownDim.y(); - int textureWidth = dropdownDim.width(); - int textureHeight = dropdownDim.height(); - graphics.blit( - RenderPipelines.GUI_TEXTURED, - Screen.MENU_BACKGROUND, - x, y1, - 0.0f, 0.0f, - textureWidth, textureHeight, - 32, 32, - 0xFF3F3F3F - ); + graphics.fill(dropdownDim.x(), dropdownDim.y(), dropdownDim.xLimit(), dropdownDim.yLimit(), YACLConfig.HANDLER.instance().dropdownColor.getRGB()); graphics.outline(dropdownDim.x(), dropdownDim.y(), dropdownDim.width(), dropdownDim.height(), -1); // Highlight the currently selected element int y = dropdownDim.y() + 2 + entryHeight() * selectedVisibleIndex(); - graphics.fill(dropdownDim.x(), y, dropdownDim.xLimit(), y + entryHeight(), 0x7F000000); + graphics.fill(dropdownDim.x(), y, dropdownDim.xLimit(), y + entryHeight(), YACLConfig.HANDLER.instance().dropdownSelectionColor.getRGB()); graphics.outline(dropdownDim.x(), y, dropdownDim.width(), entryHeight(), -1); // Render all visible elements diff --git a/src/main/java/dev/isxander/yacl3/platform/YACLConfig.java b/src/main/java/dev/isxander/yacl3/platform/YACLConfig.java index 8d790042..024f9ad8 100644 --- a/src/main/java/dev/isxander/yacl3/platform/YACLConfig.java +++ b/src/main/java/dev/isxander/yacl3/platform/YACLConfig.java @@ -4,6 +4,8 @@ import dev.isxander.yacl3.config.v2.api.SerialEntry; import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder; +import java.awt.Color; + public class YACLConfig { public static final ConfigClassHandler HANDLER = ConfigClassHandler.createBuilder(YACLConfig.class) .id(YACLPlatform.rl("config")) @@ -18,4 +20,10 @@ public class YACLConfig { @SerialEntry(comment = "Load .webp and .gif during Minecraft resource reload instead of on-demand (can decrease startup time)") public boolean preloadComplexImageFormats = false; + + @SerialEntry(comment = "The color (and opacity) of dropdown menus") + public Color dropdownColor = new Color(20, 20, 20, 90); + + @SerialEntry(comment = "The color (and opacity) of the selected item in dropdown menus") + public Color dropdownSelectionColor = new Color(0, 0, 0, 160); }