From 662bea324ca1f6248fcf19b4dd096b9371287557 Mon Sep 17 00:00:00 2001 From: PersonTheCat Date: Tue, 4 Jun 2024 09:40:42 -0500 Subject: [PATCH 1/7] Update Framework version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 86dfb3e..d4947d2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,7 +31,7 @@ mod_issues=https://github.com/MrCrayfish/Configured/issues mod_license=GNU Lesser General Public License v3.0 # Dependency options -framework_version=0.8.8 +framework_version=0.8.13 jei_version=17.3.0.48 catalogue_version=1.10.1 From ebf8976fc854e200623ee4da66d463d09adb68f4 Mon Sep 17 00:00:00 2001 From: PersonTheCat Date: Tue, 4 Jun 2024 09:41:38 -0500 Subject: [PATCH 2/7] Tolerate unconfigured builds --- .../src/main/groovy/multiloader-common.gradle | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/buildSrc/src/main/groovy/multiloader-common.gradle b/buildSrc/src/main/groovy/multiloader-common.gradle index 9d0c6f4..4079944 100644 --- a/buildSrc/src/main/groovy/multiloader-common.gradle +++ b/buildSrc/src/main/groovy/multiloader-common.gradle @@ -41,25 +41,29 @@ repositories { includeGroupAndSubgroups("com.terraformersmc") } } - exclusiveContent { - forRepository { - maven { - name = "MrCrayfish (GitHub)" - url = "https://maven.pkg.github.com/MrCrayfish/Maven" - credentials { - username = findProperty("gpr.user") ?: System.getenv("GPR_USER") - password = findProperty("gpr.key") ?: System.getenv("GPR_KEY") + if (findProperty("gpr.user") ?: System.getenv("GPR_USER")) { + exclusiveContent { + forRepository { + maven { + name = "MrCrayfish (GitHub)" + url = "https://maven.pkg.github.com/MrCrayfish/Maven" + credentials { + username = findProperty("gpr.user") ?: System.getenv("GPR_USER") + password = findProperty("gpr.key") ?: System.getenv("GPR_KEY") + } } } - } - filter { - includeGroupAndSubgroups("com.mrcrayfish") + filter { + includeGroupAndSubgroups("com.mrcrayfish") + } } } - if (!System.getenv("CI")) { + if (System.getenv("LOCAL_MAVEN") && !System.getenv("CI")) { maven { - url "file://" + System.getenv("LOCAL_MAVEN") + url "file://${System.getenv("LOCAL_MAVEN")}" } + } else { + mavenLocal() } maven { name = 'BlameJared' From 45d4a94fa181164cf84911ac675934513835454c Mon Sep 17 00:00:00 2001 From: PersonTheCat Date: Tue, 4 Jun 2024 10:02:38 -0500 Subject: [PATCH 3/7] Fix NPE getting range on NeoForge config values with predicates --- .../configured/impl/forge/ForgeValue.java | 24 +++++++------------ .../impl/neoforge/NeoForgeValue.java | 14 ++++++++--- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/forge/src/main/java/com/mrcrayfish/configured/impl/forge/ForgeValue.java b/forge/src/main/java/com/mrcrayfish/configured/impl/forge/ForgeValue.java index b9cb4c4..461bea7 100644 --- a/forge/src/main/java/com/mrcrayfish/configured/impl/forge/ForgeValue.java +++ b/forge/src/main/java/com/mrcrayfish/configured/impl/forge/ForgeValue.java @@ -5,7 +5,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.Nullable; @@ -158,27 +157,22 @@ public static V lastValue(List list, V defaultValue) } /** - * Reflection to get Forge's range of a value + * Gets Forge's range of a value */ - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings("unchecked") public void loadRange() { if(this.range == null) { - try + ForgeConfigSpec.Range range = this.valueSpec.getRange(); + if(range != null) { - Object range = ObfuscationReflectionHelper.getPrivateValue(ForgeConfigSpec.ValueSpec.class, this.valueSpec, "range"); - if(range != null) - { - Class rangeClass = Class.forName("net.minecraftforge.common.ForgeConfigSpec$Range"); - Object min = ObfuscationReflectionHelper.getPrivateValue(rangeClass, range, "min"); - Object max = ObfuscationReflectionHelper.getPrivateValue(rangeClass, range, "max"); - this.range = Pair.of((T) min, (T) max); - return; - } + this.range = Pair.of((T) range.getMin(), (T) range.getMax()); + } + else + { + this.range = Pair.of(null, null); } - catch(ClassNotFoundException ignored) {} - this.range = Pair.of(null, null); } } } diff --git a/neoforge/src/main/java/com/mrcrayfish/configured/impl/neoforge/NeoForgeValue.java b/neoforge/src/main/java/com/mrcrayfish/configured/impl/neoforge/NeoForgeValue.java index 6a7ddb9..eaa9dff 100644 --- a/neoforge/src/main/java/com/mrcrayfish/configured/impl/neoforge/NeoForgeValue.java +++ b/neoforge/src/main/java/com/mrcrayfish/configured/impl/neoforge/NeoForgeValue.java @@ -157,14 +157,22 @@ public static V lastValue(List list, V defaultValue) } /** - * Reflection to get Forge's range of a value + * Gets Forge's range of a value */ - @SuppressWarnings({"unchecked"}) + @SuppressWarnings("unchecked") public void loadRange() { if(this.range == null) { - this.range = Pair.of((T) this.valueSpec.getRange().getMin(), (T) this.valueSpec.getRange().getMax()); + ModConfigSpec.Range range = this.valueSpec.getRange(); + if(range != null) + { + this.range = Pair.of((T) range.getMin(), (T) range.getMax()); + } + else + { + this.range = Pair.of(null, null); + } } } } From 7ea31a06195817ecae883dd6b7d1fa62d13b651a Mon Sep 17 00:00:00 2001 From: PersonTheCat Date: Tue, 4 Jun 2024 11:33:07 -0500 Subject: [PATCH 4/7] Add coverage to confirm range NPE fix --- forge/src/test/java/test/config/ConfigTest.java | 2 ++ gradle.properties | 2 +- neoforge/src/test/java/test/config/ConfigTest.java | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/forge/src/test/java/test/config/ConfigTest.java b/forge/src/test/java/test/config/ConfigTest.java index 2d6b44f..fd093cc 100644 --- a/forge/src/test/java/test/config/ConfigTest.java +++ b/forge/src/test/java/test/config/ConfigTest.java @@ -48,6 +48,7 @@ public static class Test public final ForgeConfigSpec.ConfigValue> longList; public final ForgeConfigSpec.ConfigValue> doubleList; public final ForgeConfigSpec.EnumValue restrictedEnums; + public final ForgeConfigSpec.ConfigValue stringWithPattern; public Test(ForgeConfigSpec.Builder builder) { @@ -59,6 +60,7 @@ public Test(ForgeConfigSpec.Builder builder) this.longValue = builder.comment("This is a Long value").defineInRange("longValue", 0L, 0L, 10L); this.enumValue = builder.comment("This is an Enum value").defineEnum("enumValue", ChatFormatting.BLACK); this.restrictedEnums = builder.comment("An enum value but with restricted values").defineEnum("restrictedEnums", ChatFormatting.RED, ChatFormatting.RED, ChatFormatting.GREEN, ChatFormatting.BLUE); + this.stringWithPattern = builder.comment("A string value with pattern \\d+").define("stringWithPattern", "0", o -> o instanceof String s && s.matches("\\d+")); builder.pop(); builder.translation("forge_config.config_test.client.lists").push("lists"); this.intList = builder.comment("This is an Integer list").defineList("intList", Arrays.asList(5, 10), o -> o instanceof Integer); diff --git a/gradle.properties b/gradle.properties index d4947d2..21e4933 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,7 @@ fabric_version=0.97.8+1.20.6 fabric_loader_version=0.15.10 # NeoForge -neoforge_version=20.6.48-beta +neoforge_version=20.6.99-beta neoforge_version_range=[20.6,) neoforge_loader_version_range=[2,) diff --git a/neoforge/src/test/java/test/config/ConfigTest.java b/neoforge/src/test/java/test/config/ConfigTest.java index 1829c0d..ca4c462 100644 --- a/neoforge/src/test/java/test/config/ConfigTest.java +++ b/neoforge/src/test/java/test/config/ConfigTest.java @@ -12,6 +12,7 @@ import java.util.Arrays; import java.util.List; +import java.util.regex.Pattern; /** * Author: MrCrayfish @@ -48,6 +49,7 @@ public static class Test public final ModConfigSpec.ConfigValue> longList; public final ModConfigSpec.ConfigValue> doubleList; public final ModConfigSpec.EnumValue restrictedEnums; + public final ModConfigSpec.ConfigValue stringWithPattern; public Test(ModConfigSpec.Builder builder) { @@ -59,6 +61,7 @@ public Test(ModConfigSpec.Builder builder) this.longValue = builder.comment("This is a Long value").defineInRange("longValue", 0L, 0L, 10L); this.enumValue = builder.comment("This is an Enum value").defineEnum("enumValue", ChatFormatting.BLACK); this.restrictedEnums = builder.comment("An enum value but with restricted values").defineEnum("restrictedEnums", ChatFormatting.RED, ChatFormatting.RED, ChatFormatting.GREEN, ChatFormatting.BLUE); + this.stringWithPattern = builder.comment("A string value with pattern \\d+").define("stringWithPattern", "0", o -> o instanceof String s && s.matches("\\d+")); builder.pop(); builder.translation("forge_config.config_test.client.lists").push("lists"); this.intList = builder.comment("This is an Integer list").defineList("intList", Arrays.asList(5, 10), o -> o instanceof Integer); From 58fa70a996428cba14d99c0e32c669570893f3f7 Mon Sep 17 00:00:00 2001 From: Dalton Richardson Date: Mon, 23 Jun 2025 15:36:32 -0500 Subject: [PATCH 5/7] Revert "Update Framework version" This reverts commit 662bea324ca1f6248fcf19b4dd096b9371287557. --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 21e4933..737191c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,7 +31,7 @@ mod_issues=https://github.com/MrCrayfish/Configured/issues mod_license=GNU Lesser General Public License v3.0 # Dependency options -framework_version=0.8.13 +framework_version=0.8.8 jei_version=17.3.0.48 catalogue_version=1.10.1 From c41a2df7b3beefcd73c9fbf0c305b694a6c24f07 Mon Sep 17 00:00:00 2001 From: Dalton Richardson Date: Mon, 23 Jun 2025 15:36:40 -0500 Subject: [PATCH 6/7] Revert "Tolerate unconfigured builds" This reverts commit ebf8976fc854e200623ee4da66d463d09adb68f4. --- .../src/main/groovy/multiloader-common.gradle | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/buildSrc/src/main/groovy/multiloader-common.gradle b/buildSrc/src/main/groovy/multiloader-common.gradle index 4079944..9d0c6f4 100644 --- a/buildSrc/src/main/groovy/multiloader-common.gradle +++ b/buildSrc/src/main/groovy/multiloader-common.gradle @@ -41,29 +41,25 @@ repositories { includeGroupAndSubgroups("com.terraformersmc") } } - if (findProperty("gpr.user") ?: System.getenv("GPR_USER")) { - exclusiveContent { - forRepository { - maven { - name = "MrCrayfish (GitHub)" - url = "https://maven.pkg.github.com/MrCrayfish/Maven" - credentials { - username = findProperty("gpr.user") ?: System.getenv("GPR_USER") - password = findProperty("gpr.key") ?: System.getenv("GPR_KEY") - } + exclusiveContent { + forRepository { + maven { + name = "MrCrayfish (GitHub)" + url = "https://maven.pkg.github.com/MrCrayfish/Maven" + credentials { + username = findProperty("gpr.user") ?: System.getenv("GPR_USER") + password = findProperty("gpr.key") ?: System.getenv("GPR_KEY") } } - filter { - includeGroupAndSubgroups("com.mrcrayfish") - } + } + filter { + includeGroupAndSubgroups("com.mrcrayfish") } } - if (System.getenv("LOCAL_MAVEN") && !System.getenv("CI")) { + if (!System.getenv("CI")) { maven { - url "file://${System.getenv("LOCAL_MAVEN")}" + url "file://" + System.getenv("LOCAL_MAVEN") } - } else { - mavenLocal() } maven { name = 'BlameJared' From c61ba86e1d25e0a368bd404ee8049e746cf527c1 Mon Sep 17 00:00:00 2001 From: Dalton Richardson Date: Mon, 23 Jun 2025 15:48:19 -0500 Subject: [PATCH 7/7] Revert neoforge_version to 20.6.48-beta --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 737191c..86dfb3e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,7 @@ fabric_version=0.97.8+1.20.6 fabric_loader_version=0.15.10 # NeoForge -neoforge_version=20.6.99-beta +neoforge_version=20.6.48-beta neoforge_version_range=[20.6,) neoforge_loader_version_range=[2,)