From 163b1524a88aa3cdb0bc1ade0535f901fc9e4f4a Mon Sep 17 00:00:00 2001 From: JFronny Date: Thu, 10 Jun 2021 18:44:43 +0200 Subject: [PATCH] Fix enum entries --- .../respackopts/data/entry/ConfigEnumEntry.java | 11 ++++++++++- .../filters/conditions/EqualityCondition.java | 4 ++-- .../io/gitlab/jfronny/respackopts/gui/GuiFactory.java | 5 ++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/gitlab/jfronny/respackopts/data/entry/ConfigEnumEntry.java b/src/main/java/io/gitlab/jfronny/respackopts/data/entry/ConfigEnumEntry.java index 3714074..8c7438b 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/data/entry/ConfigEnumEntry.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/data/entry/ConfigEnumEntry.java @@ -37,7 +37,16 @@ public class ConfigEnumEntry extends Entry { public boolean typeMatches(Entry val) { return val instanceof ConfigEnumEntry; } - + + @Override + public void appendString(StringBuilder sb) { + sb.append(getValueName()).append('/').append(getValue()).append(" (").append(getDefaultName()).append('/').append(getDefault()).append(" of:"); + for (Map.Entry e : values.entrySet()) { + sb.append(' ').append(e.getKey()).append('/').append(e.getValue()); + } + sb.append(')'); + } + public void setFieldName(String s) { if (s != null) fieldName = s; diff --git a/src/main/java/io/gitlab/jfronny/respackopts/filters/conditions/EqualityCondition.java b/src/main/java/io/gitlab/jfronny/respackopts/filters/conditions/EqualityCondition.java index 1992457..112863b 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/filters/conditions/EqualityCondition.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/filters/conditions/EqualityCondition.java @@ -6,7 +6,7 @@ import io.gitlab.jfronny.respackopts.data.RpoError; import java.util.LinkedHashSet; import java.util.Optional; import java.util.Set; -//TODO implement equality checking for string/number variables + public class EqualityCondition implements Condition { @Override public boolean evaluate(JsonElement node) throws RpoError { @@ -15,7 +15,7 @@ public class EqualityCondition implements Condition { Optional v = Optional.empty(); for (JsonElement jsonElement : node.getAsJsonArray()) { boolean current = ConditionEvaluator.evaluate(jsonElement); - if (!v.isPresent()) + if (v.isEmpty()) v = Optional.of(current); if (current != v.get()) return false; diff --git a/src/main/java/io/gitlab/jfronny/respackopts/gui/GuiFactory.java b/src/main/java/io/gitlab/jfronny/respackopts/gui/GuiFactory.java index 00f8d6e..ba3604c 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/gui/GuiFactory.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/gui/GuiFactory.java @@ -21,7 +21,6 @@ import net.minecraft.util.Language; import java.util.Map; import java.util.Optional; -//TODO fix enums always showing "reset" and not saving/loading properly from GUI public class GuiFactory { public void buildCategory(ConfigBranch source, String screenId, JfConfigCategory config, ConfigEntryBuilder entryBuilder, String namePrefix) { String b = "respackopts.field." + screenId; @@ -43,8 +42,8 @@ public class GuiFactory { } else if (entry instanceof ConfigEnumEntry e) { config.addEntry(entryBuilder.startDropdownMenu(getText(n, b), - DropdownMenuBuilder.TopCellElementBuilder.of(e.getValueName(), LiteralText::new), - new DropdownBoxEntry.DefaultSelectionCellCreator()) + DropdownMenuBuilder.TopCellElementBuilder.of(e.getValueName(), s -> s, LiteralText::new), + new DropdownBoxEntry.DefaultSelectionCellCreator<>()) .setSuggestionMode(false) .setDefaultValue(e.getDefaultName()) .setSelections(() -> e.values.keySet().iterator())