diff --git a/gradle/runtime.libs.versions.toml b/gradle/runtime.libs.versions.toml index a49713084..560de2a79 100644 --- a/gradle/runtime.libs.versions.toml +++ b/gradle/runtime.libs.versions.toml @@ -19,7 +19,6 @@ access-transformers-new = "8.0.5" access-transformers-neo = "10.0.2" unprotect = "1.2.0" asm = "9.7" -union-relauncher = "1.1.1" access-transformers-log4j = "2.17.1" [libraries] @@ -45,5 +44,4 @@ access-transformers-new = { module = "net.minecraftforge:accesstransformers", ve access-transformers-neo = { module = "net.neoforged.accesstransformers:at-cli", version.ref = "access-transformers-neo" } unprotect = { module = "io.github.juuxel:unprotect", version.ref = "unprotect" } asm = { module = "org.ow2.asm:asm", version.ref = "asm" } -union-relauncher = { module = "io.github.juuxel:union-relauncher", version.ref = "union-relauncher" } access-transformers-log4j-bom = { module = "org.apache.logging.log4j:log4j-bom", version.ref = "access-transformers-log4j" } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeLibrariesProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeLibrariesProvider.java index 7243f27d1..66d5b0932 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeLibrariesProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeLibrariesProvider.java @@ -96,6 +96,13 @@ public static void provide(MappingConfiguration mappingConfiguration, Project pr } } + if (lib.startsWith("net.minecraftforge:bootstrap:")) { + if (extension.isForge() && extension.getForgeProvider().getVersion().getMajorVersion() >= Constants.Forge.MIN_BOOTSTRAP_DEV_VERSION) { + String version = lib.substring(lib.lastIndexOf(":")); + dependencies.add(project.getDependencies().create("net.minecraftforge:bootstrap-dev" + version)); + } + } + if (dep == null) { dep = lib; } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java index b62a9d1cc..1be328d04 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java @@ -32,7 +32,6 @@ import net.fabricmc.loom.LoomGradleExtension; import net.fabricmc.loom.configuration.DependencyInfo; import net.fabricmc.loom.util.Constants; -import net.fabricmc.loom.util.LoomVersions; import net.fabricmc.loom.util.ModPlatform; public class ForgeProvider extends DependencyProvider { @@ -50,10 +49,6 @@ public void provide(DependencyInfo dependency) throws Exception { version = new ForgeVersion(dependency.getResolvedVersion()); addDependency(dependency.getDepString() + ":userdev", Constants.Configurations.FORGE_USERDEV); addDependency(dependency.getDepString() + ":installer", Constants.Configurations.FORGE_INSTALLER); - - if (getExtension().isForge() && version.getMajorVersion() >= Constants.Forge.MIN_UNION_RELAUNCHER_VERSION) { - addDependency(LoomVersions.UNION_RELAUNCHER.mavenNotation(), Constants.Configurations.FORGE_EXTRA); - } } public ForgeVersion getVersion() { diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunTemplate.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunTemplate.java index 3f56b844f..624a2630a 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunTemplate.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunTemplate.java @@ -112,13 +112,6 @@ public void applyTo(RunConfigSettings settings, ConfigValue.Resolver configValue // Add MOD_CLASSES, this is something that ForgeGradle does settings.getEnvironmentVariables().computeIfAbsent("MOD_CLASSES", $ -> ConfigValue.of("{source_roots}").resolve(configValueResolver)); - - final ForgeProvider forgeProvider = settings.getExtension().getForgeProvider(); - - if (settings.getExtension().isForge() && forgeProvider.getVersion().getMajorVersion() >= Constants.Forge.MIN_UNION_RELAUNCHER_VERSION) { - settings.defaultMainClass(Constants.Forge.UNION_RELAUNCHER_MAIN_CLASS); - settings.property(Constants.Forge.UNION_RELAUNCHER_MAIN_CLASS_PROPERTY, main); - } } public Resolved resolve(ConfigValue.Resolver configValueResolver) { diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunsProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunsProvider.java index 0fe3953ce..c44b45377 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunsProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunsProvider.java @@ -128,6 +128,8 @@ private String resolve(@Nullable RunConfigSettings runConfig, ConfigValue.Variab // Use a set-valued multimap for deduplicating paths. Multimap modClasses = MultimapBuilder.hashKeys().linkedHashSetValues().build(); NamedDomainObjectContainer mods = extension.getMods(); + // Forge 49+ bootstrap-dev uses ; as a separator, instead of File.pathSeparator + String separator = extension.getForgeProvider().getVersion().getMajorVersion() >= Constants.Forge.MIN_BOOTSTRAP_DEV_VERSION ? ";" : File.pathSeparator; if (runConfig != null && !runConfig.getMods().isEmpty()) { mods = runConfig.getMods(); @@ -147,7 +149,7 @@ private String resolve(@Nullable RunConfigSettings runConfig, ConfigValue.Variab string = modClasses.entries().stream() .map(entry -> entry.getKey() + "%%" + entry.getValue()) - .collect(Collectors.joining(File.pathSeparator)); + .collect(Collectors.joining(separator)); } else if (key.equals("mcp_mappings")) { string = "loom.stub"; } else if (json.has(key)) { diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java index 14530ddac..237678f3b 100644 --- a/src/main/java/net/fabricmc/loom/util/Constants.java +++ b/src/main/java/net/fabricmc/loom/util/Constants.java @@ -192,11 +192,9 @@ public static final class Forge { public static final String MIXIN_CONFIGS_MANIFEST_KEY = "MixinConfigs"; /** - * The minimum Forge version that needs Union Relauncher to use {@code MOD_CLASSES}. + * The minimum Forge version that needs bootstrap-dev to use {@code MOD_CLASSES}. */ - public static final int MIN_UNION_RELAUNCHER_VERSION = 49; - public static final String UNION_RELAUNCHER_MAIN_CLASS = "juuxel.unionrelauncher.UnionRelauncher"; - public static final String UNION_RELAUNCHER_MAIN_CLASS_PROPERTY = "unionRelauncher.mainClass"; + public static final int MIN_BOOTSTRAP_DEV_VERSION = 49; /** * The minimum version of Forge that uses "mojang" as the namespace in production.