diff --git a/src/main/java/net/fabricmc/loom/api/MixinExtensionAPI.java b/src/main/java/net/fabricmc/loom/api/MixinExtensionAPI.java index d7e23077..2de8e8da 100644 --- a/src/main/java/net/fabricmc/loom/api/MixinExtensionAPI.java +++ b/src/main/java/net/fabricmc/loom/api/MixinExtensionAPI.java @@ -38,8 +38,6 @@ public interface MixinExtensionAPI { Property getRefmapTargetNamespace(); - Property getLegacyRemapToNamespace(); - /** * Apply Mixin AP to sourceSet. * @param sourceSet the sourceSet that applies Mixin AP. diff --git a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java index 390a2161..57548a5c 100644 --- a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java @@ -86,7 +86,7 @@ public abstract class AnnotationProcessorInvoker { try { LoomGradleExtension loom = LoomGradleExtension.get(project); String refmapName = Objects.requireNonNull(MixinExtension.getMixinInformationContainer(sourceSet)).refmapNameProvider().get(); - Path mappings = loom.getMappingsProvider().getReplacedTarget(loom, loom.getMixin().getLegacyRemapToNamespace().get()); + Path mappings = loom.getMappingsProvider().getReplacedTarget(loom, loom.getMixin().getRefmapTargetNamespace().get()); Map args = new HashMap<>() {{ put(Constants.MixinArguments.IN_MAP_FILE_NAMED_INTERMEDIARY, mappings.toFile().getCanonicalPath()); put(Constants.MixinArguments.OUT_MAP_FILE_NAMED_INTERMEDIARY, MixinMappingsService.getMixinMappingFile(project, sourceSet).getCanonicalPath()); diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index dcbbc8d4..086f7569 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -118,7 +118,7 @@ public final class CompileConfiguration { extendsFrom(Constants.Configurations.FORGE_RUNTIME_LIBRARY, Constants.Configurations.FORGE_DEPENDENCIES, project); extendsFrom(Constants.Configurations.FORGE_RUNTIME_LIBRARY, Constants.Configurations.MINECRAFT_DEPENDENCIES, project); extendsFrom(Constants.Configurations.FORGE_RUNTIME_LIBRARY, Constants.Configurations.FORGE_EXTRA, project); - extendsFrom(Constants.Configurations.FORGE_RUNTIME_LIBRARY, Constants.Configurations.MINECRAFT_NAMED, project); + extendsFrom(Constants.Configurations.FORGE_RUNTIME_LIBRARY, MinecraftSourceSets.get(project).getCombinedSourceSetName(), project); extendsFrom(Constants.Configurations.FORGE_RUNTIME_LIBRARY, Constants.Configurations.FORGE_NAMED, project); // Include any user-defined libraries on the runtime CP. // (All the other superconfigurations are already on there.) diff --git a/src/main/java/net/fabricmc/loom/configuration/ifaceinject/InterfaceInjectionProcessor.java b/src/main/java/net/fabricmc/loom/configuration/ifaceinject/InterfaceInjectionProcessor.java index 93f90f95..5abd307a 100644 --- a/src/main/java/net/fabricmc/loom/configuration/ifaceinject/InterfaceInjectionProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/ifaceinject/InterfaceInjectionProcessor.java @@ -330,8 +330,8 @@ public class InterfaceInjectionProcessor implements JarProcessor, GenerateSource } if (commonJsonBytes != null) { - JsonObject jsonObject = new Gson().fromJson(new String(commonJsonBytes, StandardCharsets.UTF_8), JsonObject.class); - return fromJsonArch(jsonObject, modJarPath.toString()); + JsonObject commonJsonObject = new Gson().fromJson(new String(commonJsonBytes, StandardCharsets.UTF_8), JsonObject.class); + return fromJsonArch(commonJsonObject, modJarPath.toString()); } else { try { commonJsonBytes = ZipUtils.unpackNullable(modJarPath, "quilt.mod.json"); @@ -340,14 +340,15 @@ public class InterfaceInjectionProcessor implements JarProcessor, GenerateSource } if (commonJsonBytes != null) { - JsonObject jsonObject = new Gson().fromJson(new String(commonJsonBytes, StandardCharsets.UTF_8), JsonObject.class); + JsonObject commonJsonObject = new Gson().fromJson(new String(commonJsonBytes, StandardCharsets.UTF_8), JsonObject.class); - if (jsonObject.has("quilt_loom")) { + if (commonJsonObject.has("quilt_loom")) { // quilt injected interfaces has the same format as architectury.common.json - return fromJsonArch(jsonObject.getAsJsonObject("quilt_loom"), modJarPath.toString()); + return fromJsonArch(commonJsonObject.getAsJsonObject("quilt_loom"), modJarPath.toString()); } } } + return Collections.emptyList(); } diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ModJavadocProcessor.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModJavadocProcessor.java index e6f1d4c3..7e3316bd 100644 --- a/src/main/java/net/fabricmc/loom/configuration/mods/ModJavadocProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModJavadocProcessor.java @@ -73,7 +73,7 @@ public final class ModJavadocProcessor implements JarProcessor, GenerateSourcesT .resolve(); for (File artifact : artifacts) { - if (!ModUtils.isMod(artifact.toPath())) { + if (!ModUtils.isMod(artifact.toPath(), extension.getPlatform().get())) { continue; } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/FieldMigratedMappingsProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/FieldMigratedMappingsProvider.java index a0ef5120..c4a816de 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/FieldMigratedMappingsProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/FieldMigratedMappingsProvider.java @@ -56,7 +56,7 @@ import org.objectweb.asm.Opcodes; import net.fabricmc.loom.LoomGradleExtension; import net.fabricmc.loom.LoomGradlePlugin; import net.fabricmc.loom.api.mappings.layered.MappingsNamespace; -import net.fabricmc.loom.configuration.providers.mappings.IntermediaryService; +import net.fabricmc.loom.configuration.providers.mappings.IntermediateMappingsService; import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl; import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider; import net.fabricmc.loom.util.FileSystemUtil; @@ -74,7 +74,7 @@ public class FieldMigratedMappingsProvider extends MappingsProviderImpl { public Path rawTinyMappings; public Path rawTinyMappingsWithSrg; - public FieldMigratedMappingsProvider(String mappingsIdentifier, Path mappingsWorkingDir, Supplier intermediaryService) { + public FieldMigratedMappingsProvider(String mappingsIdentifier, Path mappingsWorkingDir, Supplier intermediaryService) { super(mappingsIdentifier, mappingsWorkingDir, intermediaryService); } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java index 05cbde14..b9778488 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java @@ -55,7 +55,7 @@ public enum MinecraftJarConfiguration { SingleJarMinecraftProvider::server, IntermediaryMinecraftProvider.SingleJarImpl::server, NamedMinecraftProvider.SingleJarImpl::server, - SrgMinecraftProvider.ServerOnlyImpl::new, + SrgMinecraftProvider.SingleJarImpl::server, ProcessedNamedMinecraftProvider.SingleJarImpl::server, SingleJarDecompileConfiguration::new, List.of("server") @@ -64,6 +64,7 @@ public enum MinecraftJarConfiguration { SingleJarMinecraftProvider::client, IntermediaryMinecraftProvider.SingleJarImpl::client, NamedMinecraftProvider.SingleJarImpl::client, + SrgMinecraftProvider.SingleJarImpl::client, ProcessedNamedMinecraftProvider.SingleJarImpl::client, SingleJarDecompileConfiguration::new, List.of("client") diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/AbstractMappedMinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/AbstractMappedMinecraftProvider.java index 90d42d47..d52e59cb 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/AbstractMappedMinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/AbstractMappedMinecraftProvider.java @@ -31,7 +31,6 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.BiConsumer; import dev.architectury.tinyremapper.OutputConsumerPath; import dev.architectury.tinyremapper.TinyRemapper; diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/SrgMinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/SrgMinecraftProvider.java index bd65dc5a..5f8bcfe7 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/SrgMinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/SrgMinecraftProvider.java @@ -33,11 +33,11 @@ import org.gradle.api.Project; import net.fabricmc.loom.api.mappings.layered.MappingsNamespace; import net.fabricmc.loom.configuration.providers.minecraft.MergedMinecraftProvider; import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider; -import net.fabricmc.loom.configuration.providers.minecraft.ServerOnlyMinecraftProvider; +import net.fabricmc.loom.configuration.providers.minecraft.SingleJarMinecraftProvider; import net.fabricmc.loom.configuration.providers.minecraft.SplitMinecraftProvider; import net.fabricmc.loom.util.SidedClassVisitor; -public abstract sealed class SrgMinecraftProvider extends AbstractMappedMinecraftProvider permits SrgMinecraftProvider.MergedImpl, SrgMinecraftProvider.ServerOnlyImpl, SrgMinecraftProvider.SplitImpl { +public abstract sealed class SrgMinecraftProvider extends AbstractMappedMinecraftProvider permits SrgMinecraftProvider.MergedImpl, SrgMinecraftProvider.SingleJarImpl, SrgMinecraftProvider.SplitImpl { public SrgMinecraftProvider(Project project, M minecraftProvider) { super(project, minecraftProvider); } @@ -86,16 +86,32 @@ public abstract sealed class SrgMinecraftProvider e } } - public static final class ServerOnlyImpl extends SrgMinecraftProvider implements ServerOnly { - public ServerOnlyImpl(Project project, ServerOnlyMinecraftProvider minecraftProvider) { + public static final class SingleJarImpl extends SrgMinecraftProvider implements SingleJar { + private final String env; + + private SingleJarImpl(Project project, SingleJarMinecraftProvider minecraftProvider, String env) { super(project, minecraftProvider); + this.env = env; + } + + public static SingleJarImpl server(Project project, SingleJarMinecraftProvider minecraftProvider) { + return new SingleJarImpl(project, minecraftProvider, "server"); + } + + public static SingleJarImpl client(Project project, SingleJarMinecraftProvider minecraftProvider) { + return new SingleJarImpl(project, minecraftProvider, "client"); } @Override public List getRemappedJars() { return List.of( - new RemappedJars(minecraftProvider.getMinecraftServerOnlyJar(), getServerOnlyJar(), MappingsNamespace.OFFICIAL) + new RemappedJars(minecraftProvider.getMinecraftEnvOnlyJar(), getEnvOnlyJar(), MappingsNamespace.OFFICIAL) ); } + + @Override + public String env() { + return env; + } } } diff --git a/src/main/java/net/fabricmc/loom/extension/MixinExtensionApiImpl.java b/src/main/java/net/fabricmc/loom/extension/MixinExtensionApiImpl.java index a0831dd9..ec4ac97b 100644 --- a/src/main/java/net/fabricmc/loom/extension/MixinExtensionApiImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/MixinExtensionApiImpl.java @@ -36,7 +36,7 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.util.PatternSet; import net.fabricmc.loom.api.MixinExtensionAPI; -import net.fabricmc.loom.api.mappings.layered.MappingsNamespace; +import net.fabricmc.loom.util.SourceRemapper; public abstract class MixinExtensionApiImpl implements MixinExtensionAPI { protected final Project project; @@ -50,7 +50,7 @@ public abstract class MixinExtensionApiImpl implements MixinExtensionAPI { .convention(true); this.refmapTargetNamespace = project.getObjects().property(String.class) - .convention(MappingsNamespace.INTERMEDIARY.toString()); + .convention(project.provider(() -> SourceRemapper.intermediary(project))); this.refmapTargetNamespace.finalizeValueOnRead(); } @@ -145,11 +145,6 @@ public abstract class MixinExtensionApiImpl implements MixinExtensionAPI { throw new RuntimeException("Yeah... something is really wrong"); } - @Override - public Property getLegacyRemapToNamespace() { - throw new RuntimeException("Yeah... something is really wrong"); - } - @Override protected PatternSet add0(SourceSet sourceSet, Provider refmapName) { throw new RuntimeException("Yeah... something is really wrong"); diff --git a/src/main/java/net/fabricmc/loom/extension/MixinExtensionImpl.java b/src/main/java/net/fabricmc/loom/extension/MixinExtensionImpl.java index 299ad0f1..ca9639ca 100644 --- a/src/main/java/net/fabricmc/loom/extension/MixinExtensionImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/MixinExtensionImpl.java @@ -48,12 +48,9 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.util.PatternSet; import org.jetbrains.annotations.NotNull; -import net.fabricmc.loom.util.SourceRemapper; - public class MixinExtensionImpl extends MixinExtensionApiImpl implements MixinExtension { private boolean isDefault; private final Property defaultRefmapName; - private final Property legacyRemapToNamespace; @Inject public MixinExtensionImpl(Project project) { @@ -61,8 +58,6 @@ public class MixinExtensionImpl extends MixinExtensionApiImpl implements MixinEx this.isDefault = true; this.defaultRefmapName = project.getObjects().property(String.class) .convention(project.provider(this::getDefaultMixinRefmapName)); - this.legacyRemapToNamespace = project.getObjects().property(String.class) - .convention(project.provider(() -> SourceRemapper.intermediary(project))); } @Override @@ -72,13 +67,6 @@ public class MixinExtensionImpl extends MixinExtensionApiImpl implements MixinEx return defaultRefmapName; } - @Override - public Property getLegacyRemapToNamespace() { - if (!super.getUseLegacyMixinAp().get()) throw new IllegalStateException("You need to set useLegacyMixinAp = true to configure Mixin annotation processor."); - - return legacyRemapToNamespace; - } - private String getDefaultMixinRefmapName() { String defaultRefmapName = project.getExtensions().getByType(BasePluginExtension.class).getArchivesName().get() + "-refmap.json"; diff --git a/src/main/java/net/fabricmc/loom/task/DownloadAssetsTask.java b/src/main/java/net/fabricmc/loom/task/DownloadAssetsTask.java index c4c204b3..a7fa0ffb 100644 --- a/src/main/java/net/fabricmc/loom/task/DownloadAssetsTask.java +++ b/src/main/java/net/fabricmc/loom/task/DownloadAssetsTask.java @@ -57,6 +57,7 @@ import net.fabricmc.loom.util.HashedDownloadUtil; import net.fabricmc.loom.util.MirrorUtil; import net.fabricmc.loom.util.gradle.ProgressLoggerHelper; +// TODO: Reintroduce the progress bar. public abstract class DownloadAssetsTask extends AbstractLoomTask { @Input public abstract Property getAssetsHash(); @@ -133,7 +134,7 @@ public abstract class DownloadAssetsTask extends AbstractLoomTask { final ProgressLoggerHelper logger = getOrCreateLogger.get(); try { - HashedDownloadUtil.downloadIfInvalid(new URL(MirrorUtil.getResourcesBase(project) + sha1.substring(0, 2) + "/" + sha1), file, sha1, project.getLogger(), true, () -> { + HashedDownloadUtil.downloadIfInvalid(new URL(MirrorUtil.getResourcesBase(project) + sha1.substring(0, 2) + "/" + sha1), file, sha1, project.getLogger(), true, false, () -> { project.getLogger().debug("downloading asset " + object.name()); logger.progress(String.format("%-30.30s", object.name()) + " - " + sha1); }); diff --git a/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java b/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java index 176ae614..f8e50cd8 100644 --- a/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java +++ b/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java @@ -68,7 +68,7 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask { .property("client", "java.library.path", nativesPath) .property("client", "org.lwjgl.librarypath", nativesPath); - if (!getExtension().isForge()) + if (!getExtension().isForge()) { launchConfig .argument("client", "--assetIndex") .argument("client", getExtension().getMinecraftProvider().getVersionInfo().assetIndex().fabricId(getExtension().getMinecraftProvider().minecraftVersion())) diff --git a/src/main/java/net/fabricmc/loom/util/ModUtils.java b/src/main/java/net/fabricmc/loom/util/ModUtils.java index 4aebbb37..44fff99f 100644 --- a/src/main/java/net/fabricmc/loom/util/ModUtils.java +++ b/src/main/java/net/fabricmc/loom/util/ModUtils.java @@ -41,14 +41,14 @@ public final class ModUtils { } public static boolean isMod(File file, ModPlatform platform) { - return isMod(file.toPath()); + return isMod(file.toPath(), platform); } public static boolean isMod(Path input, ModPlatform platform) { if (platform == ModPlatform.FORGE) { - return ZipUtils.contains(input.toPath(), "META-INF/mods.toml"); + return ZipUtils.contains(input, "META-INF/mods.toml"); } else if (platform == ModPlatform.QUILT) { - return ZipUtils.contains(input.toPath(), "quilt.mod.json"); + return ZipUtils.contains(input, "quilt.mod.json"); } return ZipUtils.contains(input, "fabric.mod.json"); diff --git a/src/main/java/net/fabricmc/loom/util/kotlin/KotlinMetadataTinyRemapperExtension.java b/src/main/java/net/fabricmc/loom/util/kotlin/KotlinMetadataTinyRemapperExtension.java index 1e13a350..b304c7c1 100644 --- a/src/main/java/net/fabricmc/loom/util/kotlin/KotlinMetadataTinyRemapperExtension.java +++ b/src/main/java/net/fabricmc/loom/util/kotlin/KotlinMetadataTinyRemapperExtension.java @@ -24,7 +24,7 @@ package net.fabricmc.loom.util.kotlin; -import net.fabricmc.tinyremapper.TinyRemapper; +import dev.architectury.tinyremapper.TinyRemapper; public interface KotlinMetadataTinyRemapperExtension extends TinyRemapper.ApplyVisitorProvider, TinyRemapper.Extension { } diff --git a/src/test/groovy/net/fabricmc/loom/test/unit/kotlin/KotlinRemapperClassloaderTest.groovy b/src/test/groovy/net/fabricmc/loom/test/unit/kotlin/KotlinRemapperClassloaderTest.groovy index fc7df3fc..8851b012 100644 --- a/src/test/groovy/net/fabricmc/loom/test/unit/kotlin/KotlinRemapperClassloaderTest.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/unit/kotlin/KotlinRemapperClassloaderTest.groovy @@ -24,12 +24,12 @@ package net.fabricmc.loom.test.unit.kotlin +import dev.architectury.tinyremapper.api.TrClass +import dev.architectury.tinyremapper.api.TrEnvironment +import dev.architectury.tinyremapper.api.TrRemapper import net.fabricmc.loom.util.kotlin.KotlinClasspath import net.fabricmc.loom.util.kotlin.KotlinPluginUtils import net.fabricmc.loom.util.kotlin.KotlinRemapperClassloader -import net.fabricmc.tinyremapper.api.TrClass -import net.fabricmc.tinyremapper.api.TrEnvironment -import net.fabricmc.tinyremapper.api.TrRemapper import org.objectweb.asm.ClassReader import org.objectweb.asm.tree.ClassNode import spock.lang.Specification diff --git a/src/test/resources/projects/modJavadoc/build.gradle b/src/test/resources/projects/modJavadoc/build.gradle index 52f1fc39..24118140 100644 --- a/src/test/resources/projects/modJavadoc/build.gradle +++ b/src/test/resources/projects/modJavadoc/build.gradle @@ -1,7 +1,7 @@ // This is used by a range of tests that append to this file before running the gradle tasks. // Can be used for tests that require minimal custom setup plugins { - id 'fabric-loom' + id 'dev.architectury.loom' id 'maven-publish' } diff --git a/src/test/resources/projects/splitSources/build.gradle b/src/test/resources/projects/splitSources/build.gradle index ea40b502..810c6d2f 100644 --- a/src/test/resources/projects/splitSources/build.gradle +++ b/src/test/resources/projects/splitSources/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.12.local' + id 'dev.architectury.loom' version '0.12.local' id 'maven-publish' }