diff --git a/src/main/java/org/polyfrost/glintcolorizer/mixin/oneconfig/ConfigMixin.java b/src/main/java/org/polyfrost/glintcolorizer/mixin/oneconfig/ConfigMixin.java index 99bfa71..278756d 100644 --- a/src/main/java/org/polyfrost/glintcolorizer/mixin/oneconfig/ConfigMixin.java +++ b/src/main/java/org/polyfrost/glintcolorizer/mixin/oneconfig/ConfigMixin.java @@ -17,7 +17,6 @@ import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.HashMap; @Mixin(value = Config.class, remap = false) public class ConfigMixin { @@ -36,18 +35,41 @@ private void capture(Object instance, Class targetClass, OptionPage page, Mod @ModifyVariable(method = "generateOptionList(Ljava/lang/Object;Ljava/lang/Class;Lcc/polyfrost/oneconfig/config/elements/OptionPage;Lcc/polyfrost/oneconfig/config/data/Mod;Z)V", at = @At(value = "LOAD", ordinal = 0), name = "field") private Field generate(Field field) { if (field.isAnnotationPresent(ColorEntry.class)) { - addOptions(page, field, instance); + glintColorizer$addOptions(page, field, instance); } return field; } @Unique - private void addOptions(OptionPage page, Field field, Object instance) { + private void glintColorizer$addOptions(OptionPage page, Field field, Object instance) { ColorEntry annotation = field.getAnnotation(ColorEntry.class); ColorSettings colorSettings = (ColorSettings) ConfigUtils.getField(field, instance); + BasicOption strokeOne = null; + BasicOption strokeTwo = null; + BasicOption individualStrokes = null; for (BasicOption option : glintColorizer$getClassOptions(colorSettings)) { + if (option.getField().getName().equals("strokeOneColor")) strokeOne = option; + if (option.getField().getName().equals("strokeTwoColor")) strokeTwo = option; + if (option.getField().getName().equals("individualStrokes")) individualStrokes = option; ConfigUtils.getSubCategory(page, annotation.category(), option.subcategory).options.add(option); } + if (strokeOne != null && strokeTwo != null && individualStrokes != null) { + BasicOption finalIndividualStrokes = individualStrokes; + strokeOne.addDependency(individualStrokes.name, () -> { + try { + return (boolean) finalIndividualStrokes.get(); + } catch (IllegalAccessException ignored) { + return true; + } + }); + strokeTwo.addDependency(individualStrokes.name, () -> { + try { + return (boolean) finalIndividualStrokes.get(); + } catch (IllegalAccessException ignored) { + return true; + } + }); + } } @Unique