|
8 | 8 | import lombok.NoArgsConstructor;
|
9 | 9 | import lombok.val;
|
10 | 10 | import lombok.var;
|
11 |
| -import net.minecraft.launchwrapper.Launch; |
12 | 11 | import net.minecraftforge.common.MinecraftForge;
|
13 | 12 | import net.minecraftforge.common.config.Configuration;
|
14 |
| -import net.minecraftforge.common.config.Property; |
15 | 13 |
|
16 | 14 | import java.nio.file.Path;
|
17 | 15 | import java.util.*;
|
| 16 | +import java.util.regex.Pattern; |
18 | 17 |
|
19 | 18 | /**
|
20 | 19 | * Class for controlling the loading of configuration files.
|
@@ -86,27 +85,25 @@ private static void processConfig(Class<?> configClass) throws IllegalAccessExce
|
86 | 85 | val name = Optional.ofNullable(field.getAnnotation(Config.Name.class)).map(Config.Name::value).orElse(field.getName());
|
87 | 86 | val langKey = Optional.ofNullable(field.getAnnotation(Config.LangKey.class)).map(Config.LangKey::value).orElse(name);
|
88 | 87 | var boxed = false;
|
89 |
| - Property prop = cat.get(name); |
90 |
| - prop.comment = comment; |
91 |
| - prop.setLanguageKey(langKey); |
92 |
| - if ((boxed = field.getType().equals(Integer.class)) || field.getType().equals(int.class)) { |
| 88 | + if ((boxed = field.getType().equals(Boolean.class)) || field.getType().equals(boolean.class)) { |
| 89 | + val defaultValue = Optional.ofNullable(field.getAnnotation(Config.DefaultBoolean.class)).map(Config.DefaultBoolean::value).orElse(boxed ? (Boolean) field.get(null) : field.getBoolean(null)); |
| 90 | + field.setBoolean(null, rawConfig.getBoolean(name, category, defaultValue, comment, langKey)); |
| 91 | + } else if ((boxed = field.getType().equals(Integer.class)) || field.getType().equals(int.class)) { |
93 | 92 | val range = Optional.ofNullable(field.getAnnotation(Config.RangeInt.class));
|
94 |
| - prop.setMinValue(range.map(Config.RangeInt::min).orElse(Integer.MIN_VALUE)); |
95 |
| - prop.setMaxValue(range.map(Config.RangeInt::max).orElse(Integer.MAX_VALUE)); |
96 |
| - prop.setDefaultValue(Optional.ofNullable(field.getAnnotation(Config.DefaultInt.class)).map(Config.DefaultInt::value).orElse(boxed ? (Integer)field.get(null) : field.getInt(null))); |
97 |
| - field.setInt(null, prop.getInt()); |
98 |
| - } else if ((boxed = field.getType().equals(Double.class)) || field.getType().equals(double.class)) { |
99 |
| - val range = Optional.ofNullable(field.getAnnotation(Config.RangeDouble.class)); |
100 |
| - prop.setMinValue(range.map(Config.RangeDouble::min).orElse(Double.MIN_VALUE)); |
101 |
| - prop.setMaxValue(range.map(Config.RangeDouble::max).orElse(Double.MAX_VALUE)); |
102 |
| - prop.setDefaultValue(Optional.ofNullable(field.getAnnotation(Config.DefaultDouble.class)).map(Config.DefaultDouble::value).orElse(boxed ? (Double) field.get(null) : field.getDouble(null))); |
103 |
| - field.setDouble(null, prop.getDouble()); |
104 |
| - } else if ((boxed = field.getType().equals(Boolean.class)) || field.getType().equals(boolean.class)) { |
105 |
| - prop.setDefaultValue(boxed ? (Boolean)field.get(null) : field.getBoolean(null)); |
106 |
| - field.setBoolean(null, prop.getBoolean()); |
| 93 | + val min = range.map(Config.RangeInt::min).orElse(Integer.MIN_VALUE); |
| 94 | + val max = range.map(Config.RangeInt::max).orElse(Integer.MAX_VALUE); |
| 95 | + val defaultValue = Optional.ofNullable(field.getAnnotation(Config.DefaultInt.class)).map(Config.DefaultInt::value).orElse(boxed ? (Integer)field.get(null) : field.getInt(null)); |
| 96 | + field.setInt(null, rawConfig.getInt(name, category, defaultValue, min, max, comment, langKey)); |
| 97 | + } else if ((boxed = field.getType().equals(Float.class)) || field.getType().equals(float.class)) { |
| 98 | + val range = Optional.ofNullable(field.getAnnotation(Config.RangeFloat.class)); |
| 99 | + val min = range.map(Config.RangeFloat::min).orElse(Float.MIN_VALUE); |
| 100 | + val max = range.map(Config.RangeFloat::max).orElse(Float.MAX_VALUE); |
| 101 | + val defaultValue = Optional.ofNullable(field.getAnnotation(Config.DefaultFloat.class)).map(Config.DefaultFloat::value).orElse(boxed ? (Float) field.get(null) : field.getFloat(null)); |
| 102 | + field.setDouble(null, rawConfig.getFloat(name, category, defaultValue, min, max, comment, langKey)); |
107 | 103 | } else if (field.getType().equals(String.class)) {
|
108 |
| - prop.setDefaultValue((String)field.get(null)); |
109 |
| - field.set(null, prop.getString()); |
| 104 | + val defaultValue = Optional.ofNullable(field.getAnnotation(Config.DefaultString.class)).map(Config.DefaultString::value).orElse((String)field.get(null)); |
| 105 | + val pattern = Optional.ofNullable(field.getAnnotation(Config.Pattern.class)).map(Config.Pattern::value).map(Pattern::compile).orElse(null); |
| 106 | + field.set(null, rawConfig.getString(name, category, defaultValue, comment, langKey, pattern)); |
110 | 107 | }
|
111 | 108 | if (field.isAnnotationPresent(Config.RequiresMcRestart.class)) {
|
112 | 109 | cat.setRequiresMcRestart(true);
|
|
0 commit comments