mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-03-28 04:07:01 -05:00
Fix obfuscated Forge-like setup and add NeoForge 1.21.11 tests
This commit is contained in:
@@ -275,6 +275,10 @@ public abstract class CompileConfiguration implements Runnable {
|
||||
mappingConfiguration.applyToProject(getProject(), mappingsDep);
|
||||
}
|
||||
|
||||
if (extension.isForgeLike() && extension.getForgeProvider().usesMojangAtRuntime()) {
|
||||
extension.getRuntimeIntermediaryNamespace().set(MappingsNamespace.MOJANG.toString());
|
||||
}
|
||||
|
||||
if (extension.isForgeLike()) {
|
||||
extension.setForgeRunsProvider(ForgeRunsProvider.create(project));
|
||||
}
|
||||
@@ -312,8 +316,6 @@ public abstract class CompileConfiguration implements Runnable {
|
||||
}
|
||||
|
||||
if (extension.isForgeLike() && extension.getForgeProvider().usesMojangAtRuntime()) {
|
||||
extension.getRuntimeIntermediaryNamespace().set(MappingsNamespace.MOJANG.toString());
|
||||
|
||||
final MojangMappedMinecraftProvider<?> mojangMappedMinecraftProvider = jarConfiguration.createMojangMappedMinecraftProvider(project);
|
||||
extension.setMojangMappedMinecraftProvider(mojangMappedMinecraftProvider);
|
||||
mojangMappedMinecraftProvider.provide(provideContext);
|
||||
|
||||
@@ -240,8 +240,6 @@ public abstract class GenerateSourcesTask extends AbstractLoomTask {
|
||||
|
||||
getDaemonUtilsContext().set(getProject().getObjects().newInstance(DaemonUtils.Context.class, getProject()));
|
||||
|
||||
getUnpickOptions().set(UnpickService.createOptions(this));
|
||||
|
||||
getForgeSourcesOptions().set(ForgeSourcesService.createOptions(getProject()));
|
||||
|
||||
mustRunAfter(getProject().getTasks().withType(AbstractRemapJarTask.class));
|
||||
|
||||
@@ -121,10 +121,12 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
|
||||
@ApiStatus.Internal
|
||||
@InputFile
|
||||
@Optional
|
||||
protected abstract RegularFileProperty getPlatformMappingFile();
|
||||
|
||||
@ApiStatus.Internal
|
||||
@InputFiles
|
||||
@Optional
|
||||
protected abstract ConfigurableFileCollection getMappingJars();
|
||||
|
||||
@ApiStatus.Internal
|
||||
@@ -151,9 +153,11 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
getDevLauncherConfig().set(getExtension().getFiles().getDevLauncherConfig());
|
||||
getProductionNamespace().set(getExtension().getProductionNamespaceEnum().toString());
|
||||
|
||||
getPlatformMappingFile().set(getProject().getLayout().file(getProject().provider(() -> getExtension().getPlatformMappingFile().toFile())));
|
||||
getPlatformMappingFile().finalizeValue();
|
||||
getMappingJars().from(getProject().getConfigurations().getByName(Constants.Configurations.MAPPINGS_FINAL));
|
||||
if (!getExtension().disableObfuscation()) {
|
||||
getPlatformMappingFile().set(getProject().getLayout().file(getProject().provider(() -> getExtension().getPlatformMappingFile().toFile())));
|
||||
getPlatformMappingFile().finalizeValue();
|
||||
getMappingJars().from(getProject().getConfigurations().getByName(Constants.Configurations.MAPPINGS_FINAL));
|
||||
}
|
||||
|
||||
if (getExtension().isForgeLike()) {
|
||||
getRunTemplates().addAll(getProject().provider(() -> {
|
||||
@@ -164,7 +168,7 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
.toList();
|
||||
}));
|
||||
|
||||
if (getExtension().isForge()) {
|
||||
if (getExtension().isForge() && !getExtension().disableObfuscation()) {
|
||||
getForgeInputs().set(getProject().provider(() -> new ForgeInputs(getProject(), getExtension())));
|
||||
}
|
||||
} else {
|
||||
@@ -230,54 +234,56 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
}
|
||||
|
||||
if (platform.isForgeLike()) {
|
||||
// Find the mapping files for Unprotect to use for figuring out
|
||||
// which classes are from Minecraft.
|
||||
String unprotectMappings = getMappingJars()
|
||||
.getFiles()
|
||||
.stream()
|
||||
.map(File::getAbsolutePath)
|
||||
.collect(Collectors.joining(File.pathSeparator));
|
||||
if (getPlatformMappingFile().isPresent()) {
|
||||
// Find the mapping files for Unprotect to use for figuring out
|
||||
// which classes are from Minecraft.
|
||||
String unprotectMappings = getMappingJars()
|
||||
.getFiles()
|
||||
.stream()
|
||||
.map(File::getAbsolutePath)
|
||||
.collect(Collectors.joining(File.pathSeparator));
|
||||
|
||||
final String intermediateNs = IntermediaryNamespaces.intermediaryNamespace(platform).toString();
|
||||
final String mappingsPath = getPlatformMappingFile().get().getAsFile().getAbsolutePath();
|
||||
final String intermediateNs = IntermediaryNamespaces.intermediaryNamespace(platform).toString();
|
||||
final String mappingsPath = getPlatformMappingFile().get().getAsFile().getAbsolutePath();
|
||||
|
||||
launchConfig
|
||||
.property("unprotect.mappings", unprotectMappings)
|
||||
// See ArchitecturyNamingService in forge-runtime
|
||||
.property("architectury.naming.sourceNamespace", intermediateNs)
|
||||
.property("architectury.naming.mappingsPath", mappingsPath);
|
||||
launchConfig
|
||||
.property("unprotect.mappings", unprotectMappings)
|
||||
// See ArchitecturyNamingService in forge-runtime
|
||||
.property("architectury.naming.sourceNamespace", intermediateNs)
|
||||
.property("architectury.naming.mappingsPath", mappingsPath);
|
||||
|
||||
if (platform == ModPlatform.FORGE) {
|
||||
final ForgeInputs forgeInputs = Objects.requireNonNull(getForgeInputs().getOrNull());
|
||||
final List<String> dataGenMods = forgeInputs.dataGenMods();
|
||||
if (platform == ModPlatform.FORGE) {
|
||||
final ForgeInputs forgeInputs = Objects.requireNonNull(getForgeInputs().getOrNull());
|
||||
final List<String> dataGenMods = forgeInputs.dataGenMods();
|
||||
|
||||
// Only apply the hardcoded data arguments if the deprecated data generator API is being used.
|
||||
if (!dataGenMods.isEmpty()) {
|
||||
launchConfig
|
||||
.argument("data", "--all")
|
||||
.argument("data", "--mod")
|
||||
.argument("data", String.join(",", dataGenMods))
|
||||
.argument("data", "--output")
|
||||
.argument("data", forgeInputs.legacyDataGenDir());
|
||||
}
|
||||
// Only apply the hardcoded data arguments if the deprecated data generator API is being used.
|
||||
if (!dataGenMods.isEmpty()) {
|
||||
launchConfig
|
||||
.argument("data", "--all")
|
||||
.argument("data", "--mod")
|
||||
.argument("data", String.join(",", dataGenMods))
|
||||
.argument("data", "--output")
|
||||
.argument("data", forgeInputs.legacyDataGenDir());
|
||||
}
|
||||
|
||||
launchConfig.property("mixin.env.remapRefMap", "true");
|
||||
launchConfig.property("mixin.env.remapRefMap", "true");
|
||||
|
||||
if (forgeInputs.useCustomMixin()) {
|
||||
// See mixin remapper service in forge-runtime
|
||||
launchConfig
|
||||
.property("architectury.mixinRemapper.sourceNamespace", intermediateNs)
|
||||
.property("architectury.mixinRemapper.mappingsPath", mappingsPath);
|
||||
} else {
|
||||
launchConfig.property("net.minecraftforge.gradle.GradleStart.srg.srg-mcp", forgeInputs.srgToNamedSrg());
|
||||
}
|
||||
if (forgeInputs.useCustomMixin()) {
|
||||
// See mixin remapper service in forge-runtime
|
||||
launchConfig
|
||||
.property("architectury.mixinRemapper.sourceNamespace", intermediateNs)
|
||||
.property("architectury.mixinRemapper.mappingsPath", mappingsPath);
|
||||
} else {
|
||||
launchConfig.property("net.minecraftforge.gradle.GradleStart.srg.srg-mcp", forgeInputs.srgToNamedSrg());
|
||||
}
|
||||
|
||||
Set<String> mixinConfigs = forgeInputs.mixinConfigs();
|
||||
Set<String> mixinConfigs = forgeInputs.mixinConfigs();
|
||||
|
||||
if (!mixinConfigs.isEmpty()) {
|
||||
for (String config : mixinConfigs) {
|
||||
launchConfig.argument("-mixin.config");
|
||||
launchConfig.argument(config);
|
||||
if (!mixinConfigs.isEmpty()) {
|
||||
for (String config : mixinConfigs) {
|
||||
launchConfig.argument("-mixin.config");
|
||||
launchConfig.argument(config);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,5 +59,7 @@ class NeoForge1210Test extends Specification implements GradleProjectTestTrait {
|
||||
'1.21' | '21.0.77-beta' | "'net.fabricmc:yarn:1.21+build.1:v2'" | "'dev.architectury:yarn-mappings-patch-neoforge:1.21+build.4'"
|
||||
'1.21.10' | '21.10.63' | 'loom.officialMojangMappings()' | ''
|
||||
'1.21.10' | '21.10.64' | 'loom.officialMojangMappings()' | ''
|
||||
'1.21.11' | '21.11.38-beta' | 'loom.officialMojangMappings()' | ''
|
||||
'1.21.11' | '21.11.38-beta' | "'net.fabricmc:yarn:1.21.11+build.1:v2'" | "'dev.architectury:yarn-mappings-patch-neoforge:1.21+build.6'"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user