diff --git a/build.gradle b/build.gradle index 89c01d004..926b9cd02 100644 --- a/build.gradle +++ b/build.gradle @@ -108,6 +108,9 @@ javaComponent.withVariantsFromConfiguration(configurations.shadowRuntimeElements test { useJUnitPlatform() + testLogging { + exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL + } } processResources { diff --git a/gradle.properties b/gradle.properties index 08c32d686..083d3b785 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,15 +5,15 @@ group = org.quiltmc description = The mod loading component of Quilt url = https://github.com/quiltmc/quilt-loader # Don't forget to change this in QuiltLoaderImpl as well -quilt_loader = 0.30.1 +quilt_loader = 0.30.2-beta.1 # Fabric & Quilt Libraries asm = 9.10.1 -sponge_mixin = 0.17.3+mixin.0.8.7 +sponge_mixin = 0.17.4+mixin.0.8.7 tiny_mappings_parser = 0.3.0+build.17 -tiny_remapper = 0.14.0 +tiny_remapper = 0.14.1 class_tweaker = 0.3.0-beta.2 -mapping_io = 0.7.1 +mapping_io = 0.9.1 quilt_json5 = 1.0.4+final quilt_parsers = 0.3.1 quilt_loader_sat4j = 2.3.5.1 @@ -27,4 +27,4 @@ annotations = 24.0.1 junit_bom = 5.9.3 github_api = 1.315 flexver = 1.1.0 -mixin_extras = 0.5.4 +mixin_extras = 0.5.5 diff --git a/src/fabric/api/java/net/fabricmc/loader/api/LanguageAdapter.java b/src/fabric/api/java/net/fabricmc/loader/api/LanguageAdapter.java index d1a6b1f25..e85505687 100644 --- a/src/fabric/api/java/net/fabricmc/loader/api/LanguageAdapter.java +++ b/src/fabric/api/java/net/fabricmc/loader/api/LanguageAdapter.java @@ -27,11 +27,11 @@ * *

A language adapter is defined as so in {@code fabric.mod.json}: *

- * "languageAdapter": { + * "languageAdapters": { * "<a key>": "<the binary name of the language adapter class>" * } *
- * Multiple keys can be present in the {@code languageAdapter} section.

+ * Multiple keys can be present in the {@code languageAdapters} section.

* *

In the declaration, the language adapter is referred by its binary name, * such as {@code "mypackage.MyClass$Inner"}. It must have a no-argument public constructor for the Loader to instantiate.

@@ -126,4 +126,4 @@ default T create(org.quiltmc.loader.api.ModContainer mod, String value, Clas throw new org.quiltmc.loader.api.LanguageAdapterException(e); } } -} \ No newline at end of file +} diff --git a/src/main/java/org/quiltmc/loader/api/LanguageAdapter.java b/src/main/java/org/quiltmc/loader/api/LanguageAdapter.java index 85228f11a..0a47af530 100644 --- a/src/main/java/org/quiltmc/loader/api/LanguageAdapter.java +++ b/src/main/java/org/quiltmc/loader/api/LanguageAdapter.java @@ -26,11 +26,11 @@ * *

A language adapter is defined as so in {@code fabric.mod.json}: *

- * "languageAdapter": { + * "languageAdapters": { * "<a key>": "<the binary name of the language adapter class>" * } *
- * Multiple keys can be present in the {@code languageAdapter} section.

+ * Multiple keys can be present in the {@code languageAdapters} section.

* *

In the declaration, the language adapter is referred by its binary name, * such as {@code "mypackage.MyClass$Inner"}. It must have a no-argument public constructor for the Loader to instantiate.

diff --git a/src/main/java/org/quiltmc/loader/impl/QuiltLoaderImpl.java b/src/main/java/org/quiltmc/loader/impl/QuiltLoaderImpl.java index a3c2de4e2..9a07f0b4a 100644 --- a/src/main/java/org/quiltmc/loader/impl/QuiltLoaderImpl.java +++ b/src/main/java/org/quiltmc/loader/impl/QuiltLoaderImpl.java @@ -131,7 +131,7 @@ public final class QuiltLoaderImpl { public static final int ASM_VERSION = Opcodes.ASM9; - public static final String VERSION = "0.30.1"; + public static final String VERSION = "0.30.2-beta.1"; public static final String MOD_ID = "quilt_loader"; public static final String DEFAULT_MODS_DIR = "mods"; public static final String DEFAULT_CACHE_DIR = ".cache"; diff --git a/src/main/java/org/quiltmc/loader/impl/fabric/util/version/VersionPredicateParser.java b/src/main/java/org/quiltmc/loader/impl/fabric/util/version/VersionPredicateParser.java index 50ce8f8a9..7106c161f 100644 --- a/src/main/java/org/quiltmc/loader/impl/fabric/util/version/VersionPredicateParser.java +++ b/src/main/java/org/quiltmc/loader/impl/fabric/util/version/VersionPredicateParser.java @@ -28,6 +28,7 @@ import org.quiltmc.loader.impl.util.QuiltLoaderInternal; import org.quiltmc.loader.impl.util.QuiltLoaderInternalType; +import net.fabricmc.loader.impl.util.version.SemanticVersionImpl; import net.fabricmc.loader.api.SemanticVersion; import net.fabricmc.loader.api.Version; import net.fabricmc.loader.api.VersionParsingException; @@ -40,7 +41,15 @@ public final class VersionPredicateParser { private static final VersionComparisonOperator[] OPERATORS = VersionComparisonOperator.values(); + public static VersionPredicate any() { + return AnyVersionPredicate.INSTANCE; + } + public static VersionPredicate parse(String predicate) throws VersionParsingException { + if (predicate.isEmpty() || predicate.equals("*")) { + return AnyVersionPredicate.INSTANCE; + } + List predicateList = new ArrayList<>(); for (String s : predicate.split(" ")) { @@ -76,13 +85,6 @@ public static VersionPredicate parse(String predicate) throws VersionParsingExce throw new VersionParsingException("Invalid predicate: "+predicate+", version ranges with wildcards (.X) require using the equality operator or no operator at all!"); } - assert !semVer.getPrereleaseKey().isPresent(); - - int compCount = semVer.getVersionComponentCount(); - assert compCount == 2 || compCount == 3; - - operator = compCount == 2 ? VersionComparisonOperator.SAME_TO_NEXT_MAJOR : VersionComparisonOperator.SAME_TO_NEXT_MINOR; - int[] newComponents = new int[semVer.getVersionComponentCount() - 1]; for (int i = 0; i < semVer.getVersionComponentCount() - 1; i++) { @@ -94,9 +96,28 @@ public static VersionPredicate parse(String predicate) throws VersionParsingExce } catch (VersionFormatException e) { throw new IllegalStateException("Failed to reconstruct a version from " + version, e); } + + + int compCount = semVer.getVersionComponentCount(); + + if (compCount <= 1) { + throw new IllegalStateException("invalid component count " + compCount + " for version " + semVer); + } else if (compCount <= 3) { // 2, 3 -> represent a.x as ^a-, a.b.x as ~a.b- + operator = compCount == 2 ? VersionComparisonOperator.SAME_TO_NEXT_MAJOR : VersionComparisonOperator.SAME_TO_NEXT_MINOR; + } else { // > 3 -> represent a.b.c.x as >=a.b.c-