diff --git a/src/main/java/net/minecraftforge/common/ForgeConfigSpec.java b/src/main/java/net/minecraftforge/common/ForgeConfigSpec.java index c86050d71f..513f58c40d 100644 --- a/src/main/java/net/minecraftforge/common/ForgeConfigSpec.java +++ b/src/main/java/net/minecraftforge/common/ForgeConfigSpec.java @@ -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 implements IConfigSpec//TODO: Remove extends and pipe everything through getSpec/getValues? { - private Map, String> levelComments; - private Map, String> levelTranslationKeys; + private final Map, String> levelComments; + private final Map, 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, String> levelComments, Map, String> levelTranslationKeys) { super(storage); @@ -119,11 +121,9 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper 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 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, String> levelComments = new HashMap<>(); - private Map, String> levelTranslationKeys = new HashMap<>(); - private List currentPath = new ArrayList<>(); - private List> values = new ArrayList<>(); + private final Map, String> levelComments = new HashMap<>(); + private final Map, String> levelTranslationKeys = new HashMap<>(); + private final List currentPath = new ArrayList<>(); + private final List> values = new ArrayList<>(); //Object public ConfigValue define(String path, T defaultValue) { @@ -366,7 +366,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper 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 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> implements Predicate + public static class Range> implements Predicate { private final Class clazz; private final V min; @@ -825,7 +825,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper getPath() { - return Lists.newArrayList(path); + return new ArrayList<>(path); } /**