diff --git a/src/main/java/team/creative/creativecore/client/gui/registry/GuiClientRegistry.java b/src/main/java/team/creative/creativecore/client/gui/registry/GuiClientRegistry.java index 793f848a..da168cb2 100644 --- a/src/main/java/team/creative/creativecore/client/gui/registry/GuiClientRegistry.java +++ b/src/main/java/team/creative/creativecore/client/gui/registry/GuiClientRegistry.java @@ -44,6 +44,7 @@ import team.creative.creativecore.client.gui.control.simple.GuiClientCheckButtonIcon; import team.creative.creativecore.client.gui.control.simple.GuiClientColorPlate; import team.creative.creativecore.client.gui.control.simple.GuiClientColoredSteppedSlider; +import team.creative.creativecore.client.gui.control.simple.GuiClientHexButton; import team.creative.creativecore.client.gui.control.simple.GuiClientIcon; import team.creative.creativecore.client.gui.control.simple.GuiClientLabel; import team.creative.creativecore.client.gui.control.simple.GuiClientLabelHover; @@ -98,6 +99,7 @@ import team.creative.creativecore.common.gui.control.simple.GuiButtonIcon; import team.creative.creativecore.common.gui.control.simple.GuiCheckBox; import team.creative.creativecore.common.gui.control.simple.GuiCheckButtonIcon; +import team.creative.creativecore.common.gui.control.simple.GuiColorPicker; import team.creative.creativecore.common.gui.control.simple.GuiColorPlate; import team.creative.creativecore.common.gui.control.simple.GuiColoredSteppedSlider; import team.creative.creativecore.common.gui.control.simple.GuiIcon; @@ -202,6 +204,7 @@ public static void registerSpecial(Function factor register(GuiShowItem.class, GuiClientShowItem::new); register(GuiStateButton.class, GuiClientStateButton::new); register(GuiStateButtonIcon.class, GuiClientStateButtonIcon::new); + register(GuiColorPicker.GuiHexButton.class, GuiClientHexButton::new); register(GuiPanel.class, GuiClientPanel::new); register(GuiScrollX.class, GuiClientScrollX::new); diff --git a/src/main/java/team/creative/creativecore/common/config/converation/ConfigTypeConveration.java b/src/main/java/team/creative/creativecore/common/config/converation/ConfigTypeConveration.java index 3aeabbc0..bf60f505 100644 --- a/src/main/java/team/creative/creativecore/common/config/converation/ConfigTypeConveration.java +++ b/src/main/java/team/creative/creativecore/common/config/converation/ConfigTypeConveration.java @@ -52,6 +52,7 @@ import team.creative.creativecore.common.gui.GuiParent; import team.creative.creativecore.common.gui.control.collection.GuiComboBox; import team.creative.creativecore.common.gui.control.simple.GuiButton; +import team.creative.creativecore.common.gui.control.simple.GuiColorPicker; import team.creative.creativecore.common.gui.control.simple.GuiLabel; import team.creative.creativecore.common.gui.control.simple.GuiSlider; import team.creative.creativecore.common.gui.control.simple.GuiTextfield; @@ -61,6 +62,7 @@ import team.creative.creativecore.common.util.math.matrix.IntMatrix3; import team.creative.creativecore.common.util.math.matrix.IntMatrix3c; import team.creative.creativecore.common.util.text.TextMapBuilder; +import team.creative.creativecore.common.util.type.Color; import team.creative.creativecore.common.util.type.list.PairList; public abstract class ConfigTypeConveration { @@ -328,7 +330,42 @@ public Identifier set(ConfigKey key, Identifier value) { }); registerTypeCreator(Identifier.class, () -> Identifier.withDefaultNamespace("")); - + ConfigTypeConveration.registerType(Color.class, new SimpleConfigTypeConveration() { + + @Override + public Color readElement(ConfigKey key, Color defaultValue, Side side, JsonElement element) { + if (element.isJsonPrimitive() && element.getAsJsonPrimitive().isNumber()) + return new Color(element.getAsInt()); + return defaultValue; + } + + @Override + public JsonElement writeElement(Color value, ConfigKey key, Side side) { + return new JsonPrimitive(value.toInt()); + } + + public void createControls(GuiParent parent, ConfigKey key) { + parent.add(new GuiColorPicker(parent, "color", new Color(), true, 0)); + } + + public void loadValue(Color value, GuiParent parent) { + GuiColorPicker picker = parent.get("color"); + picker.setColor(value); + } + + protected Color saveValue(GuiParent parent, ConfigKey key) { + GuiColorPicker picker = parent.get("color"); + return new Color(picker.color); + } + + @Override + public Color set(ConfigKey key, Color value) { + return value; + } + }); + + ConfigTypeConveration.registerTypeCreator(Color.class, () -> new Color()); + registerType(SoundConfig.class, new ConfigTypeConveration() { @Override