diff --git a/src/main/java/com/replaymod/core/SettingsRegistryBackend.java b/src/main/java/com/replaymod/core/SettingsRegistryBackend.java index 79615a8b..eb996915 100644 --- a/src/main/java/com/replaymod/core/SettingsRegistryBackend.java +++ b/src/main/java/com/replaymod/core/SettingsRegistryBackend.java @@ -2,6 +2,7 @@ package com.replaymod.core; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; @@ -164,6 +165,15 @@ class SettingsRegistryBackend { } if (value instanceof String) { category.addProperty(key.getKey(), (String) value); + if (key instanceof SettingsRegistry.MultipleChoiceSettingKey) { + @SuppressWarnings("unchecked") + List choices = ((SettingsRegistry.MultipleChoiceSettingKey) key).getChoices(); + JsonArray array = new JsonArray(); + for (String choice : choices) { + array.add(choice); + } + category.add(key.getKey() + "_valid_values", array); + } } } Gson gson = new GsonBuilder().setPrettyPrinting().create(); diff --git a/versions/1.12.2/src/main/java/com/replaymod/core/SettingsRegistryBackend.java b/versions/1.12.2/src/main/java/com/replaymod/core/SettingsRegistryBackend.java index c33727fd..41fa3211 100644 --- a/versions/1.12.2/src/main/java/com/replaymod/core/SettingsRegistryBackend.java +++ b/versions/1.12.2/src/main/java/com/replaymod/core/SettingsRegistryBackend.java @@ -1,8 +1,10 @@ package com.replaymod.core; import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.common.config.Property; import java.util.ArrayList; +import java.util.List; import java.util.Map; class SettingsRegistryBackend { @@ -36,7 +38,14 @@ class SettingsRegistryBackend { } else if (key.getDefault() instanceof Double) { value = configuration.get(key.getCategory(), key.getKey(), (Double) key.getDefault()).getDouble(); } else if (key.getDefault() instanceof String) { - value = configuration.get(key.getCategory(), key.getKey(), (String) key.getDefault()).getString(); + Property property = configuration.get(key.getCategory(), key.getKey(), (String) key.getDefault()); + value = property.getString(); + if (key instanceof SettingsRegistry.MultipleChoiceSettingKey) { + @SuppressWarnings("unchecked") + List choices = ((SettingsRegistry.MultipleChoiceSettingKey) key).getChoices(); + property.setValidValues(choices.toArray(new String[0])); + property.setComment("Valid values: " + String.join(", ", choices)); + } } else { throw new IllegalArgumentException("Default type " + key.getDefault().getClass() + " not supported."); } diff --git a/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/Patterns.java b/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/Patterns.java index cf16de42..0f8a6ff3 100644 --- a/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/Patterns.java +++ b/versions/1.12.2/src/main/java/com/replaymod/core/versions/forge/Patterns.java @@ -7,6 +7,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraftforge.client.event.GuiScreenEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderLivingEvent; +import net.minecraftforge.common.config.Property; class Patterns { @Pattern @@ -44,4 +45,13 @@ class Patterns { //$$ return event.type; //#endif } + + @Pattern + private static void setComment(Property property, String comment) { + //#if MC>=10900 + property.setComment(comment); + //#else + //$$ property.comment = comment; + //#endif + } }