diff --git a/.editorconfig b/.editorconfig index d8e8a53..996493f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,4 +1,4 @@ [*.{gradle,java}] indent_style = tab ij_continuation_indent_size = 8 -ij_java_imports_layout = $*,|,java.**,|,*,|,net.fabricmc.** +ij_java_imports_layout = $*,|,java.**,|,javax.**,|,*,|,net.fabricmc.** diff --git a/build.gradle b/build.gradle index 9de53ac..55b8ce6 100644 --- a/build.gradle +++ b/build.gradle @@ -73,6 +73,9 @@ dependencies { testImplementation('org.spockframework:spock-core:1.3-groovy-2.4') { exclude module: 'groovy-all' } + + compileOnly 'org.jetbrains:annotations:20.1.0' + } jar { diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java index 74fa23a..dfbcf8d 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java +++ b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java @@ -38,8 +38,6 @@ import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; -import javax.annotation.Nullable; - import com.google.gson.JsonObject; import org.cadixdev.lorenz.MappingSet; import org.cadixdev.mercury.Mercury; @@ -48,15 +46,16 @@ import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.Dependency; import org.gradle.api.file.ConfigurableFileCollection; import org.gradle.api.plugins.BasePluginConvention; +import org.jetbrains.annotations.Nullable; import net.fabricmc.loom.api.decompilers.LoomDecompiler; -import net.fabricmc.loom.processors.JarProcessor; -import net.fabricmc.loom.processors.JarProcessorManager; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.providers.MinecraftMappedProvider; -import net.fabricmc.loom.providers.MinecraftProvider; -import net.fabricmc.loom.util.LoomDependencyManager; -import net.fabricmc.loom.util.mappings.MojangMappingsDependency; +import net.fabricmc.loom.configuration.LoomDependencyManager; +import net.fabricmc.loom.configuration.processors.JarProcessor; +import net.fabricmc.loom.configuration.processors.JarProcessorManager; +import net.fabricmc.loom.configuration.providers.MinecraftProvider; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; +import net.fabricmc.loom.configuration.providers.mappings.MojangMappingsDependency; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider; public class LoomGradleExtension { public String runDir = "run"; @@ -116,7 +115,7 @@ public class LoomGradleExtension { public LoomGradleExtension(Project project) { this.project = project; - this.autoGenIDERuns = AbstractPlugin.isRootProject(project); + this.autoGenIDERuns = isRootProject(); this.unmappedMods = project.files(); } @@ -281,7 +280,7 @@ public class LoomGradleExtension { Project p = this.project; T result; - while (!AbstractPlugin.isRootProject(p)) { + while (!isRootProject()) { if ((result = projectTFunction.apply(p)) != null) { return result; } @@ -425,4 +424,8 @@ public class LoomGradleExtension { public Set getAllMixinMappings() { return Collections.unmodifiableSet(mixinMappings); } + + public List getDecompilers() { + return decompilers; + } } diff --git a/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java b/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java index 735f279..e9486d4 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java +++ b/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java @@ -24,118 +24,47 @@ package net.fabricmc.loom; -import java.io.File; -import java.util.Locale; - +import com.google.common.collect.ImmutableMap; +import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.tasks.TaskContainer; -import net.fabricmc.loom.api.decompilers.LoomDecompiler; -import net.fabricmc.loom.decompilers.cfr.FabricCFRDecompiler; -import net.fabricmc.loom.decompilers.fernflower.FabricFernFlowerDecompiler; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.task.CleanEclipseRunsTask; -import net.fabricmc.loom.task.CleanLoomBinaries; -import net.fabricmc.loom.task.CleanLoomMappings; -import net.fabricmc.loom.task.DownloadAssetsTask; -import net.fabricmc.loom.task.GenEclipseRunsTask; -import net.fabricmc.loom.task.GenIdeaProjectTask; -import net.fabricmc.loom.task.GenVsCodeProjectTask; -import net.fabricmc.loom.task.GenerateSourcesTask; -import net.fabricmc.loom.task.MigrateMappingsTask; -import net.fabricmc.loom.task.RemapJarTask; -import net.fabricmc.loom.task.RemapSourcesJarTask; -import net.fabricmc.loom.task.RunClientTask; -import net.fabricmc.loom.task.RunServerTask; +import net.fabricmc.loom.configuration.CompileConfiguration; +import net.fabricmc.loom.configuration.FabricApiExtension; +import net.fabricmc.loom.configuration.MavenPublication; +import net.fabricmc.loom.configuration.ide.IdeConfiguration; +import net.fabricmc.loom.configuration.providers.mappings.MappingsCache; +import net.fabricmc.loom.decompilers.DecompilerConfiguration; +import net.fabricmc.loom.task.LoomTasks; -public class LoomGradlePlugin extends AbstractPlugin { - public static File getMappedByproduct(Project project, String suffix) { - LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); - MappingsProvider mappingsProvider = extension.getMappingsProvider(); - File mappedJar = mappingsProvider.mappedProvider.getMappedJar(); - String path = mappedJar.getAbsolutePath(); - - if (!path.toLowerCase(Locale.ROOT).endsWith(".jar")) { - throw new RuntimeException("Invalid mapped JAR path: " + path); - } - - return new File(path.substring(0, path.length() - 4) + suffix); - } +public class LoomGradlePlugin implements Plugin { + public static boolean refreshDeps; @Override - public void apply(Project target) { - super.apply(target); + public void apply(Project project) { + project.getLogger().lifecycle("Fabric Loom: " + LoomGradlePlugin.class.getPackage().getImplementationVersion()); - TaskContainer tasks = target.getTasks(); + refreshDeps = project.getGradle().getStartParameter().isRefreshDependencies(); - tasks.register("cleanLoomBinaries", CleanLoomBinaries.class, t -> t.setDescription("Removes binary jars created by Loom.")); - tasks.register("cleanLoomMappings", CleanLoomMappings.class, t -> t.setDescription("Removes mappings downloaded by Loom.")); + if (refreshDeps) { + MappingsCache.INSTANCE.invalidate(); + project.getLogger().lifecycle("Refresh dependencies is in use, loom will be significantly slower."); + } - tasks.register("cleanLoom").configure(task -> { - task.setGroup("fabric"); - task.setDescription("Runs all Loom cleanup tasks."); - task.dependsOn(tasks.getByName("cleanLoomBinaries")); - task.dependsOn(tasks.getByName("cleanLoomMappings")); - }); + // Apply default plugins + project.apply(ImmutableMap.of("plugin", "java")); + project.apply(ImmutableMap.of("plugin", "eclipse")); + project.apply(ImmutableMap.of("plugin", "idea")); - tasks.register("migrateMappings", MigrateMappingsTask.class, t -> { - t.setDescription("Migrates mappings to a new version."); - t.getOutputs().upToDateWhen((o) -> false); - }); + // Setup extensions, loom shadows minecraft + project.getExtensions().create("minecraft", LoomGradleExtension.class, project); + project.getExtensions().add("loom", project.getExtensions().getByName("minecraft")); + project.getExtensions().create("fabricApi", FabricApiExtension.class, project); - tasks.register("remapJar", RemapJarTask.class, t -> { - t.setDescription("Remaps the built project jar to intermediary mappings."); - t.setGroup("fabric"); - }); - - tasks.register("downloadAssets", DownloadAssetsTask.class, t -> t.setDescription("Downloads required assets for Fabric.")); - - tasks.register("genIdeaWorkspace", GenIdeaProjectTask.class, t -> { - t.setDescription("Generates an IntelliJ IDEA workspace from this project."); - t.dependsOn("idea", "downloadAssets"); - t.setGroup("ide"); - }); - - tasks.register("genEclipseRuns", GenEclipseRunsTask.class, t -> { - t.setDescription("Generates Eclipse run configurations for this project."); - t.dependsOn("downloadAssets"); - t.setGroup("ide"); - }); - - tasks.register("cleanEclipseRuns", CleanEclipseRunsTask.class, t -> { - t.setDescription("Removes Eclipse run configurations for this project."); - t.setGroup("ide"); - }); - - tasks.register("vscode", GenVsCodeProjectTask.class, t -> { - t.setDescription("Generates VSCode launch configurations."); - t.dependsOn("downloadAssets"); - t.setGroup("ide"); - }); - - tasks.register("remapSourcesJar", RemapSourcesJarTask.class, t -> t.setDescription("Remaps the project sources jar to intermediary names.")); - - tasks.register("runClient", RunClientTask.class, t -> { - t.setDescription("Starts a development version of the Minecraft client."); - t.dependsOn("downloadAssets"); - t.setGroup("fabric"); - }); - - tasks.register("runServer", RunServerTask.class, t -> { - t.setDescription("Starts a development version of the Minecraft server."); - t.setGroup("fabric"); - }); - - LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); - extension.addDecompiler(new FabricFernFlowerDecompiler(project)); - extension.addDecompiler(new FabricCFRDecompiler(project)); - - project.afterEvaluate((p) -> { - for (LoomDecompiler decompiler : extension.decompilers) { - String taskName = (decompiler instanceof FabricFernFlowerDecompiler) ? "genSources" : "genSourcesWith" + decompiler.name(); - // decompiler will be passed to the constructor of GenerateSourcesTask - tasks.register(taskName, GenerateSourcesTask.class, decompiler); - } - }); + CompileConfiguration.setupConfigurations(project); + IdeConfiguration.setup(project); + CompileConfiguration.configureCompile(project); + MavenPublication.configure(project); + LoomTasks.registerTasks(project); + DecompilerConfiguration.setup(project); } } diff --git a/src/main/java/net/fabricmc/loom/util/JarRemapper.java b/src/main/java/net/fabricmc/loom/build/JarRemapper.java similarity index 99% rename from src/main/java/net/fabricmc/loom/util/JarRemapper.java rename to src/main/java/net/fabricmc/loom/build/JarRemapper.java index 1b7b841..1789642 100644 --- a/src/main/java/net/fabricmc/loom/util/JarRemapper.java +++ b/src/main/java/net/fabricmc/loom/build/JarRemapper.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.build; import java.io.IOException; import java.nio.file.Path; diff --git a/src/main/java/net/fabricmc/loom/util/MixinRefmapHelper.java b/src/main/java/net/fabricmc/loom/build/MixinRefmapHelper.java similarity index 99% rename from src/main/java/net/fabricmc/loom/util/MixinRefmapHelper.java rename to src/main/java/net/fabricmc/loom/build/MixinRefmapHelper.java index a48cc2d..dd90e2f 100644 --- a/src/main/java/net/fabricmc/loom/util/MixinRefmapHelper.java +++ b/src/main/java/net/fabricmc/loom/build/MixinRefmapHelper.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.build; import java.io.File; import java.io.IOException; diff --git a/src/main/java/net/fabricmc/loom/util/ModCompileRemapper.java b/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java similarity index 95% rename from src/main/java/net/fabricmc/loom/util/ModCompileRemapper.java rename to src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java index 4652f7c..eb9d87e 100644 --- a/src/main/java/net/fabricmc/loom/util/ModCompileRemapper.java +++ b/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.build; import java.io.File; import java.io.IOException; @@ -45,8 +45,12 @@ import org.gradle.jvm.JvmLibrary; import org.gradle.language.base.artifact.SourcesArtifact; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.processors.dependency.ModDependencyInfo; -import net.fabricmc.loom.processors.dependency.RemapData; +import net.fabricmc.loom.configuration.RemappedConfigurationEntry; +import net.fabricmc.loom.configuration.mods.ModProcessor; +import net.fabricmc.loom.configuration.processors.dependency.ModDependencyInfo; +import net.fabricmc.loom.configuration.processors.dependency.RemapData; +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.SourceRemapper; public class ModCompileRemapper { public static void remapDependencies(Project project, String mappingsSuffix, LoomGradleExtension extension, SourceRemapper sourceRemapper) { diff --git a/src/main/java/net/fabricmc/loom/util/NestedJars.java b/src/main/java/net/fabricmc/loom/build/NestedJars.java similarity index 99% rename from src/main/java/net/fabricmc/loom/util/NestedJars.java rename to src/main/java/net/fabricmc/loom/build/NestedJars.java index 2d57c8c..c088af4 100644 --- a/src/main/java/net/fabricmc/loom/util/NestedJars.java +++ b/src/main/java/net/fabricmc/loom/build/NestedJars.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.build; import java.io.File; import java.io.IOException; @@ -41,24 +41,25 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import org.apache.commons.io.FileUtils; -import org.gradle.api.artifacts.ResolvedConfiguration; +import org.gradle.api.Project; +import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.ResolvedDependency; import org.gradle.api.artifacts.Dependency; +import org.gradle.api.artifacts.DependencySet; import org.gradle.api.artifacts.ProjectDependency; import org.gradle.api.artifacts.ResolvedArtifact; -import org.gradle.api.artifacts.DependencySet; +import org.gradle.api.artifacts.ResolvedConfiguration; +import org.gradle.api.artifacts.ResolvedDependency; +import org.gradle.api.tasks.bundling.AbstractArchiveTask; import org.zeroturnaround.zip.FileSource; import org.zeroturnaround.zip.ZipEntrySource; import org.zeroturnaround.zip.ZipUtil; import org.zeroturnaround.zip.transform.StringZipEntryTransformer; import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.tasks.bundling.AbstractArchiveTask; import net.fabricmc.loom.LoomGradleExtension; import net.fabricmc.loom.task.RemapJarTask; +import net.fabricmc.loom.util.Constants; public class NestedJars { private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); diff --git a/src/main/java/net/fabricmc/loom/util/mixin/AnnotationProcessorInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java similarity index 99% rename from src/main/java/net/fabricmc/loom/util/mixin/AnnotationProcessorInvoker.java rename to src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java index 2d7934d..ecdaf15 100644 --- a/src/main/java/net/fabricmc/loom/util/mixin/AnnotationProcessorInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.mixin; +package net.fabricmc.loom.build.mixin; import java.io.File; import java.io.IOException; diff --git a/src/main/java/net/fabricmc/loom/util/mixin/JavaApInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/JavaApInvoker.java similarity index 98% rename from src/main/java/net/fabricmc/loom/util/mixin/JavaApInvoker.java rename to src/main/java/net/fabricmc/loom/build/mixin/JavaApInvoker.java index 8ec5215..2e52d0d 100644 --- a/src/main/java/net/fabricmc/loom/util/mixin/JavaApInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/JavaApInvoker.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.mixin; +package net.fabricmc.loom.build.mixin; import java.io.File; import java.util.List; diff --git a/src/main/java/net/fabricmc/loom/util/mixin/KaptApInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/KaptApInvoker.java similarity index 99% rename from src/main/java/net/fabricmc/loom/util/mixin/KaptApInvoker.java rename to src/main/java/net/fabricmc/loom/build/mixin/KaptApInvoker.java index 8d6d1d1..668a774 100644 --- a/src/main/java/net/fabricmc/loom/util/mixin/KaptApInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/KaptApInvoker.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.mixin; +package net.fabricmc.loom.build.mixin; import java.io.File; import java.io.IOException; diff --git a/src/main/java/net/fabricmc/loom/util/mixin/ScalaApInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/ScalaApInvoker.java similarity index 98% rename from src/main/java/net/fabricmc/loom/util/mixin/ScalaApInvoker.java rename to src/main/java/net/fabricmc/loom/build/mixin/ScalaApInvoker.java index ba1ad82..7fed561 100644 --- a/src/main/java/net/fabricmc/loom/util/mixin/ScalaApInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/ScalaApInvoker.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.mixin; +package net.fabricmc.loom.build.mixin; import java.io.File; diff --git a/src/main/java/net/fabricmc/loom/AbstractPlugin.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java similarity index 63% rename from src/main/java/net/fabricmc/loom/AbstractPlugin.java rename to src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index 4c1b70a..836b320 100644 --- a/src/main/java/net/fabricmc/loom/AbstractPlugin.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -22,93 +22,50 @@ * SOFTWARE. */ -package net.fabricmc.loom; +package net.fabricmc.loom.configuration; import java.io.IOException; -import java.util.HashSet; import java.util.Map; -import java.util.Optional; import java.util.Set; -import com.google.common.collect.ImmutableMap; -import groovy.util.Node; -import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.UnknownTaskException; import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.Dependency; -import org.gradle.api.artifacts.ExcludeRule; -import org.gradle.api.artifacts.ModuleDependency; import org.gradle.api.artifacts.repositories.MavenArtifactRepository; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginConvention; -import org.gradle.api.publish.Publication; -import org.gradle.api.publish.PublishingExtension; -import org.gradle.api.publish.maven.MavenPublication; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.bundling.AbstractArchiveTask; import org.gradle.api.tasks.javadoc.Javadoc; -import org.gradle.plugins.ide.idea.model.IdeaModel; -import net.fabricmc.loom.providers.LaunchProvider; -import net.fabricmc.loom.providers.MappingsCache; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.providers.MinecraftProvider; +import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.build.JarRemapper; +import net.fabricmc.loom.build.NestedJars; +import net.fabricmc.loom.build.mixin.JavaApInvoker; +import net.fabricmc.loom.build.mixin.KaptApInvoker; +import net.fabricmc.loom.build.mixin.ScalaApInvoker; +import net.fabricmc.loom.configuration.ide.SetupIntelijRunConfigs; +import net.fabricmc.loom.configuration.providers.LaunchProvider; +import net.fabricmc.loom.configuration.providers.MinecraftProvider; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; import net.fabricmc.loom.task.AbstractLoomTask; +import net.fabricmc.loom.task.RemapAllSourcesTask; import net.fabricmc.loom.task.RemapJarTask; import net.fabricmc.loom.task.RemapSourcesJarTask; -import net.fabricmc.loom.task.RemapAllSourcesTask; import net.fabricmc.loom.util.Constants; -import net.fabricmc.loom.util.DownloadUtil; -import net.fabricmc.loom.util.FabricApiExtension; -import net.fabricmc.loom.util.GroovyXmlUtil; -import net.fabricmc.loom.util.LoomDependencyManager; -import net.fabricmc.loom.util.NestedJars; -import net.fabricmc.loom.util.RemappedConfigurationEntry; -import net.fabricmc.loom.util.SetupIntelijRunConfigs; -import net.fabricmc.loom.util.mixin.JavaApInvoker; -import net.fabricmc.loom.util.mixin.KaptApInvoker; -import net.fabricmc.loom.util.mixin.ScalaApInvoker; import net.fabricmc.loom.util.SourceRemapper; -import net.fabricmc.loom.util.JarRemapper; -public class AbstractPlugin implements Plugin { - protected Project project; - - public static boolean isRootProject(Project project) { - return project.getRootProject() == project; +/** + * Add Minecraft dependencies to compile time. + */ +public final class CompileConfiguration { + private CompileConfiguration() { } - private void extendsFrom(String a, String b) { - project.getConfigurations().getByName(a).extendsFrom(project.getConfigurations().getByName(b)); - } - - @Override - public void apply(Project target) { - this.project = target; - - project.getLogger().lifecycle("Fabric Loom: " + AbstractPlugin.class.getPackage().getImplementationVersion()); - - boolean refreshDeps = project.getGradle().getStartParameter().isRefreshDependencies(); - DownloadUtil.refreshDeps = refreshDeps; - - if (refreshDeps) { - MappingsCache.INSTANCE.invalidate(); - project.getLogger().lifecycle("Refresh dependencies is in use, loom will be significantly slower."); - } - - // Apply default plugins - project.apply(ImmutableMap.of("plugin", "java")); - project.apply(ImmutableMap.of("plugin", "eclipse")); - project.apply(ImmutableMap.of("plugin", "idea")); - - project.getExtensions().create("minecraft", LoomGradleExtension.class, project); - project.getExtensions().add("loom", project.getExtensions().getByName("minecraft")); - project.getExtensions().create("fabricApi", FabricApiExtension.class, project); - + public static void setupConfigurations(Project project) { // Force add Mojang repository - addMavenRepo(target, "Mojang", "https://libraries.minecraft.net/"); + addMavenRepo(project, "Mojang", "https://libraries.minecraft.net/"); Configuration modCompileClasspathConfig = project.getConfigurations().maybeCreate(Constants.Configurations.MOD_COMPILE_CLASSPATH); modCompileClasspathConfig.setTransitive(true); @@ -136,31 +93,23 @@ public class AbstractPlugin implements Plugin { Configuration compileModsMappedConfig = project.getConfigurations().maybeCreate(entry.getRemappedConfiguration()); compileModsMappedConfig.setTransitive(false); // Don't get transitive deps of already remapped mods - extendsFrom(entry.getTargetConfiguration(project.getConfigurations()), entry.getRemappedConfiguration()); + extendsFrom(entry.getTargetConfiguration(project.getConfigurations()), entry.getRemappedConfiguration(), project); if (entry.isOnModCompileClasspath()) { - extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH, entry.getSourceConfiguration()); - extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH_MAPPED, entry.getRemappedConfiguration()); + extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH, entry.getSourceConfiguration(), project); + extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH_MAPPED, entry.getRemappedConfiguration(), project); } } - extendsFrom("compileClasspath", Constants.Configurations.MINECRAFT_NAMED); - extendsFrom("runtimeClasspath", Constants.Configurations.MINECRAFT_NAMED); - extendsFrom("testCompileClasspath", Constants.Configurations.MINECRAFT_NAMED); - extendsFrom("testRuntimeClasspath", Constants.Configurations.MINECRAFT_NAMED); + extendsFrom(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.MINECRAFT_NAMED, project); + extendsFrom(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.MINECRAFT_NAMED, project); + extendsFrom(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.MINECRAFT_NAMED, project); + extendsFrom(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.MINECRAFT_NAMED, project); - extendsFrom(Constants.Configurations.LOADER_DEPENDENCIES, Constants.Configurations.MINECRAFT_DEPENDENCIES); - extendsFrom(Constants.Configurations.MINECRAFT_NAMED, Constants.Configurations.LOADER_DEPENDENCIES); + extendsFrom(Constants.Configurations.LOADER_DEPENDENCIES, Constants.Configurations.MINECRAFT_DEPENDENCIES, project); + extendsFrom(Constants.Configurations.MINECRAFT_NAMED, Constants.Configurations.LOADER_DEPENDENCIES, project); - extendsFrom("compile", Constants.Configurations.MAPPINGS_FINAL); - - configureIDEs(); - configureCompile(); - configureMaven(); - } - - public Project getProject() { - return project; + extendsFrom(JavaPlugin.COMPILE_CONFIGURATION_NAME, Constants.Configurations.MAPPINGS_FINAL, project); } /** @@ -171,30 +120,14 @@ public class AbstractPlugin implements Plugin { * @param url The URL of the repository * @return An object containing the name and the URL of the repository that can be modified later */ - public MavenArtifactRepository addMavenRepo(Project target, final String name, final String url) { + public static MavenArtifactRepository addMavenRepo(Project target, final String name, final String url) { return target.getRepositories().maven(repo -> { repo.setName(name); repo.setUrl(url); }); } - /** - * Add Minecraft dependencies to IDE dependencies. - */ - protected void configureIDEs() { - // IDEA - IdeaModel ideaModel = (IdeaModel) project.getExtensions().getByName("idea"); - - ideaModel.getModule().getExcludeDirs().addAll(project.files(".gradle", "build", ".idea", "out").getFiles()); - ideaModel.getModule().setDownloadJavadoc(true); - ideaModel.getModule().setDownloadSources(true); - ideaModel.getModule().setInheritOutputDirs(true); - } - - /** - * Add Minecraft dependencies to compile time. - */ - protected void configureCompile() { + public static void configureCompile(Project project) { JavaPluginConvention javaModule = (JavaPluginConvention) project.getConvention().getPlugins().get("java"); SourceSet main = javaModule.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); @@ -231,9 +164,9 @@ public class AbstractPlugin implements Plugin { LoomDependencyManager dependencyManager = new LoomDependencyManager(); extension.setDependencyManager(dependencyManager); - dependencyManager.addProvider(new MinecraftProvider(getProject())); - dependencyManager.addProvider(new MappingsProvider(getProject())); - dependencyManager.addProvider(new LaunchProvider(getProject())); + dependencyManager.addProvider(new MinecraftProvider(project)); + dependencyManager.addProvider(new MappingsProvider(project)); + dependencyManager.addProvider(new LaunchProvider(project)); dependencyManager.handleDependencies(project1); @@ -365,66 +298,7 @@ public class AbstractPlugin implements Plugin { } } - protected void configureMaven() { - project.afterEvaluate((p) -> { - for (RemappedConfigurationEntry entry : Constants.MOD_COMPILE_ENTRIES) { - if (!entry.hasMavenScope()) { - continue; - } - - Configuration compileModsConfig = p.getConfigurations().getByName(entry.getSourceConfiguration()); - - // add modsCompile to maven-publish - PublishingExtension mavenPublish = p.getExtensions().findByType(PublishingExtension.class); - - if (mavenPublish != null) { - mavenPublish.publications((publications) -> { - for (Publication publication : publications) { - if (publication instanceof MavenPublication) { - ((MavenPublication) publication).pom((pom) -> pom.withXml((xml) -> { - Node dependencies = GroovyXmlUtil.getOrCreateNode(xml.asNode(), "dependencies"); - Set foundArtifacts = new HashSet<>(); - - GroovyXmlUtil.childrenNodesStream(dependencies).filter((n) -> "dependency".equals(n.name())).forEach((n) -> { - Optional groupId = GroovyXmlUtil.getNode(n, "groupId"); - Optional artifactId = GroovyXmlUtil.getNode(n, "artifactId"); - - if (groupId.isPresent() && artifactId.isPresent()) { - foundArtifacts.add(groupId.get().text() + ":" + artifactId.get().text()); - } - }); - - for (Dependency dependency : compileModsConfig.getAllDependencies()) { - if (foundArtifacts.contains(dependency.getGroup() + ":" + dependency.getName())) { - continue; - } - - Node depNode = dependencies.appendNode("dependency"); - depNode.appendNode("groupId", dependency.getGroup()); - depNode.appendNode("artifactId", dependency.getName()); - depNode.appendNode("version", dependency.getVersion()); - depNode.appendNode("scope", entry.getMavenScope()); - - if (dependency instanceof ModuleDependency) { - final Set exclusions = ((ModuleDependency) dependency).getExcludeRules(); - - if (!exclusions.isEmpty()) { - Node exclusionsNode = depNode.appendNode("exclusions"); - - for (ExcludeRule rule : exclusions) { - Node exclusionNode = exclusionsNode.appendNode("exclusion"); - exclusionNode.appendNode("groupId", rule.getGroup() == null ? "*" : rule.getGroup()); - exclusionNode.appendNode("artifactId", rule.getModule() == null ? "*" : rule.getModule()); - } - } - } - } - })); - } - } - }); - } - } - }); + private static void extendsFrom(String a, String b, Project project) { + project.getConfigurations().getByName(a).extendsFrom(project.getConfigurations().getByName(b)); } } diff --git a/src/main/java/net/fabricmc/loom/util/DependencyProvider.java b/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java similarity index 99% rename from src/main/java/net/fabricmc/loom/util/DependencyProvider.java rename to src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java index 10da342..4b1b800 100644 --- a/src/main/java/net/fabricmc/loom/util/DependencyProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.configuration; import java.io.File; import java.nio.charset.StandardCharsets; diff --git a/src/main/java/net/fabricmc/loom/util/FabricApiExtension.java b/src/main/java/net/fabricmc/loom/configuration/FabricApiExtension.java similarity index 98% rename from src/main/java/net/fabricmc/loom/util/FabricApiExtension.java rename to src/main/java/net/fabricmc/loom/configuration/FabricApiExtension.java index 71cf0e6..a09262c 100644 --- a/src/main/java/net/fabricmc/loom/util/FabricApiExtension.java +++ b/src/main/java/net/fabricmc/loom/configuration/FabricApiExtension.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.configuration; import java.io.File; import java.io.IOException; @@ -40,6 +40,7 @@ import org.w3c.dom.Element; import org.w3c.dom.NodeList; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.util.DownloadUtil; public class FabricApiExtension { private final Project project; diff --git a/src/main/java/net/fabricmc/loom/util/LoomDependencyManager.java b/src/main/java/net/fabricmc/loom/configuration/LoomDependencyManager.java similarity index 95% rename from src/main/java/net/fabricmc/loom/util/LoomDependencyManager.java rename to src/main/java/net/fabricmc/loom/configuration/LoomDependencyManager.java index 755992e..2bd1fb5 100644 --- a/src/main/java/net/fabricmc/loom/util/LoomDependencyManager.java +++ b/src/main/java/net/fabricmc/loom/configuration/LoomDependencyManager.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.configuration; import java.io.File; import java.util.ArrayList; @@ -39,8 +39,12 @@ import org.gradle.api.artifacts.ExternalModuleDependency; import org.gradle.api.artifacts.repositories.MavenArtifactRepository; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.util.DependencyProvider.DependencyInfo; +import net.fabricmc.loom.build.ModCompileRemapper; +import net.fabricmc.loom.configuration.DependencyProvider.DependencyInfo; +import net.fabricmc.loom.configuration.mods.ModProcessor; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.SourceRemapper; public class LoomDependencyManager { private static class ProviderList { diff --git a/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java b/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java new file mode 100644 index 0000000..92acad9 --- /dev/null +++ b/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java @@ -0,0 +1,119 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016, 2017, 2018 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.configuration; + +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; + +import groovy.util.Node; +import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; +import org.gradle.api.artifacts.Dependency; +import org.gradle.api.artifacts.ExcludeRule; +import org.gradle.api.artifacts.ModuleDependency; +import org.gradle.api.publish.Publication; +import org.gradle.api.publish.PublishingExtension; + +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.GroovyXmlUtil; + +public final class MavenPublication { + private MavenPublication() { + } + + public static void configure(Project project) { + project.afterEvaluate((p) -> { + for (RemappedConfigurationEntry entry : Constants.MOD_COMPILE_ENTRIES) { + if (!entry.hasMavenScope()) { + continue; + } + + Configuration compileModsConfig = p.getConfigurations().getByName(entry.getSourceConfiguration()); + + // add modsCompile to maven-publish + PublishingExtension mavenPublish = p.getExtensions().findByType(PublishingExtension.class); + + if (mavenPublish != null) { + processEntry(entry, compileModsConfig, mavenPublish); + } + } + }); + } + + private static void processEntry(RemappedConfigurationEntry entry, Configuration compileModsConfig, PublishingExtension mavenPublish) { + mavenPublish.publications((publications) -> { + for (Publication publication : publications) { + if (!(publication instanceof org.gradle.api.publish.maven.MavenPublication)) { + continue; + } + + ((org.gradle.api.publish.maven.MavenPublication) publication).pom((pom) -> pom.withXml((xml) -> { + Node dependencies = GroovyXmlUtil.getOrCreateNode(xml.asNode(), "dependencies"); + Set foundArtifacts = new HashSet<>(); + + GroovyXmlUtil.childrenNodesStream(dependencies).filter((n) -> "dependency".equals(n.name())).forEach((n) -> { + Optional groupId = GroovyXmlUtil.getNode(n, "groupId"); + Optional artifactId = GroovyXmlUtil.getNode(n, "artifactId"); + + if (groupId.isPresent() && artifactId.isPresent()) { + foundArtifacts.add(groupId.get().text() + ":" + artifactId.get().text()); + } + }); + + for (Dependency dependency : compileModsConfig.getAllDependencies()) { + if (foundArtifacts.contains(dependency.getGroup() + ":" + dependency.getName())) { + continue; + } + + Node depNode = dependencies.appendNode("dependency"); + depNode.appendNode("groupId", dependency.getGroup()); + depNode.appendNode("artifactId", dependency.getName()); + depNode.appendNode("version", dependency.getVersion()); + depNode.appendNode("scope", entry.getMavenScope()); + + if (!(dependency instanceof ModuleDependency)) { + continue; + } + + final Set exclusions = ((ModuleDependency) dependency).getExcludeRules(); + + if (exclusions.isEmpty()) { + continue; + } + + Node exclusionsNode = depNode.appendNode("exclusions"); + + for (ExcludeRule rule : exclusions) { + Node exclusionNode = exclusionsNode.appendNode("exclusion"); + exclusionNode.appendNode("groupId", rule.getGroup() == null ? "*" : rule.getGroup()); + exclusionNode.appendNode("artifactId", rule.getModule() == null ? "*" : rule.getModule()); + } + } + })); + } + }); + } +} diff --git a/src/main/java/net/fabricmc/loom/util/RemappedConfigurationEntry.java b/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java similarity index 98% rename from src/main/java/net/fabricmc/loom/util/RemappedConfigurationEntry.java rename to src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java index 767c3a8..2b0949d 100644 --- a/src/main/java/net/fabricmc/loom/util/RemappedConfigurationEntry.java +++ b/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.configuration; import org.gradle.api.artifacts.ConfigurationContainer; diff --git a/src/main/java/net/fabricmc/loom/util/accesswidener/AccessWidenerJarProcessor.java b/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java similarity index 98% rename from src/main/java/net/fabricmc/loom/util/accesswidener/AccessWidenerJarProcessor.java rename to src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java index aa02c2d..64241ea 100644 --- a/src/main/java/net/fabricmc/loom/util/accesswidener/AccessWidenerJarProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.accesswidener; +package net.fabricmc.loom.configuration.accesswidener; import java.io.BufferedReader; import java.io.File; @@ -48,14 +48,14 @@ import org.zeroturnaround.zip.transform.ZipEntryTransformer; import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry; import net.fabricmc.accesswidener.AccessWidener; -import net.fabricmc.accesswidener.AccessWidenerRemapper; import net.fabricmc.accesswidener.AccessWidenerReader; +import net.fabricmc.accesswidener.AccessWidenerRemapper; import net.fabricmc.accesswidener.AccessWidenerVisitor; import net.fabricmc.accesswidener.AccessWidenerWriter; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.processors.JarProcessor; -import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.configuration.processors.JarProcessor; import net.fabricmc.loom.util.Checksum; +import net.fabricmc.loom.util.Constants; import net.fabricmc.tinyremapper.TinyRemapper; public class AccessWidenerJarProcessor implements JarProcessor { diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/IdeConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/ide/IdeConfiguration.java new file mode 100644 index 0000000..364981c --- /dev/null +++ b/src/main/java/net/fabricmc/loom/configuration/ide/IdeConfiguration.java @@ -0,0 +1,42 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016, 2017, 2018 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.configuration.ide; + +import org.gradle.api.Project; +import org.gradle.plugins.ide.idea.model.IdeaModel; + +public final class IdeConfiguration { + private IdeConfiguration() { + } + + public static void setup(Project project) { + IdeaModel ideaModel = (IdeaModel) project.getExtensions().getByName("idea"); + + ideaModel.getModule().getExcludeDirs().addAll(project.files(".gradle", "build", ".idea", "out").getFiles()); + ideaModel.getModule().setDownloadJavadoc(true); + ideaModel.getModule().setDownloadSources(true); + ideaModel.getModule().setInheritOutputDirs(true); + } +} diff --git a/src/main/java/net/fabricmc/loom/util/RunConfig.java b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java similarity index 97% rename from src/main/java/net/fabricmc/loom/util/RunConfig.java rename to src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java index 8fa9c1b..4b68da5 100644 --- a/src/main/java/net/fabricmc/loom/util/RunConfig.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java @@ -22,9 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; - -import static net.fabricmc.loom.AbstractPlugin.isRootProject; +package net.fabricmc.loom.configuration.ide; import java.io.File; import java.io.IOException; @@ -41,13 +39,15 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +import org.gradle.api.Project; +import org.gradle.plugins.ide.eclipse.model.EclipseModel; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; -import org.gradle.api.Project; -import org.gradle.plugins.ide.eclipse.model.EclipseModel; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.OperatingSystem; public class RunConfig { public String configName; @@ -105,7 +105,7 @@ public class RunConfig { } private static void populate(Project project, LoomGradleExtension extension, RunConfig runConfig, String mode) { - runConfig.configName += isRootProject(project) ? "" : " (" + project.getPath() + ")"; + runConfig.configName += extension.isRootProject() ? "" : " (" + project.getPath() + ")"; runConfig.eclipseProjectName = project.getExtensions().getByType(EclipseModel.class).getProject().getName(); runConfig.ideaModuleName = getIdeaModuleName(project); runConfig.runDir = "file://$PROJECT_DIR$/" + extension.runDir; diff --git a/src/main/java/net/fabricmc/loom/util/SetupIntelijRunConfigs.java b/src/main/java/net/fabricmc/loom/configuration/ide/SetupIntelijRunConfigs.java similarity index 93% rename from src/main/java/net/fabricmc/loom/util/SetupIntelijRunConfigs.java rename to src/main/java/net/fabricmc/loom/configuration/ide/SetupIntelijRunConfigs.java index 1934d9e..d2413f0 100644 --- a/src/main/java/net/fabricmc/loom/util/SetupIntelijRunConfigs.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/SetupIntelijRunConfigs.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.configuration.ide; import java.io.File; import java.io.IOException; @@ -32,8 +32,8 @@ import org.apache.commons.io.FileUtils; import org.gradle.api.Project; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.MinecraftAssetsProvider; -import net.fabricmc.loom.providers.MinecraftNativesProvider; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftNativesProvider; +import net.fabricmc.loom.configuration.providers.minecraft.assets.MinecraftAssetsProvider; public class SetupIntelijRunConfigs { public static void setup(Project project) { diff --git a/src/main/java/net/fabricmc/loom/util/ModProcessor.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java similarity index 94% rename from src/main/java/net/fabricmc/loom/util/ModProcessor.java rename to src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java index 75f5581..3837004 100644 --- a/src/main/java/net/fabricmc/loom/util/ModProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.configuration.mods; import java.io.BufferedReader; import java.io.ByteArrayInputStream; @@ -56,12 +56,15 @@ import net.fabricmc.accesswidener.AccessWidenerReader; import net.fabricmc.accesswidener.AccessWidenerRemapper; import net.fabricmc.accesswidener.AccessWidenerWriter; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.providers.MinecraftMappedProvider; -import net.fabricmc.loom.processors.dependency.ModDependencyInfo; -import net.fabricmc.tinyremapper.TinyRemapper; +import net.fabricmc.loom.configuration.RemappedConfigurationEntry; +import net.fabricmc.loom.configuration.processors.dependency.ModDependencyInfo; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider; +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.TinyRemapperMappingsHelper; import net.fabricmc.tinyremapper.InputTag; import net.fabricmc.tinyremapper.OutputConsumerPath; +import net.fabricmc.tinyremapper.TinyRemapper; public class ModProcessor { public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); @@ -202,7 +205,7 @@ public class ModProcessor { } } - static JsonObject readInstallerJson(File file, Project project) { + public static JsonObject readInstallerJson(File file, Project project) { try { LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); String launchMethod = extension.getLoaderLaunchMethod(); diff --git a/src/main/java/net/fabricmc/loom/processors/JarProcessor.java b/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessor.java similarity index 96% rename from src/main/java/net/fabricmc/loom/processors/JarProcessor.java rename to src/main/java/net/fabricmc/loom/configuration/processors/JarProcessor.java index 0a02894..85624ce 100644 --- a/src/main/java/net/fabricmc/loom/processors/JarProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessor.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.processors; +package net.fabricmc.loom.configuration.processors; import java.io.File; diff --git a/src/main/java/net/fabricmc/loom/processors/JarProcessorManager.java b/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessorManager.java similarity index 97% rename from src/main/java/net/fabricmc/loom/processors/JarProcessorManager.java rename to src/main/java/net/fabricmc/loom/configuration/processors/JarProcessorManager.java index ab0d86d..634f4bb 100644 --- a/src/main/java/net/fabricmc/loom/processors/JarProcessorManager.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessorManager.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.processors; +package net.fabricmc.loom.configuration.processors; import java.io.File; import java.util.List; diff --git a/src/main/java/net/fabricmc/loom/processors/MinecraftProcessedProvider.java b/src/main/java/net/fabricmc/loom/configuration/processors/MinecraftProcessedProvider.java similarity index 92% rename from src/main/java/net/fabricmc/loom/processors/MinecraftProcessedProvider.java rename to src/main/java/net/fabricmc/loom/configuration/processors/MinecraftProcessedProvider.java index 6e4a4bb..3854781 100644 --- a/src/main/java/net/fabricmc/loom/processors/MinecraftProcessedProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/MinecraftProcessedProvider.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.processors; +package net.fabricmc.loom.configuration.processors; import java.io.File; import java.io.IOException; @@ -31,9 +31,9 @@ import java.util.function.Consumer; import org.apache.commons.io.FileUtils; import org.gradle.api.Project; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.providers.MinecraftMappedProvider; -import net.fabricmc.loom.providers.MinecraftProvider; +import net.fabricmc.loom.configuration.providers.MinecraftProvider; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider; import net.fabricmc.loom.util.Constants; public class MinecraftProcessedProvider extends MinecraftMappedProvider { diff --git a/src/main/java/net/fabricmc/loom/processors/dependency/ModDependencyInfo.java b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java similarity index 97% rename from src/main/java/net/fabricmc/loom/processors/dependency/ModDependencyInfo.java rename to src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java index fa48841..95872aa 100644 --- a/src/main/java/net/fabricmc/loom/processors/dependency/ModDependencyInfo.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.processors.dependency; +package net.fabricmc.loom.configuration.processors.dependency; import java.io.File; import java.io.IOException; @@ -37,7 +37,7 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.gradle.api.artifacts.Configuration; -import net.fabricmc.loom.util.ModProcessor; +import net.fabricmc.loom.configuration.mods.ModProcessor; public class ModDependencyInfo { private final String group; diff --git a/src/main/java/net/fabricmc/loom/processors/dependency/RemapData.java b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/RemapData.java similarity index 95% rename from src/main/java/net/fabricmc/loom/processors/dependency/RemapData.java rename to src/main/java/net/fabricmc/loom/configuration/processors/dependency/RemapData.java index 7854278..08ce7cf 100644 --- a/src/main/java/net/fabricmc/loom/processors/dependency/RemapData.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/RemapData.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.processors.dependency; +package net.fabricmc.loom.configuration.processors.dependency; import java.io.File; diff --git a/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java similarity index 97% rename from src/main/java/net/fabricmc/loom/providers/LaunchProvider.java rename to src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java index a928428..07b8c04 100644 --- a/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.providers; +package net.fabricmc.loom.configuration.providers; import java.io.File; import java.io.IOException; @@ -42,9 +42,9 @@ import org.apache.commons.io.FileUtils; import org.gradle.api.Project; import org.gradle.api.artifacts.Dependency; +import net.fabricmc.loom.configuration.DependencyProvider; +import net.fabricmc.loom.configuration.RemappedConfigurationEntry; import net.fabricmc.loom.util.Constants; -import net.fabricmc.loom.util.DependencyProvider; -import net.fabricmc.loom.util.RemappedConfigurationEntry; public class LaunchProvider extends DependencyProvider { public Dependency annotationDependency; diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java similarity index 95% rename from src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java rename to src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java index 54252d8..d6df8ad 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.providers; +package net.fabricmc.loom.configuration.providers; import java.io.File; import java.io.FileReader; @@ -40,11 +40,12 @@ import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.logging.Logger; +import net.fabricmc.loom.configuration.DependencyProvider; +import net.fabricmc.loom.configuration.providers.minecraft.ManifestVersion; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftLibraryProvider; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftVersionInfo; import net.fabricmc.loom.util.Constants; -import net.fabricmc.loom.util.DependencyProvider; import net.fabricmc.loom.util.DownloadUtil; -import net.fabricmc.loom.util.ManifestVersion; -import net.fabricmc.loom.util.MinecraftVersionInfo; import net.fabricmc.loom.util.StaticPathWatcher; import net.fabricmc.stitch.merge.JarMerger; diff --git a/src/main/java/net/fabricmc/loom/providers/MappingsCache.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsCache.java similarity index 97% rename from src/main/java/net/fabricmc/loom/providers/MappingsCache.java rename to src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsCache.java index e085547..cbe020d 100644 --- a/src/main/java/net/fabricmc/loom/providers/MappingsCache.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsCache.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.providers; +package net.fabricmc.loom.configuration.providers.mappings; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProvider.java similarity index 96% rename from src/main/java/net/fabricmc/loom/providers/MappingsProvider.java rename to src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProvider.java index 3330b86..ba2d827 100644 --- a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProvider.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.providers; +package net.fabricmc.loom.configuration.providers.mappings; import java.io.BufferedReader; import java.io.File; @@ -46,13 +46,15 @@ import org.zeroturnaround.zip.ZipEntrySource; import org.zeroturnaround.zip.ZipUtil; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.processors.JarProcessorManager; -import net.fabricmc.loom.processors.MinecraftProcessedProvider; +import net.fabricmc.loom.configuration.DependencyProvider; +import net.fabricmc.loom.configuration.accesswidener.AccessWidenerJarProcessor; +import net.fabricmc.loom.configuration.processors.JarProcessorManager; +import net.fabricmc.loom.configuration.processors.MinecraftProcessedProvider; +import net.fabricmc.loom.configuration.providers.MinecraftProvider; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.DeletingFileVisitor; -import net.fabricmc.loom.util.DependencyProvider; import net.fabricmc.loom.util.DownloadUtil; -import net.fabricmc.loom.util.accesswidener.AccessWidenerJarProcessor; import net.fabricmc.mapping.reader.v2.TinyV2Factory; import net.fabricmc.mapping.tree.TinyTree; import net.fabricmc.stitch.Command; diff --git a/src/main/java/net/fabricmc/loom/util/mappings/MojangMappingsDependency.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MojangMappingsDependency.java similarity index 98% rename from src/main/java/net/fabricmc/loom/util/mappings/MojangMappingsDependency.java rename to src/main/java/net/fabricmc/loom/configuration/providers/mappings/MojangMappingsDependency.java index b84d8d2..b86e04f 100644 --- a/src/main/java/net/fabricmc/loom/util/mappings/MojangMappingsDependency.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MojangMappingsDependency.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.mappings; +package net.fabricmc.loom.configuration.providers.mappings; import java.io.BufferedReader; import java.io.File; @@ -54,8 +54,8 @@ import org.zeroturnaround.zip.ZipEntrySource; import org.zeroturnaround.zip.ZipUtil; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftVersionInfo; import net.fabricmc.loom.util.DownloadUtil; -import net.fabricmc.loom.util.MinecraftVersionInfo; import net.fabricmc.lorenztiny.TinyMappingsReader; import net.fabricmc.mapping.tree.TinyMappingFactory; diff --git a/src/main/java/net/fabricmc/loom/util/ManifestVersion.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestVersion.java similarity index 95% rename from src/main/java/net/fabricmc/loom/util/ManifestVersion.java rename to src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestVersion.java index d8d9323..4cc2e33 100644 --- a/src/main/java/net/fabricmc/loom/util/ManifestVersion.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestVersion.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.configuration.providers.minecraft; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftLibraryProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftLibraryProvider.java similarity index 95% rename from src/main/java/net/fabricmc/loom/providers/MinecraftLibraryProvider.java rename to src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftLibraryProvider.java index 6ee9c0b..8822140 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftLibraryProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftLibraryProvider.java @@ -22,15 +22,15 @@ * SOFTWARE. */ -package net.fabricmc.loom.providers; +package net.fabricmc.loom.configuration.providers.minecraft; import java.io.File; import org.gradle.api.Project; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.configuration.providers.MinecraftProvider; import net.fabricmc.loom.util.Constants; -import net.fabricmc.loom.util.MinecraftVersionInfo; public class MinecraftLibraryProvider { public File MINECRAFT_LIBS; diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java similarity index 96% rename from src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java rename to src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java index 1767f4a..6301050 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.providers; +package net.fabricmc.loom.configuration.providers.minecraft; import java.io.File; import java.io.IOException; @@ -34,11 +34,13 @@ import java.util.function.Consumer; import com.google.common.collect.ImmutableMap; import org.gradle.api.Project; +import net.fabricmc.loom.configuration.DependencyProvider; +import net.fabricmc.loom.configuration.providers.MinecraftProvider; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; +import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.TinyRemapperMappingsHelper; import net.fabricmc.tinyremapper.OutputConsumerPath; import net.fabricmc.tinyremapper.TinyRemapper; -import net.fabricmc.loom.util.Constants; -import net.fabricmc.loom.util.DependencyProvider; public class MinecraftMappedProvider extends DependencyProvider { private static final Map JSR_TO_JETBRAINS = new ImmutableMap.Builder() diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftNativesProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftNativesProvider.java similarity index 95% rename from src/main/java/net/fabricmc/loom/providers/MinecraftNativesProvider.java rename to src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftNativesProvider.java index 0bec8f9..9f338ef 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftNativesProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftNativesProvider.java @@ -22,19 +22,19 @@ * SOFTWARE. */ -package net.fabricmc.loom.providers; +package net.fabricmc.loom.configuration.providers.minecraft; import java.io.File; import java.io.IOException; import java.net.URL; import org.gradle.api.GradleException; -import org.zeroturnaround.zip.ZipUtil; import org.gradle.api.Project; +import org.zeroturnaround.zip.ZipUtil; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.configuration.providers.MinecraftProvider; import net.fabricmc.loom.util.DownloadUtil; -import net.fabricmc.loom.util.MinecraftVersionInfo; public class MinecraftNativesProvider { public static void provide(MinecraftProvider minecraftProvider, Project project) throws IOException { diff --git a/src/main/java/net/fabricmc/loom/util/MinecraftVersionInfo.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionInfo.java similarity index 97% rename from src/main/java/net/fabricmc/loom/util/MinecraftVersionInfo.java rename to src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionInfo.java index b85982a..0994b4c 100644 --- a/src/main/java/net/fabricmc/loom/util/MinecraftVersionInfo.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionInfo.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.configuration.providers.minecraft; import java.io.File; import java.util.List; @@ -31,6 +31,9 @@ import java.util.Map; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.OperatingSystem; + public class MinecraftVersionInfo { public List libraries; public Map downloads; diff --git a/src/main/java/net/fabricmc/loom/util/assets/AssetIndex.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetIndex.java similarity index 96% rename from src/main/java/net/fabricmc/loom/util/assets/AssetIndex.java rename to src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetIndex.java index 96ef46c..bbe96f9 100644 --- a/src/main/java/net/fabricmc/loom/util/assets/AssetIndex.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetIndex.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.assets; +package net.fabricmc.loom.configuration.providers.minecraft.assets; import java.util.HashSet; import java.util.LinkedHashMap; diff --git a/src/main/java/net/fabricmc/loom/util/assets/AssetObject.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetObject.java similarity index 96% rename from src/main/java/net/fabricmc/loom/util/assets/AssetObject.java rename to src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetObject.java index 1f71bc8..32d16d6 100644 --- a/src/main/java/net/fabricmc/loom/util/assets/AssetObject.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetObject.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.assets; +package net.fabricmc.loom.configuration.providers.minecraft.assets; @SuppressWarnings("unused") public class AssetObject { diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftAssetsProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/MinecraftAssetsProvider.java similarity index 95% rename from src/main/java/net/fabricmc/loom/providers/MinecraftAssetsProvider.java rename to src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/MinecraftAssetsProvider.java index 3f2e39d..7b1ff14 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftAssetsProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/MinecraftAssetsProvider.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.providers; +package net.fabricmc.loom.configuration.providers.minecraft.assets; import java.io.File; import java.io.FileReader; @@ -40,13 +40,12 @@ import org.gradle.api.GradleException; import org.gradle.api.Project; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.configuration.providers.MinecraftProvider; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftVersionInfo; import net.fabricmc.loom.util.Checksum; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.DownloadUtil; -import net.fabricmc.loom.util.MinecraftVersionInfo; -import net.fabricmc.loom.util.assets.AssetIndex; -import net.fabricmc.loom.util.assets.AssetObject; -import net.fabricmc.loom.util.progress.ProgressLogger; +import net.fabricmc.loom.util.gradle.ProgressLogger; public class MinecraftAssetsProvider { public static void provide(MinecraftProvider minecraftProvider, Project project) throws IOException { diff --git a/src/main/java/net/fabricmc/loom/decompilers/DecompilerConfiguration.java b/src/main/java/net/fabricmc/loom/decompilers/DecompilerConfiguration.java new file mode 100644 index 0000000..5ec5466 --- /dev/null +++ b/src/main/java/net/fabricmc/loom/decompilers/DecompilerConfiguration.java @@ -0,0 +1,42 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016, 2017, 2018 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.decompilers; + +import org.gradle.api.Project; + +import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.decompilers.cfr.FabricCFRDecompiler; +import net.fabricmc.loom.decompilers.fernflower.FabricFernFlowerDecompiler; + +public final class DecompilerConfiguration { + private DecompilerConfiguration() { + } + + public static void setup(Project project) { + LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); + extension.addDecompiler(new FabricFernFlowerDecompiler(project)); + extension.addDecompiler(new FabricCFRDecompiler(project)); + } +} diff --git a/src/main/java/net/fabricmc/loom/util/LineNumberRemapper.java b/src/main/java/net/fabricmc/loom/decompilers/LineNumberRemapper.java similarity index 97% rename from src/main/java/net/fabricmc/loom/util/LineNumberRemapper.java rename to src/main/java/net/fabricmc/loom/decompilers/LineNumberRemapper.java index 74cb0d6..3b899c8 100644 --- a/src/main/java/net/fabricmc/loom/util/LineNumberRemapper.java +++ b/src/main/java/net/fabricmc/loom/decompilers/LineNumberRemapper.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.decompilers; import static java.text.MessageFormat.format; @@ -46,7 +46,8 @@ import org.objectweb.asm.ClassWriter; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; -import net.fabricmc.loom.util.progress.ProgressLogger; +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.gradle.ProgressLogger; /** * TODO, Move to stitch. diff --git a/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java b/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java index 138bed9..0f2f94a 100644 --- a/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java +++ b/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java @@ -35,7 +35,7 @@ import org.gradle.api.Project; import org.gradle.api.tasks.JavaExec; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.util.RunConfig; +import net.fabricmc.loom.configuration.ide.RunConfig; public abstract class AbstractRunTask extends JavaExec { private final Function configProvider; diff --git a/src/main/java/net/fabricmc/loom/task/CleanLoomBinaries.java b/src/main/java/net/fabricmc/loom/task/CleanLoomBinaries.java deleted file mode 100644 index 56895fd..0000000 --- a/src/main/java/net/fabricmc/loom/task/CleanLoomBinaries.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of fabric-loom, licensed under the MIT License (MIT). - * - * Copyright (c) 2016, 2017, 2018 FabricMC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package net.fabricmc.loom.task; - -import java.io.IOException; - -import org.apache.commons.io.FileUtils; -import org.gradle.api.tasks.TaskAction; - -import net.fabricmc.loom.LoomGradleExtension; - -public class CleanLoomBinaries extends AbstractLoomTask { - @TaskAction - public void run() { - LoomGradleExtension extension = getExtension(); - extension.getMinecraftProvider().getMergedJar().delete(); - extension.getMinecraftMappedProvider().getIntermediaryJar().delete(); - extension.getMinecraftMappedProvider().getMappedJar().delete(); - - try { - FileUtils.deleteDirectory(extension.getNativesDirectory()); - FileUtils.deleteDirectory(extension.getNativesJarStore()); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/java/net/fabricmc/loom/task/CleanLoomMappings.java b/src/main/java/net/fabricmc/loom/task/CleanLoomMappings.java deleted file mode 100644 index 57c7115..0000000 --- a/src/main/java/net/fabricmc/loom/task/CleanLoomMappings.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of fabric-loom, licensed under the MIT License (MIT). - * - * Copyright (c) 2016, 2017, 2018 FabricMC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package net.fabricmc.loom.task; - -import java.io.IOException; -import java.nio.file.Files; - -import org.gradle.api.tasks.TaskAction; - -import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.util.DeletingFileVisitor; - -public class CleanLoomMappings extends AbstractLoomTask { - @TaskAction - public void run() { - try { - LoomGradleExtension extension = getExtension(); - extension.getMappingsProvider().clean(); - extension.getMinecraftMappedProvider().getIntermediaryJar().delete(); - extension.getMinecraftMappedProvider().getMappedJar().delete(); - Files.walkFileTree(extension.getRootProjectBuildCache().toPath(), new DeletingFileVisitor()); - getExtension().getMappingsProvider().cleanFiles(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/net/fabricmc/loom/task/DownloadAssetsTask.java b/src/main/java/net/fabricmc/loom/task/DownloadAssetsTask.java index 26c9cfb..8607dbe 100644 --- a/src/main/java/net/fabricmc/loom/task/DownloadAssetsTask.java +++ b/src/main/java/net/fabricmc/loom/task/DownloadAssetsTask.java @@ -30,8 +30,8 @@ import org.gradle.api.Project; import org.gradle.api.tasks.TaskAction; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.MinecraftAssetsProvider; -import net.fabricmc.loom.providers.MinecraftNativesProvider; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftNativesProvider; +import net.fabricmc.loom.configuration.providers.minecraft.assets.MinecraftAssetsProvider; public class DownloadAssetsTask extends AbstractLoomTask { @TaskAction diff --git a/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java b/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java index 11124df..f3c8122 100644 --- a/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java @@ -32,7 +32,7 @@ import org.apache.commons.io.FileUtils; import org.gradle.api.tasks.TaskAction; import org.gradle.plugins.ide.eclipse.model.EclipseModel; -import net.fabricmc.loom.util.RunConfig; +import net.fabricmc.loom.configuration.ide.RunConfig; public class GenEclipseRunsTask extends AbstractLoomTask { @TaskAction diff --git a/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java b/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java index a021214..f7214b0 100644 --- a/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenIdeaProjectTask.java @@ -37,28 +37,28 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; +import org.gradle.api.Project; +import org.gradle.api.tasks.TaskAction; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import org.gradle.api.Project; -import org.gradle.api.tasks.TaskAction; -import net.fabricmc.loom.AbstractPlugin; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.util.RunConfig; +import net.fabricmc.loom.configuration.ide.RunConfig; public class GenIdeaProjectTask extends AbstractLoomTask { @TaskAction public void genIdeaRuns() throws IOException, ParserConfigurationException, SAXException, TransformerException { Project project = this.getProject(); + LoomGradleExtension extension = getExtension(); + // Only generate the idea runs on the root project - if (!AbstractPlugin.isRootProject(project)) { + if (!extension.isRootProject()) { return; } - LoomGradleExtension extension = getExtension(); project.getLogger().lifecycle(":Building idea workspace"); File file = project.file(project.getName() + ".iws"); diff --git a/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java b/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java index f9a6113..c2e9ab3 100644 --- a/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java @@ -37,7 +37,7 @@ import org.gradle.api.Project; import org.gradle.api.tasks.TaskAction; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.util.RunConfig; +import net.fabricmc.loom.configuration.ide.RunConfig; // Recommended vscode plugins: // https://marketplace.visualstudio.com/items?itemName=redhat.java diff --git a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java index 0a4c181..7c5862e 100644 --- a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java @@ -30,18 +30,20 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.Collection; +import java.util.Locale; import java.util.stream.Collectors; import javax.inject.Inject; import org.gradle.api.tasks.TaskAction; -import net.fabricmc.loom.util.Constants; -import net.fabricmc.loom.LoomGradlePlugin; +import net.fabricmc.loom.LoomGradleExtension; import net.fabricmc.loom.api.decompilers.DecompilationMetadata; import net.fabricmc.loom.api.decompilers.LoomDecompiler; -import net.fabricmc.loom.util.LineNumberRemapper; -import net.fabricmc.loom.util.progress.ProgressLogger; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; +import net.fabricmc.loom.decompilers.LineNumberRemapper; +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.gradle.ProgressLogger; import net.fabricmc.stitch.util.StitchUtil; public class GenerateSourcesTask extends AbstractLoomTask { @@ -64,18 +66,18 @@ public class GenerateSourcesTask extends AbstractLoomTask { DecompilationMetadata metadata = new DecompilationMetadata(threads, javaDocs, libraries); Path compiledJar = getExtension().getMappingsProvider().mappedProvider.getMappedJar().toPath(); - Path sourcesDestination = LoomGradlePlugin.getMappedByproduct(getProject(), "-sources.jar").toPath(); - Path linemap = LoomGradlePlugin.getMappedByproduct(getProject(), "-sources.lmap").toPath(); + Path sourcesDestination = getMappedJarFileWithSuffix("-sources.jar").toPath(); + Path linemap = getMappedJarFileWithSuffix("-sources.lmap").toPath(); decompiler.decompile(compiledJar, sourcesDestination, linemap, metadata); if (Files.exists(linemap)) { - Path linemappedJarDestination = LoomGradlePlugin.getMappedByproduct(getProject(), "-linemapped.jar").toPath(); + Path linemappedJarDestination = getMappedJarFileWithSuffix("-linemapped.jar").toPath(); remapLineNumbers(compiledJar, linemap, linemappedJarDestination); // In order for IDEs to recognize the new line mappings, we need to overwrite the existing compiled jar // with the linemapped one. In the name of not destroying the existing jar, we will copy it to somewhere else. - Path unlinemappedJar = LoomGradlePlugin.getMappedByproduct(getProject(), "-unlinemapped.jar").toPath(); + Path unlinemappedJar = getMappedJarFileWithSuffix("-unlinemapped.jar").toPath(); // The second time genSources is ran, we want to keep the existing unlinemapped jar. if (!Files.exists(unlinemappedJar)) { @@ -92,7 +94,7 @@ public class GenerateSourcesTask extends AbstractLoomTask { LineNumberRemapper remapper = new LineNumberRemapper(); remapper.readMappings(linemap.toFile()); - ProgressLogger progressLogger = net.fabricmc.loom.util.progress.ProgressLogger.getProgressFactory(getProject(), getClass().getName()); + ProgressLogger progressLogger = ProgressLogger.getProgressFactory(getProject(), getClass().getName()); progressLogger.start("Adjusting line numbers", "linemap"); try (StitchUtil.FileSystemDelegate inFs = StitchUtil.getJarFileSystem(oldCompiledJar.toFile(), true); @@ -102,4 +104,17 @@ public class GenerateSourcesTask extends AbstractLoomTask { progressLogger.completed(); } + + private File getMappedJarFileWithSuffix(String suffix) { + LoomGradleExtension extension = getProject().getExtensions().getByType(LoomGradleExtension.class); + MappingsProvider mappingsProvider = extension.getMappingsProvider(); + File mappedJar = mappingsProvider.mappedProvider.getMappedJar(); + String path = mappedJar.getAbsolutePath(); + + if (!path.toLowerCase(Locale.ROOT).endsWith(".jar")) { + throw new RuntimeException("Invalid mapped JAR path: " + path); + } + + return new File(path.substring(0, path.length() - 4) + suffix); + } } diff --git a/src/main/java/net/fabricmc/loom/task/LoomTasks.java b/src/main/java/net/fabricmc/loom/task/LoomTasks.java new file mode 100644 index 0000000..eda8cb5 --- /dev/null +++ b/src/main/java/net/fabricmc/loom/task/LoomTasks.java @@ -0,0 +1,108 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016, 2017, 2018 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.task; + +import org.gradle.api.Project; +import org.gradle.api.tasks.TaskContainer; + +import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.api.decompilers.LoomDecompiler; +import net.fabricmc.loom.decompilers.fernflower.FabricFernFlowerDecompiler; + +public final class LoomTasks { + private LoomTasks() { + } + + public static void registerTasks(Project project) { + TaskContainer tasks = project.getTasks(); + + tasks.register("migrateMappings", MigrateMappingsTask.class, t -> { + t.setDescription("Migrates mappings to a new version."); + t.getOutputs().upToDateWhen((o) -> false); + }); + + tasks.register("remapJar", RemapJarTask.class, t -> { + t.setDescription("Remaps the built project jar to intermediary mappings."); + t.setGroup("fabric"); + }); + + tasks.register("downloadAssets", DownloadAssetsTask.class, t -> t.setDescription("Downloads required assets for Fabric.")); + tasks.register("remapSourcesJar", RemapSourcesJarTask.class, t -> t.setDescription("Remaps the project sources jar to intermediary names.")); + + registerIDETasks(tasks); + registerRunTasks(tasks); + registerDecompileTasks(tasks, project); + } + + private static void registerIDETasks(TaskContainer tasks) { + tasks.register("genIdeaWorkspace", GenIdeaProjectTask.class, t -> { + t.setDescription("Generates an IntelliJ IDEA workspace from this project."); + t.dependsOn("idea", "downloadAssets"); + t.setGroup("ide"); + }); + + tasks.register("genEclipseRuns", GenEclipseRunsTask.class, t -> { + t.setDescription("Generates Eclipse run configurations for this project."); + t.dependsOn("downloadAssets"); + t.setGroup("ide"); + }); + + tasks.register("cleanEclipseRuns", CleanEclipseRunsTask.class, t -> { + t.setDescription("Removes Eclipse run configurations for this project."); + t.setGroup("ide"); + }); + + tasks.register("vscode", GenVsCodeProjectTask.class, t -> { + t.setDescription("Generates VSCode launch configurations."); + t.dependsOn("downloadAssets"); + t.setGroup("ide"); + }); + } + + private static void registerRunTasks(TaskContainer tasks) { + tasks.register("runClient", RunClientTask.class, t -> { + t.setDescription("Starts a development version of the Minecraft client."); + t.dependsOn("downloadAssets"); + t.setGroup("fabric"); + }); + + tasks.register("runServer", RunServerTask.class, t -> { + t.setDescription("Starts a development version of the Minecraft server."); + t.setGroup("fabric"); + }); + } + + private static void registerDecompileTasks(TaskContainer tasks, Project project) { + LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); + + project.afterEvaluate((p) -> { + for (LoomDecompiler decompiler : extension.getDecompilers()) { + String taskName = (decompiler instanceof FabricFernFlowerDecompiler) ? "genSources" : "genSourcesWith" + decompiler.name(); + // decompiler will be passed to the constructor of GenerateSourcesTask + tasks.register(taskName, GenerateSourcesTask.class, decompiler); + } + }); + } +} diff --git a/src/main/java/net/fabricmc/loom/task/MigrateMappingsTask.java b/src/main/java/net/fabricmc/loom/task/MigrateMappingsTask.java index c3b1d26..4de1997 100644 --- a/src/main/java/net/fabricmc/loom/task/MigrateMappingsTask.java +++ b/src/main/java/net/fabricmc/loom/task/MigrateMappingsTask.java @@ -49,10 +49,10 @@ import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.options.Option; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.providers.MinecraftMappedProvider; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; +import net.fabricmc.loom.configuration.providers.mappings.MojangMappingsDependency; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider; import net.fabricmc.loom.util.SourceRemapper; -import net.fabricmc.loom.util.mappings.MojangMappingsDependency; import net.fabricmc.lorenztiny.TinyMappingsJoiner; import net.fabricmc.mapping.tree.TinyMappingFactory; import net.fabricmc.mapping.tree.TinyTree; diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java index 0452264..ab6306c 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java @@ -45,14 +45,14 @@ import org.gradle.jvm.tasks.Jar; import org.zeroturnaround.zip.ZipUtil; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.util.GradleSupport; -import net.fabricmc.loom.util.MixinRefmapHelper; -import net.fabricmc.loom.util.NestedJars; +import net.fabricmc.loom.build.JarRemapper; +import net.fabricmc.loom.build.MixinRefmapHelper; +import net.fabricmc.loom.build.NestedJars; +import net.fabricmc.loom.configuration.accesswidener.AccessWidenerJarProcessor; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; import net.fabricmc.loom.util.TinyRemapperMappingsHelper; import net.fabricmc.loom.util.ZipReprocessorUtil; -import net.fabricmc.loom.util.accesswidener.AccessWidenerJarProcessor; -import net.fabricmc.loom.util.JarRemapper; +import net.fabricmc.loom.util.gradle.GradleSupport; import net.fabricmc.stitch.util.Pair; import net.fabricmc.tinyremapper.OutputConsumerPath; import net.fabricmc.tinyremapper.TinyRemapper; diff --git a/src/main/java/net/fabricmc/loom/task/RunClientTask.java b/src/main/java/net/fabricmc/loom/task/RunClientTask.java index 0200b1e..de0cc37 100644 --- a/src/main/java/net/fabricmc/loom/task/RunClientTask.java +++ b/src/main/java/net/fabricmc/loom/task/RunClientTask.java @@ -24,7 +24,7 @@ package net.fabricmc.loom.task; -import net.fabricmc.loom.util.RunConfig; +import net.fabricmc.loom.configuration.ide.RunConfig; public class RunClientTask extends AbstractRunTask { public RunClientTask() { diff --git a/src/main/java/net/fabricmc/loom/task/RunServerTask.java b/src/main/java/net/fabricmc/loom/task/RunServerTask.java index d1d3d95..977b65c 100644 --- a/src/main/java/net/fabricmc/loom/task/RunServerTask.java +++ b/src/main/java/net/fabricmc/loom/task/RunServerTask.java @@ -24,7 +24,7 @@ package net.fabricmc.loom.task; -import net.fabricmc.loom.util.RunConfig; +import net.fabricmc.loom.configuration.ide.RunConfig; public class RunServerTask extends AbstractRunTask { public RunServerTask() { diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java index a07b800..1af3bf2 100644 --- a/src/main/java/net/fabricmc/loom/util/Constants.java +++ b/src/main/java/net/fabricmc/loom/util/Constants.java @@ -29,6 +29,8 @@ import java.util.List; import com.google.common.collect.ImmutableList; import org.objectweb.asm.Opcodes; +import net.fabricmc.loom.configuration.RemappedConfigurationEntry; + public class Constants { public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/"; public static final String RESOURCES_BASE = "http://resources.download.minecraft.net/"; diff --git a/src/main/java/net/fabricmc/loom/util/DownloadUtil.java b/src/main/java/net/fabricmc/loom/util/DownloadUtil.java index 6eaaea7..506adae 100644 --- a/src/main/java/net/fabricmc/loom/util/DownloadUtil.java +++ b/src/main/java/net/fabricmc/loom/util/DownloadUtil.java @@ -35,9 +35,9 @@ import org.apache.commons.io.FileUtils; import org.gradle.api.Project; import org.gradle.api.logging.Logger; -public class DownloadUtil { - public static boolean refreshDeps = false; +import net.fabricmc.loom.LoomGradlePlugin; +public class DownloadUtil { /** * Download from the given {@link URL} to the given {@link File} so long as there are differences between them. * @@ -62,7 +62,7 @@ public class DownloadUtil { public static void downloadIfChanged(URL from, File to, Logger logger, boolean quiet) throws IOException { HttpURLConnection connection = (HttpURLConnection) from.openConnection(); - if (refreshDeps) { + if (LoomGradlePlugin.refreshDeps) { getETagFile(to).delete(); to.delete(); } diff --git a/src/main/java/net/fabricmc/loom/util/SourceRemapper.java b/src/main/java/net/fabricmc/loom/util/SourceRemapper.java index 36420d7..e7a5bef 100644 --- a/src/main/java/net/fabricmc/loom/util/SourceRemapper.java +++ b/src/main/java/net/fabricmc/loom/util/SourceRemapper.java @@ -41,9 +41,10 @@ import org.gradle.api.artifacts.Dependency; import org.zeroturnaround.zip.ZipUtil; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.MappingsProvider; -import net.fabricmc.loom.providers.LaunchProvider; -import net.fabricmc.loom.util.progress.ProgressLogger; +import net.fabricmc.loom.configuration.RemappedConfigurationEntry; +import net.fabricmc.loom.configuration.providers.LaunchProvider; +import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; +import net.fabricmc.loom.util.gradle.ProgressLogger; import net.fabricmc.lorenztiny.TinyMappingsReader; import net.fabricmc.mapping.tree.TinyTree; import net.fabricmc.stitch.util.StitchUtil; diff --git a/src/main/java/net/fabricmc/loom/util/GradleSupport.java b/src/main/java/net/fabricmc/loom/util/gradle/GradleSupport.java similarity index 98% rename from src/main/java/net/fabricmc/loom/util/GradleSupport.java rename to src/main/java/net/fabricmc/loom/util/gradle/GradleSupport.java index 600118d..2ead1f7 100644 --- a/src/main/java/net/fabricmc/loom/util/GradleSupport.java +++ b/src/main/java/net/fabricmc/loom/util/gradle/GradleSupport.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util; +package net.fabricmc.loom.util.gradle; import java.lang.reflect.Method; diff --git a/src/main/java/net/fabricmc/loom/util/progress/ProgressLogger.java b/src/main/java/net/fabricmc/loom/util/gradle/ProgressLogger.java similarity index 99% rename from src/main/java/net/fabricmc/loom/util/progress/ProgressLogger.java rename to src/main/java/net/fabricmc/loom/util/gradle/ProgressLogger.java index 3cce705..448331d 100644 --- a/src/main/java/net/fabricmc/loom/util/progress/ProgressLogger.java +++ b/src/main/java/net/fabricmc/loom/util/gradle/ProgressLogger.java @@ -22,7 +22,7 @@ * SOFTWARE. */ -package net.fabricmc.loom.util.progress; +package net.fabricmc.loom.util.gradle; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;