diff --git a/src/main/java/mod/acgaming/universaltweaks/config/UTConfigTweaks.java b/src/main/java/mod/acgaming/universaltweaks/config/UTConfigTweaks.java index 8ff33476d..68fc972dd 100644 --- a/src/main/java/mod/acgaming/universaltweaks/config/UTConfigTweaks.java +++ b/src/main/java/mod/acgaming/universaltweaks/config/UTConfigTweaks.java @@ -1968,7 +1968,6 @@ public static class MiscCategory @Config.Comment("Sets the default difficulty for newly generated worlds") public EnumDifficulty utDefaultDifficulty = EnumDifficulty.NORMAL; - @Config.RequiresMcRestart @Config.Name("Default GUI Text Color") @Config.Comment @@ -1978,6 +1977,16 @@ public static class MiscCategory }) public String utDefaultGuiTextColor = "404040"; + @Config.RequiresMcRestart + @Config.Name("Default GUI Button Color") + @Config.Comment + ({ + "Sets the default GUI button text color (HEX RGB code) which can improve readability in dark mode resource packs", + "Formatted in normal|hovered|disabled", + "E0E0E0|FFFFA0|A0A0A0 for vanilla default" + }) + public String utDefaultGuiButtonColor = "E0E0E0|FFFFA0|A0A0A0"; + @Config.RequiresMcRestart @Config.Name("Disable Advancements") @Config.Comment("Prevents the advancement system from loading entirely") @@ -1998,6 +2007,11 @@ public static class MiscCategory @Config.Comment("Disables all text shadowing, where text has a darker version of itself rendered behind the normal text, changing the appearance and can improve fps on some screens") public boolean utDisableTextShadow = false; + @Config.RequiresMcRestart + @Config.Name("Text Field Border Color") + @Config.Comment("Colors the border of focused text fields white") + public boolean utTextFieldBorderColor = true; + @Config.RequiresMcRestart @Config.Name("End Portal Parallax") @Config.Comment("Re-implements parallax rendering of the end portal from 1.10 and older") diff --git a/src/main/java/mod/acgaming/universaltweaks/core/UTLoadingPlugin.java b/src/main/java/mod/acgaming/universaltweaks/core/UTLoadingPlugin.java index 7a5cbf814..e0e3b3cfd 100644 --- a/src/main/java/mod/acgaming/universaltweaks/core/UTLoadingPlugin.java +++ b/src/main/java/mod/acgaming/universaltweaks/core/UTLoadingPlugin.java @@ -272,7 +272,7 @@ public class UTLoadingPlugin implements IFMLLoadingPlugin, IEarlyMixinLoader put("mixins/tweaks/mixins.misc.credits.json", c -> UTConfigTweaks.MISC.utSkipCreditsToggle); put("mixins/tweaks/mixins.misc.glint.enchantedbook.json", c -> UTConfigTweaks.MISC.utDisableEnchantmentBookGlint); put("mixins/tweaks/mixins.misc.glint.potion.json", c -> UTConfigTweaks.MISC.utDisablePotionGlint); - put("mixins/tweaks/mixins.misc.gui.defaultguitextcolor.json", c -> !UTConfigTweaks.MISC.utDefaultGuiTextColor.equals("404040")); + put("mixins/tweaks/mixins.misc.gui.defaultguicolors.json", c -> !UTConfigTweaks.MISC.utDefaultGuiTextColor.equals("404040") || !UTConfigTweaks.MISC.utDefaultGuiButtonColor.equals("E0E0E0|FFFFA0|A0A0A0")); put("mixins/tweaks/mixins.misc.gui.gamewindow.icon.json", c -> !c.inDev() && !UTConfigTweaks.MISC.GAME_WINDOW.utGameWindowIcon16.isEmpty() && !UTConfigTweaks.MISC.GAME_WINDOW.utGameWindowIcon32.isEmpty() && !UTConfigTweaks.MISC.GAME_WINDOW.utGameWindowIcon256.isEmpty()); put("mixins/tweaks/mixins.misc.gui.gamewindow.title.json", c -> !c.inDev() && !UTConfigTweaks.MISC.GAME_WINDOW.utGameWindowDisplayTitle.isEmpty()); put("mixins/tweaks/mixins.misc.gui.keybindlistentry.json", c -> UTConfigTweaks.MISC.utPreventKeybindingEntryOverflow); @@ -283,6 +283,7 @@ public class UTLoadingPlugin implements IFMLLoadingPlugin, IEarlyMixinLoader put("mixins/tweaks/mixins.misc.gui.potionduration.json", c -> UTConfigTweaks.MISC.utPotionDurationToggle); put("mixins/tweaks/mixins.misc.gui.selecteditemtooltip.json", c -> UTConfigTweaks.MISC.utSelectedItemTooltipHeight != 59); put("mixins/tweaks/mixins.misc.gui.textshadow.json", c -> UTConfigTweaks.MISC.utDisableTextShadow); + put("mixins/tweaks/mixins.misc.gui.textfield.json", c -> UTConfigTweaks.MISC.utTextFieldBorderColor); put("mixins/tweaks/mixins.misc.hotbarscroll.json", c -> UTConfigTweaks.MISC.utDisableHotbarScrollWrapping); put("mixins/tweaks/mixins.misc.lightning.flash.json", c -> UTConfigTweaks.MISC.LIGHTNING.utLightningFlashToggle); put("mixins/tweaks/mixins.misc.gui.mainmenu.json", c -> UTConfigTweaks.MISC.utReturnToMainMenu); diff --git a/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTDefaultGuiColors.java b/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTDefaultGuiColors.java new file mode 100644 index 000000000..14270e65b --- /dev/null +++ b/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTDefaultGuiColors.java @@ -0,0 +1,45 @@ +package mod.acgaming.universaltweaks.tweaks.misc.gui.mixin; + +import net.minecraft.client.gui.FontRenderer; + +import mod.acgaming.universaltweaks.config.UTConfigTweaks; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +// Courtesy of youyihj +@Mixin(FontRenderer.class) +public class UTDefaultGuiColors +{ + @ModifyVariable(method = "drawString(Ljava/lang/String;FFIZ)I", at = @At("HEAD"), argsOnly = true) + private int utSetDefaultGuiColors(int color) + { + switch (color) + { + case 0x404040: + return utParseColor(UTConfigTweaks.MISC.utDefaultGuiTextColor, color); + case 0xE0E0E0: + case 0xFFFFA0: + case 0xA0A0A0: + String[] buttonColors = UTConfigTweaks.MISC.utDefaultGuiButtonColor.split("\\|"); + int index = color == 0xE0E0E0 ? 0 : color == 0xFFFFA0 ? 1 : 2; + return buttonColors.length > index ? utParseColor(buttonColors[index], color) : color; + default: + return color; + } + } + + @Unique + private static int utParseColor(String hex, int fallback) + { + try + { + return Integer.parseInt(hex.trim(), 16); + } + catch (NumberFormatException e) + { + return fallback; + } + } +} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTDefaultGuiTextColor.java b/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTDefaultGuiTextColor.java deleted file mode 100644 index 5a1bb2339..000000000 --- a/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTDefaultGuiTextColor.java +++ /dev/null @@ -1,19 +0,0 @@ -package mod.acgaming.universaltweaks.tweaks.misc.gui.mixin; - -import net.minecraft.client.gui.FontRenderer; - -import mod.acgaming.universaltweaks.config.UTConfigTweaks; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyVariable; - -// Courtesy of youyihj -@Mixin(FontRenderer.class) -public class UTDefaultGuiTextColor -{ - @ModifyVariable(method = "drawString(Ljava/lang/String;FFIZ)I", at = @At("HEAD"), argsOnly = true) - private int utSetDefaultGuiTextColor(int color) - { - return color == 0x404040 ? Integer.parseInt(UTConfigTweaks.MISC.utDefaultGuiTextColor, 16) : color; - } -} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTTextFieldBorderColor.java b/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTTextFieldBorderColor.java new file mode 100644 index 000000000..b420de8bd --- /dev/null +++ b/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/gui/mixin/UTTextFieldBorderColor.java @@ -0,0 +1,20 @@ +package mod.acgaming.universaltweaks.tweaks.misc.gui.mixin; + +import net.minecraft.client.gui.GuiTextField; + +import mod.acgaming.universaltweaks.config.UTConfigTweaks; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +@Mixin(GuiTextField.class) +public abstract class UTTextFieldBorderColor +{ + @ModifyConstant(method = "drawTextBox", constant = @Constant(intValue = 0xFFA0A0A0)) + private int utFocusedBorderColor(int constant) + { + if (!UTConfigTweaks.MISC.utTextFieldBorderColor) return constant; + GuiTextField self = (GuiTextField) (Object) this; + return self.isFocused() ? 0xFFFFFFFF : constant; + } +} \ No newline at end of file diff --git a/src/main/resources/mixins/tweaks/mixins.misc.gui.defaultguitextcolor.json b/src/main/resources/mixins/tweaks/mixins.misc.gui.defaultguicolors.json similarity index 81% rename from src/main/resources/mixins/tweaks/mixins.misc.gui.defaultguitextcolor.json rename to src/main/resources/mixins/tweaks/mixins.misc.gui.defaultguicolors.json index 2b95dc54a..556d6ee61 100644 --- a/src/main/resources/mixins/tweaks/mixins.misc.gui.defaultguitextcolor.json +++ b/src/main/resources/mixins/tweaks/mixins.misc.gui.defaultguicolors.json @@ -3,5 +3,5 @@ "refmap": "universaltweaks.refmap.json", "minVersion": "0.8", "compatibilityLevel": "JAVA_8", - "client": ["UTDefaultGuiTextColor"] + "client": ["UTDefaultGuiColors"] } \ No newline at end of file diff --git a/src/main/resources/mixins/tweaks/mixins.misc.gui.textfield.json b/src/main/resources/mixins/tweaks/mixins.misc.gui.textfield.json new file mode 100644 index 000000000..059154e03 --- /dev/null +++ b/src/main/resources/mixins/tweaks/mixins.misc.gui.textfield.json @@ -0,0 +1,7 @@ +{ + "package": "mod.acgaming.universaltweaks.tweaks.misc.gui.mixin", + "refmap": "universaltweaks.refmap.json", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": ["UTTextFieldBorderColor"] +} \ No newline at end of file