mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-13 16:54:22 +00:00
Optimise ForgeConfigSpec and make Range public (#9824)
Backport of #9810 to 1.20.1
This commit is contained in:
1 parent
70d700e630
commit
4f838a87d4
1 file changed
+18
-18
@@ -19,6 +19,7 @@ import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import net.minecraftforge.fml.Logging;
|
||||
@@ -49,15 +50,16 @@ import org.jetbrains.annotations.Nullable;
|
||||
*/
|
||||
public class ForgeConfigSpec extends UnmodifiableConfigWrapper<UnmodifiableConfig> implements IConfigSpec<ForgeConfigSpec>//TODO: Remove extends and pipe everything through getSpec/getValues?
|
||||
{
|
||||
private Map<List<String>, String> levelComments;
|
||||
private Map<List<String>, String> levelTranslationKeys;
|
||||
private final Map<List<String>, String> levelComments;
|
||||
private final Map<List<String>, String> levelTranslationKeys;
|
||||
|
||||
private UnmodifiableConfig values;
|
||||
private final UnmodifiableConfig values;
|
||||
private Config childConfig;
|
||||
|
||||
private boolean isCorrecting = false;
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final Pattern WINDOWS_NEWLINE = Pattern.compile("\r\n");
|
||||
|
||||
private ForgeConfigSpec(UnmodifiableConfig storage, UnmodifiableConfig values, Map<List<String>, String> levelComments, Map<List<String>, String> levelTranslationKeys) {
|
||||
super(storage);
|
||||
@@ -119,11 +121,9 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<UnmodifiableConfi
|
||||
|
||||
private void resetCaches(final Iterable<Object> configValues) {
|
||||
configValues.forEach(value -> {
|
||||
if (value instanceof ConfigValue) {
|
||||
final ConfigValue<?> configValue = (ConfigValue<?>) value;
|
||||
if (value instanceof ConfigValue<?> configValue) {
|
||||
configValue.clearCache();
|
||||
} else if (value instanceof Config) {
|
||||
final Config innerConfig = (Config) value;
|
||||
} else if (value instanceof Config innerConfig) {
|
||||
this.resetCaches(innerConfig.valueMap().values());
|
||||
}
|
||||
});
|
||||
@@ -264,10 +264,10 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<UnmodifiableConfi
|
||||
{
|
||||
if (obj1 instanceof String string1 && obj2 instanceof String string2)
|
||||
{
|
||||
if (string1.length() > 0 && string2.length() > 0)
|
||||
if (!string1.isEmpty() && !string2.isEmpty())
|
||||
{
|
||||
return string1.replaceAll("\r\n", "\n")
|
||||
.equals(string2.replaceAll("\r\n", "\n"));
|
||||
return WINDOWS_NEWLINE.matcher(string1).replaceAll("\n")
|
||||
.equals(WINDOWS_NEWLINE.matcher(string2).replaceAll("\n"));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -279,10 +279,10 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<UnmodifiableConfi
|
||||
{
|
||||
private final Config storage = Config.of(LinkedHashMap::new, InMemoryFormat.withUniversalSupport()); // Use LinkedHashMap for consistent ordering
|
||||
private BuilderContext context = new BuilderContext();
|
||||
private Map<List<String>, String> levelComments = new HashMap<>();
|
||||
private Map<List<String>, String> levelTranslationKeys = new HashMap<>();
|
||||
private List<String> currentPath = new ArrayList<>();
|
||||
private List<ConfigValue<?>> values = new ArrayList<>();
|
||||
private final Map<List<String>, String> levelComments = new HashMap<>();
|
||||
private final Map<List<String>, String> levelTranslationKeys = new HashMap<>();
|
||||
private final List<String> currentPath = new ArrayList<>();
|
||||
private final List<ConfigValue<?>> values = new ArrayList<>();
|
||||
|
||||
//Object
|
||||
public <T> ConfigValue<T> define(String path, T defaultValue) {
|
||||
@@ -366,7 +366,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<UnmodifiableConfi
|
||||
LOGGER.debug(Logging.CORE, "List on key {} is deemed to need correction. It is null, not a list, or an empty list. Modders, consider defineListAllowEmpty?", path.get(path.size() - 1));
|
||||
return getDefault();
|
||||
}
|
||||
List<?> list = Lists.newArrayList((List<?>) value);
|
||||
List<?> list = new ArrayList<>((List<?>) value);
|
||||
list.removeIf(elementValidator.negate());
|
||||
if (list.isEmpty()) {
|
||||
LOGGER.debug(Logging.CORE, "List on key {} is deemed to need correction. It failed validation.", path.get(path.size() - 1));
|
||||
@@ -394,7 +394,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<UnmodifiableConfi
|
||||
LOGGER.debug(Logging.CORE, "List on key {} is deemed to need correction, as it is null or not a list.", path.get(path.size() - 1));
|
||||
return getDefault();
|
||||
}
|
||||
List<?> list = Lists.newArrayList((List<?>) value);
|
||||
List<?> list = new ArrayList<>((List<?>) value);
|
||||
list.removeIf(elementValidator.negate());
|
||||
if (list.isEmpty()) {
|
||||
LOGGER.debug(Logging.CORE, "List on key {} is deemed to need correction. It failed validation.", path.get(path.size() - 1));
|
||||
@@ -695,7 +695,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<UnmodifiableConfi
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static class Range<V extends Comparable<? super V>> implements Predicate<Object>
|
||||
public static class Range<V extends Comparable<? super V>> implements Predicate<Object>
|
||||
{
|
||||
private final Class<? extends V> clazz;
|
||||
private final V min;
|
||||
@@ -825,7 +825,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<UnmodifiableConfi
|
||||
|
||||
public List<String> getPath()
|
||||
{
|
||||
return Lists.newArrayList(path);
|
||||
return new ArrayList<>(path);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user