Merge pull request #97 from Jaffe2718/architectury-1.21.4

1.7.2-rc.1
This commit is contained in:
Martin Prokoph
2025-04-14 16:39:58 +02:00
committed by GitHub
4 changed files with 21 additions and 20 deletions

View File

@@ -74,12 +74,12 @@ public abstract class MidnightConfig {
} }
public void setValue(Object value) { public void setValue(Object value) {
if (this.field.getType() != List.class) { this.value = value; if (this.field.getType() != List.class) { this.value = value;
this.tempValue = value.toString(); this.tempValue = value == null ? "" : value.toString(); // fix bug+: illegal Identifier cannot input character
} else { writeList(this.listIndex, value); } else { writeList(this.listIndex, value);
this.tempValue = toTemporaryValue(); } this.tempValue = toTemporaryValue(); }
} }
public String toTemporaryValue() { public String toTemporaryValue() {
if (this.field.getType() != List.class) return this.value.toString(); if (this.field.getType() != List.class) return this.value == null ? "" : this.value.toString(); // fix bug+: illegal Identifier cannot input character
else try { return ((List<?>) this.value).get(this.listIndex).toString(); } catch (Exception ignored) {return "";} else try { return ((List<?>) this.value).get(this.listIndex).toString(); } catch (Exception ignored) {return "";}
} }
public void updateFieldValue() { public void updateFieldValue() {
@@ -97,7 +97,7 @@ public abstract class MidnightConfig {
this.conditionsMet = false; this.conditionsMet = false;
String requiredOption = condition.requiredOption().contains(":") ? condition.requiredOption() : (this.modid + ":" + condition.requiredOption()); String requiredOption = condition.requiredOption().contains(":") ? condition.requiredOption() : (this.modid + ":" + condition.requiredOption());
if (entries.get(requiredOption) instanceof EntryInfo info) if (entries.get(requiredOption) instanceof EntryInfo info)
this.conditionsMet &= condition.requiredValue().equals(info.tempValue); this.conditionsMet &= List.of(condition.requiredValue()).contains(info.tempValue);
if (!this.conditionsMet) break; if (!this.conditionsMet) break;
} }
if (prevConditionState != this.conditionsMet) reloadScreen = true; if (prevConditionState != this.conditionsMet) reloadScreen = true;
@@ -215,7 +215,11 @@ public abstract class MidnightConfig {
b.active = entries.values().stream().allMatch(e -> e.inLimits); b.active = entries.values().stream().allMatch(e -> e.inLimits);
if (inLimits) { if (inLimits) {
if (info.dataType == Identifier.class) info.setValue(Identifier.tryParse(s)); if (info.dataType == Identifier.class) { // avoid the crash due to Identifier syntax not legitimate
Identifier id = Identifier.tryParse(s);
if (id == null) return false;
info.setValue(id);
}
else info.setValue(isNumber ? value : s); else info.setValue(isNumber ? value : s);
} }
@@ -296,7 +300,7 @@ public abstract class MidnightConfig {
if (entry.buttons.get(0) instanceof ClickableWidget widget) if (entry.buttons.get(0) instanceof ClickableWidget widget)
if (widget.isFocused() || widget.isHovered()) widget.setTooltip(getTooltip(entry.info, true)); if (widget.isFocused() || widget.isHovered()) widget.setTooltip(getTooltip(entry.info, true));
if (entry.buttons.get(1) instanceof ButtonWidget button) if (entry.buttons.get(1) instanceof ButtonWidget button)
button.active = !Objects.equals(entry.info.value.toString(), entry.info.defaultValue.toString()); button.active = !Objects.equals(String.valueOf(entry.info.value), String.valueOf(entry.info.defaultValue));
}}}} }}}}
@Override @Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) { public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
@@ -354,17 +358,15 @@ public abstract class MidnightConfig {
if (info.function != null) { if (info.function != null) {
ClickableWidget widget; ClickableWidget widget;
Entry e = info.entry; Entry e = info.entry;
if (info.function instanceof Map.Entry) { // Enums & booleans if (info.function instanceof Map.Entry) { // Enums & booleans
var values = (Map.Entry<ButtonWidget.PressAction, Function<Object, Text>>) info.function; var values = (Map.Entry<ButtonWidget.PressAction, Function<Object, Text>>) info.function;
if (info.dataType.isEnum()) if (info.dataType.isEnum())
values.setValue(value -> Text.translatable(translationPrefix + "enum." + info.dataType.getSimpleName() + "." + info.value.toString())); values.setValue(value -> Text.translatable(translationPrefix + "enum." + info.dataType.getSimpleName() + "." + info.value.toString()));
widget = ButtonWidget.builder(values.getValue().apply(info.value), values.getKey()).dimensions(width - 185, 0, 150, 20).tooltip(getTooltip(info, true)).build(); widget = ButtonWidget.builder(values.getValue().apply(info.value), values.getKey()).dimensions(width - 185, 0, 150, 20).tooltip(getTooltip(info, true)).build();
} } else if (e.isSlider())
else if (e.isSlider())
widget = new MidnightSliderWidget(width - 185, 0, 150, 20, Text.of(info.tempValue), (Double.parseDouble(info.tempValue) - e.min()) / (e.max() - e.min()), info); widget = new MidnightSliderWidget(width - 185, 0, 150, 20, Text.of(info.tempValue), (Double.parseDouble(info.tempValue) - e.min()) / (e.max() - e.min()), info);
else widget = new TextFieldWidget(textRenderer, width - 185, 0, 150, 20, Text.empty()); else
widget = new TextFieldWidget(textRenderer, width - 185, 0, 150, 20, Text.empty());
if (widget instanceof TextFieldWidget textField) { if (widget instanceof TextFieldWidget textField) {
textField.setMaxLength(e.width()); textField.setText(info.tempValue); textField.setMaxLength(e.width()); textField.setText(info.tempValue);
Predicate<String> processor = ((BiFunction<TextFieldWidget, ButtonWidget, Predicate<String>>) info.function).apply(textField, done); Predicate<String> processor = ((BiFunction<TextFieldWidget, ButtonWidget, Predicate<String>>) info.function).apply(textField, done);
@@ -589,7 +591,7 @@ public abstract class MidnightConfig {
public @interface Condition { public @interface Condition {
String requiredModId() default ""; String requiredModId() default "";
String requiredOption() default ""; String requiredOption() default "";
String requiredValue() default "true"; String[] requiredValue() default {"true"};
boolean visibleButLocked() default false; boolean visibleButLocked() default false;
} }

View File

@@ -6,7 +6,7 @@ yarn_mappings=1.21.4+build.1
enabled_platforms=fabric,neoforge enabled_platforms=fabric,neoforge
archives_base_name=midnightlib archives_base_name=midnightlib
mod_version=1.7.1 mod_version=1.7.2-rc.1
maven_group=eu.midnightdust maven_group=eu.midnightdust
release_type=release release_type=release
curseforge_id=488090 curseforge_id=488090

View File

@@ -74,7 +74,7 @@ public class MidnightConfigExample extends MidnightConfig {
@Entry(category = CONDITIONS, name="Turn me on!") @Entry(category = CONDITIONS, name="Turn me on!")
public static boolean turnMeOn = false; public static boolean turnMeOn = false;
@Condition(requiredOption = "modid:turnMeOn", visibleButLocked = true) @Condition(requiredOption = "modid:turnMeOn", visibleButLocked = true)
@Entry(category = CONDITIONS, name="Turn me off (locked if modid:turnMeOn is false)!") @Entry(category = CONDITIONS, name="Turn me off (locked)!")
public static Boolean turnMeOff = true; public static Boolean turnMeOff = true;
@Condition(requiredOption = "turnMeOn") // You can also use multiple conditions for the same entry @Condition(requiredOption = "turnMeOn") // You can also use multiple conditions for the same entry
@Condition(requiredOption = "modid:turnMeOff", requiredValue = "false") @Condition(requiredOption = "modid:turnMeOff", requiredValue = "false")
@@ -101,6 +101,12 @@ public class MidnightConfigExample extends MidnightConfig {
@Comment(category = CONDITIONS, name="⭐ Correct! Quilt (and Fabric) are the best!", centered = true) @Comment(category = CONDITIONS, name="⭐ Correct! Quilt (and Fabric) are the best!", centered = true)
public static Comment answerQuilt; public static Comment answerQuilt;
@Entry(category = CONDITIONS, name="Enter any prime number below 10")
public static int primeNumber = 0;
@Comment(category = CONDITIONS, name="Correct!")
@Condition(requiredOption = "primeNumber", requiredValue = {"2", "3", "5", "7"})
public static Comment answerPrime;
@Condition(requiredOption = "midnightlib:config_screen_list", requiredValue = "FALSE") // Access options of other mods that are also using MidnightLib @Condition(requiredOption = "midnightlib:config_screen_list", requiredValue = "FALSE") // Access options of other mods that are also using MidnightLib
@Comment(category = CONDITIONS) public static Comment spaceracer; @Comment(category = CONDITIONS) public static Comment spaceracer;
@Condition(requiredOption = "midnightlib:config_screen_list", requiredValue = "FALSE") @Condition(requiredOption = "midnightlib:config_screen_list", requiredValue = "FALSE")

View File

@@ -11,13 +11,6 @@
"modid.midnightconfig.hello":"I am a limited int!", "modid.midnightconfig.hello":"I am a limited int!",
"modid.midnightconfig.id":"I am an Item Identifier!", "modid.midnightconfig.id":"I am an Item Identifier!",
"modid.midnightconfig.modPlatform":"I am an enum!", "modid.midnightconfig.modPlatform":"I am an enum!",
"modid.midnightconfig.enum.Arch.X86":"X86",
"modid.midnightconfig.enum.Arch.X86_64":"X86_64",
"modid.midnightconfig.enum.Arch.AARCH64":"AARCH64",
"modid.midnightconfig.enum.Arch.RISCV64":"RISCV64",
"modid.midnightconfig.enum.OS.LINUX":"Linux",
"modid.midnightconfig.enum.OS.WINDOWS":"Windows",
"modid.midnightconfig.enum.OS.MAC":"MacOS",
"modid.midnightconfig.enum.ModPlatform.FORGE":"Forge", "modid.midnightconfig.enum.ModPlatform.FORGE":"Forge",
"modid.midnightconfig.enum.ModPlatform.FABRIC":"Fabric", "modid.midnightconfig.enum.ModPlatform.FABRIC":"Fabric",
"modid.midnightconfig.enum.ModPlatform.QUILT":"Quilt", "modid.midnightconfig.enum.ModPlatform.QUILT":"Quilt",