General code cleanup (#313)
* First general cleanup pass * Review feedback * Fix build * Fix tests
This commit is contained in:
		
							parent
							
								
									b0860c36d6
								
							
						
					
					
						commit
						03444f26b0
					
				
					 61 changed files with 559 additions and 498 deletions
				
			
		|  | @ -1,4 +1,4 @@ | ||||||
| [*.{gradle,java}] | [*.{gradle,java}] | ||||||
| indent_style = tab | indent_style = tab | ||||||
| ij_continuation_indent_size = 8 | ij_continuation_indent_size = 8 | ||||||
| ij_java_imports_layout = $*,|,java.**,|,*,|,net.fabricmc.** | ij_java_imports_layout = $*,|,java.**,|,javax.**,|,*,|,net.fabricmc.** | ||||||
|  |  | ||||||
|  | @ -73,6 +73,9 @@ dependencies { | ||||||
| 	testImplementation('org.spockframework:spock-core:1.3-groovy-2.4') { | 	testImplementation('org.spockframework:spock-core:1.3-groovy-2.4') { | ||||||
| 		exclude module: 'groovy-all' | 		exclude module: 'groovy-all' | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	compileOnly 'org.jetbrains:annotations:20.1.0' | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| jar { | jar { | ||||||
|  |  | ||||||
|  | @ -38,8 +38,6 @@ import java.util.function.Function; | ||||||
| import java.util.function.Supplier; | import java.util.function.Supplier; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| 
 | 
 | ||||||
| import javax.annotation.Nullable; |  | ||||||
| 
 |  | ||||||
| import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||||
| import org.cadixdev.lorenz.MappingSet; | import org.cadixdev.lorenz.MappingSet; | ||||||
| import org.cadixdev.mercury.Mercury; | 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.artifacts.Dependency; | ||||||
| import org.gradle.api.file.ConfigurableFileCollection; | import org.gradle.api.file.ConfigurableFileCollection; | ||||||
| import org.gradle.api.plugins.BasePluginConvention; | import org.gradle.api.plugins.BasePluginConvention; | ||||||
|  | import org.jetbrains.annotations.Nullable; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.api.decompilers.LoomDecompiler; | import net.fabricmc.loom.api.decompilers.LoomDecompiler; | ||||||
| import net.fabricmc.loom.processors.JarProcessor; | import net.fabricmc.loom.configuration.LoomDependencyManager; | ||||||
| import net.fabricmc.loom.processors.JarProcessorManager; | import net.fabricmc.loom.configuration.processors.JarProcessor; | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.configuration.processors.JarProcessorManager; | ||||||
| import net.fabricmc.loom.providers.MinecraftMappedProvider; | import net.fabricmc.loom.configuration.providers.MinecraftProvider; | ||||||
| import net.fabricmc.loom.providers.MinecraftProvider; | import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; | ||||||
| import net.fabricmc.loom.util.LoomDependencyManager; | import net.fabricmc.loom.configuration.providers.mappings.MojangMappingsDependency; | ||||||
| import net.fabricmc.loom.util.mappings.MojangMappingsDependency; | import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider; | ||||||
| 
 | 
 | ||||||
| public class LoomGradleExtension { | public class LoomGradleExtension { | ||||||
| 	public String runDir = "run"; | 	public String runDir = "run"; | ||||||
|  | @ -116,7 +115,7 @@ public class LoomGradleExtension { | ||||||
| 
 | 
 | ||||||
| 	public LoomGradleExtension(Project project) { | 	public LoomGradleExtension(Project project) { | ||||||
| 		this.project = project; | 		this.project = project; | ||||||
| 		this.autoGenIDERuns = AbstractPlugin.isRootProject(project); | 		this.autoGenIDERuns = isRootProject(); | ||||||
| 		this.unmappedMods = project.files(); | 		this.unmappedMods = project.files(); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -281,7 +280,7 @@ public class LoomGradleExtension { | ||||||
| 		Project p = this.project; | 		Project p = this.project; | ||||||
| 		T result; | 		T result; | ||||||
| 
 | 
 | ||||||
| 		while (!AbstractPlugin.isRootProject(p)) { | 		while (!isRootProject()) { | ||||||
| 			if ((result = projectTFunction.apply(p)) != null) { | 			if ((result = projectTFunction.apply(p)) != null) { | ||||||
| 				return result; | 				return result; | ||||||
| 			} | 			} | ||||||
|  | @ -425,4 +424,8 @@ public class LoomGradleExtension { | ||||||
| 	public Set<File> getAllMixinMappings() { | 	public Set<File> getAllMixinMappings() { | ||||||
| 		return Collections.unmodifiableSet(mixinMappings); | 		return Collections.unmodifiableSet(mixinMappings); | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	public List<LoomDecompiler> getDecompilers() { | ||||||
|  | 		return decompilers; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -24,118 +24,47 @@ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom; | package net.fabricmc.loom; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import com.google.common.collect.ImmutableMap; | ||||||
| import java.util.Locale; | import org.gradle.api.Plugin; | ||||||
| 
 |  | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| import org.gradle.api.tasks.TaskContainer; |  | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.api.decompilers.LoomDecompiler; | import net.fabricmc.loom.configuration.CompileConfiguration; | ||||||
| import net.fabricmc.loom.decompilers.cfr.FabricCFRDecompiler; | import net.fabricmc.loom.configuration.FabricApiExtension; | ||||||
| import net.fabricmc.loom.decompilers.fernflower.FabricFernFlowerDecompiler; | import net.fabricmc.loom.configuration.MavenPublication; | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.configuration.ide.IdeConfiguration; | ||||||
| import net.fabricmc.loom.task.CleanEclipseRunsTask; | import net.fabricmc.loom.configuration.providers.mappings.MappingsCache; | ||||||
| import net.fabricmc.loom.task.CleanLoomBinaries; | import net.fabricmc.loom.decompilers.DecompilerConfiguration; | ||||||
| import net.fabricmc.loom.task.CleanLoomMappings; | import net.fabricmc.loom.task.LoomTasks; | ||||||
| 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; |  | ||||||
| 
 | 
 | ||||||
| public class LoomGradlePlugin extends AbstractPlugin { | public class LoomGradlePlugin implements Plugin<Project> { | ||||||
| 	public static File getMappedByproduct(Project project, String suffix) { | 	public static boolean refreshDeps; | ||||||
| 		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); |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void apply(Project target) { | 	public void apply(Project project) { | ||||||
| 		super.apply(target); | 		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.")); | 		if (refreshDeps) { | ||||||
| 		tasks.register("cleanLoomMappings", CleanLoomMappings.class, t -> t.setDescription("Removes mappings downloaded by Loom.")); | 			MappingsCache.INSTANCE.invalidate(); | ||||||
|  | 			project.getLogger().lifecycle("Refresh dependencies is in use, loom will be significantly slower."); | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 		tasks.register("cleanLoom").configure(task -> { | 		// Apply default plugins | ||||||
| 			task.setGroup("fabric"); | 		project.apply(ImmutableMap.of("plugin", "java")); | ||||||
| 			task.setDescription("Runs all Loom cleanup tasks."); | 		project.apply(ImmutableMap.of("plugin", "eclipse")); | ||||||
| 			task.dependsOn(tasks.getByName("cleanLoomBinaries")); | 		project.apply(ImmutableMap.of("plugin", "idea")); | ||||||
| 			task.dependsOn(tasks.getByName("cleanLoomMappings")); |  | ||||||
| 		}); |  | ||||||
| 
 | 
 | ||||||
| 		tasks.register("migrateMappings", MigrateMappingsTask.class, t -> { | 		// Setup extensions, loom shadows minecraft | ||||||
| 			t.setDescription("Migrates mappings to a new version."); | 		project.getExtensions().create("minecraft", LoomGradleExtension.class, project); | ||||||
| 			t.getOutputs().upToDateWhen((o) -> false); | 		project.getExtensions().add("loom", project.getExtensions().getByName("minecraft")); | ||||||
| 		}); | 		project.getExtensions().create("fabricApi", FabricApiExtension.class, project); | ||||||
| 
 | 
 | ||||||
| 		tasks.register("remapJar", RemapJarTask.class, t -> { | 		CompileConfiguration.setupConfigurations(project); | ||||||
| 			t.setDescription("Remaps the built project jar to intermediary mappings."); | 		IdeConfiguration.setup(project); | ||||||
| 			t.setGroup("fabric"); | 		CompileConfiguration.configureCompile(project); | ||||||
| 		}); | 		MavenPublication.configure(project); | ||||||
| 
 | 		LoomTasks.registerTasks(project); | ||||||
| 		tasks.register("downloadAssets", DownloadAssetsTask.class, t -> t.setDescription("Downloads required assets for Fabric.")); | 		DecompilerConfiguration.setup(project); | ||||||
| 
 |  | ||||||
| 		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); |  | ||||||
| 			} |  | ||||||
| 		}); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.build; | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.nio.file.Path; | import java.nio.file.Path; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.build; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.build; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -45,8 +45,12 @@ import org.gradle.jvm.JvmLibrary; | ||||||
| import org.gradle.language.base.artifact.SourcesArtifact; | import org.gradle.language.base.artifact.SourcesArtifact; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.processors.dependency.ModDependencyInfo; | import net.fabricmc.loom.configuration.RemappedConfigurationEntry; | ||||||
| import net.fabricmc.loom.processors.dependency.RemapData; | 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 class ModCompileRemapper { | ||||||
| 	public static void remapDependencies(Project project, String mappingsSuffix, LoomGradleExtension extension, SourceRemapper sourceRemapper) { | 	public static void remapDependencies(Project project, String mappingsSuffix, LoomGradleExtension extension, SourceRemapper sourceRemapper) { | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.build; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -41,24 +41,25 @@ import com.google.gson.GsonBuilder; | ||||||
| import com.google.gson.JsonArray; | import com.google.gson.JsonArray; | ||||||
| import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||||
| import org.apache.commons.io.FileUtils; | 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.Configuration; | ||||||
| import org.gradle.api.artifacts.ResolvedDependency; |  | ||||||
| import org.gradle.api.artifacts.Dependency; | import org.gradle.api.artifacts.Dependency; | ||||||
|  | import org.gradle.api.artifacts.DependencySet; | ||||||
| import org.gradle.api.artifacts.ProjectDependency; | import org.gradle.api.artifacts.ProjectDependency; | ||||||
| import org.gradle.api.artifacts.ResolvedArtifact; | 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.FileSource; | ||||||
| import org.zeroturnaround.zip.ZipEntrySource; | import org.zeroturnaround.zip.ZipEntrySource; | ||||||
| import org.zeroturnaround.zip.ZipUtil; | import org.zeroturnaround.zip.ZipUtil; | ||||||
| import org.zeroturnaround.zip.transform.StringZipEntryTransformer; | import org.zeroturnaround.zip.transform.StringZipEntryTransformer; | ||||||
| import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry; | 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.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.task.RemapJarTask; | import net.fabricmc.loom.task.RemapJarTask; | ||||||
|  | import net.fabricmc.loom.util.Constants; | ||||||
| 
 | 
 | ||||||
| public class NestedJars { | public class NestedJars { | ||||||
| 	private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); | 	private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.mixin; | package net.fabricmc.loom.build.mixin; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.mixin; | package net.fabricmc.loom.build.mixin; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.mixin; | package net.fabricmc.loom.build.mixin; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.mixin; | package net.fabricmc.loom.build.mixin; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| 
 | 
 | ||||||
|  | @ -22,93 +22,50 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom; | package net.fabricmc.loom.configuration; | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.util.HashSet; |  | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.Optional; |  | ||||||
| import java.util.Set; | 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.Project; | ||||||
| import org.gradle.api.Task; | import org.gradle.api.Task; | ||||||
| import org.gradle.api.UnknownTaskException; | import org.gradle.api.UnknownTaskException; | ||||||
| import org.gradle.api.artifacts.Configuration; | 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.artifacts.repositories.MavenArtifactRepository; | ||||||
| import org.gradle.api.plugins.JavaPlugin; | import org.gradle.api.plugins.JavaPlugin; | ||||||
| import org.gradle.api.plugins.JavaPluginConvention; | 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.SourceSet; | ||||||
| import org.gradle.api.tasks.bundling.AbstractArchiveTask; | import org.gradle.api.tasks.bundling.AbstractArchiveTask; | ||||||
| import org.gradle.api.tasks.javadoc.Javadoc; | 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.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MappingsCache; | import net.fabricmc.loom.build.JarRemapper; | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.build.NestedJars; | ||||||
| import net.fabricmc.loom.providers.MinecraftProvider; | 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.AbstractLoomTask; | ||||||
|  | import net.fabricmc.loom.task.RemapAllSourcesTask; | ||||||
| import net.fabricmc.loom.task.RemapJarTask; | import net.fabricmc.loom.task.RemapJarTask; | ||||||
| import net.fabricmc.loom.task.RemapSourcesJarTask; | import net.fabricmc.loom.task.RemapSourcesJarTask; | ||||||
| import net.fabricmc.loom.task.RemapAllSourcesTask; |  | ||||||
| import net.fabricmc.loom.util.Constants; | 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.SourceRemapper; | ||||||
| import net.fabricmc.loom.util.JarRemapper; |  | ||||||
| 
 | 
 | ||||||
| public class AbstractPlugin implements Plugin<Project> { | /** | ||||||
| 	protected Project project; |  * Add Minecraft dependencies to compile time. | ||||||
| 
 |  */ | ||||||
| 	public static boolean isRootProject(Project project) { | public final class CompileConfiguration { | ||||||
| 		return project.getRootProject() == project; | 	private CompileConfiguration() { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private void extendsFrom(String a, String b) { | 	public static void setupConfigurations(Project project) { | ||||||
| 		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); |  | ||||||
| 
 |  | ||||||
| 		// Force add Mojang repository | 		// 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); | 		Configuration modCompileClasspathConfig = project.getConfigurations().maybeCreate(Constants.Configurations.MOD_COMPILE_CLASSPATH); | ||||||
| 		modCompileClasspathConfig.setTransitive(true); | 		modCompileClasspathConfig.setTransitive(true); | ||||||
|  | @ -136,31 +93,23 @@ public class AbstractPlugin implements Plugin<Project> { | ||||||
| 			Configuration compileModsMappedConfig = project.getConfigurations().maybeCreate(entry.getRemappedConfiguration()); | 			Configuration compileModsMappedConfig = project.getConfigurations().maybeCreate(entry.getRemappedConfiguration()); | ||||||
| 			compileModsMappedConfig.setTransitive(false); // Don't get transitive deps of already remapped mods | 			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()) { | 			if (entry.isOnModCompileClasspath()) { | ||||||
| 				extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH, entry.getSourceConfiguration()); | 				extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH, entry.getSourceConfiguration(), project); | ||||||
| 				extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH_MAPPED, entry.getRemappedConfiguration()); | 				extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH_MAPPED, entry.getRemappedConfiguration(), project); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		extendsFrom("compileClasspath", Constants.Configurations.MINECRAFT_NAMED); | 		extendsFrom(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.MINECRAFT_NAMED, project); | ||||||
| 		extendsFrom("runtimeClasspath", Constants.Configurations.MINECRAFT_NAMED); | 		extendsFrom(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.MINECRAFT_NAMED, project); | ||||||
| 		extendsFrom("testCompileClasspath", Constants.Configurations.MINECRAFT_NAMED); | 		extendsFrom(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.MINECRAFT_NAMED, project); | ||||||
| 		extendsFrom("testRuntimeClasspath", Constants.Configurations.MINECRAFT_NAMED); | 		extendsFrom(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.MINECRAFT_NAMED, project); | ||||||
| 
 | 
 | ||||||
| 		extendsFrom(Constants.Configurations.LOADER_DEPENDENCIES, Constants.Configurations.MINECRAFT_DEPENDENCIES); | 		extendsFrom(Constants.Configurations.LOADER_DEPENDENCIES, Constants.Configurations.MINECRAFT_DEPENDENCIES, project); | ||||||
| 		extendsFrom(Constants.Configurations.MINECRAFT_NAMED, Constants.Configurations.LOADER_DEPENDENCIES); | 		extendsFrom(Constants.Configurations.MINECRAFT_NAMED, Constants.Configurations.LOADER_DEPENDENCIES, project); | ||||||
| 
 | 
 | ||||||
| 		extendsFrom("compile", Constants.Configurations.MAPPINGS_FINAL); | 		extendsFrom(JavaPlugin.COMPILE_CONFIGURATION_NAME, Constants.Configurations.MAPPINGS_FINAL, project); | ||||||
| 
 |  | ||||||
| 		configureIDEs(); |  | ||||||
| 		configureCompile(); |  | ||||||
| 		configureMaven(); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	public Project getProject() { |  | ||||||
| 		return project; |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  | @ -171,30 +120,14 @@ public class AbstractPlugin implements Plugin<Project> { | ||||||
| 	 * @param url    The URL of the repository | 	 * @param url    The URL of the repository | ||||||
| 	 * @return An object containing the name and the URL of the repository that can be modified later | 	 * @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 -> { | 		return target.getRepositories().maven(repo -> { | ||||||
| 			repo.setName(name); | 			repo.setName(name); | ||||||
| 			repo.setUrl(url); | 			repo.setUrl(url); | ||||||
| 		}); | 		}); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	public static void configureCompile(Project project) { | ||||||
| 	 * 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() { |  | ||||||
| 		JavaPluginConvention javaModule = (JavaPluginConvention) project.getConvention().getPlugins().get("java"); | 		JavaPluginConvention javaModule = (JavaPluginConvention) project.getConvention().getPlugins().get("java"); | ||||||
| 
 | 
 | ||||||
| 		SourceSet main = javaModule.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); | 		SourceSet main = javaModule.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); | ||||||
|  | @ -231,9 +164,9 @@ public class AbstractPlugin implements Plugin<Project> { | ||||||
| 			LoomDependencyManager dependencyManager = new LoomDependencyManager(); | 			LoomDependencyManager dependencyManager = new LoomDependencyManager(); | ||||||
| 			extension.setDependencyManager(dependencyManager); | 			extension.setDependencyManager(dependencyManager); | ||||||
| 
 | 
 | ||||||
| 			dependencyManager.addProvider(new MinecraftProvider(getProject())); | 			dependencyManager.addProvider(new MinecraftProvider(project)); | ||||||
| 			dependencyManager.addProvider(new MappingsProvider(getProject())); | 			dependencyManager.addProvider(new MappingsProvider(project)); | ||||||
| 			dependencyManager.addProvider(new LaunchProvider(getProject())); | 			dependencyManager.addProvider(new LaunchProvider(project)); | ||||||
| 
 | 
 | ||||||
| 			dependencyManager.handleDependencies(project1); | 			dependencyManager.handleDependencies(project1); | ||||||
| 
 | 
 | ||||||
|  | @ -365,66 +298,7 @@ public class AbstractPlugin implements Plugin<Project> { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	protected void configureMaven() { | 	private static void extendsFrom(String a, String b, Project project) { | ||||||
| 		project.afterEvaluate((p) -> { | 		project.getConfigurations().getByName(a).extendsFrom(project.getConfigurations().getByName(b)); | ||||||
| 			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<String> foundArtifacts = new HashSet<>(); |  | ||||||
| 
 |  | ||||||
| 									GroovyXmlUtil.childrenNodesStream(dependencies).filter((n) -> "dependency".equals(n.name())).forEach((n) -> { |  | ||||||
| 										Optional<Node> groupId = GroovyXmlUtil.getNode(n, "groupId"); |  | ||||||
| 										Optional<Node> 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<ExcludeRule> 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()); |  | ||||||
| 												} |  | ||||||
| 											} |  | ||||||
| 										} |  | ||||||
| 									} |  | ||||||
| 								})); |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 					}); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		}); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.nio.charset.StandardCharsets; | import java.nio.charset.StandardCharsets; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -40,6 +40,7 @@ import org.w3c.dom.Element; | ||||||
| import org.w3c.dom.NodeList; | import org.w3c.dom.NodeList; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
|  | import net.fabricmc.loom.util.DownloadUtil; | ||||||
| 
 | 
 | ||||||
| public class FabricApiExtension { | public class FabricApiExtension { | ||||||
| 	private final Project project; | 	private final Project project; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  | @ -39,8 +39,12 @@ import org.gradle.api.artifacts.ExternalModuleDependency; | ||||||
| import org.gradle.api.artifacts.repositories.MavenArtifactRepository; | import org.gradle.api.artifacts.repositories.MavenArtifactRepository; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.build.ModCompileRemapper; | ||||||
| import net.fabricmc.loom.util.DependencyProvider.DependencyInfo; | 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 { | public class LoomDependencyManager { | ||||||
| 	private static class ProviderList { | 	private static class ProviderList { | ||||||
|  | @ -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<String> foundArtifacts = new HashSet<>(); | ||||||
|  | 
 | ||||||
|  | 					GroovyXmlUtil.childrenNodesStream(dependencies).filter((n) -> "dependency".equals(n.name())).forEach((n) -> { | ||||||
|  | 						Optional<Node> groupId = GroovyXmlUtil.getNode(n, "groupId"); | ||||||
|  | 						Optional<Node> 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<ExcludeRule> 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()); | ||||||
|  | 						} | ||||||
|  | 					} | ||||||
|  | 				})); | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration; | ||||||
| 
 | 
 | ||||||
| import org.gradle.api.artifacts.ConfigurationContainer; | import org.gradle.api.artifacts.ConfigurationContainer; | ||||||
| 
 | 
 | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.accesswidener; | package net.fabricmc.loom.configuration.accesswidener; | ||||||
| 
 | 
 | ||||||
| import java.io.BufferedReader; | import java.io.BufferedReader; | ||||||
| import java.io.File; | import java.io.File; | ||||||
|  | @ -48,14 +48,14 @@ import org.zeroturnaround.zip.transform.ZipEntryTransformer; | ||||||
| import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry; | import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.accesswidener.AccessWidener; | import net.fabricmc.accesswidener.AccessWidener; | ||||||
| import net.fabricmc.accesswidener.AccessWidenerRemapper; |  | ||||||
| import net.fabricmc.accesswidener.AccessWidenerReader; | import net.fabricmc.accesswidener.AccessWidenerReader; | ||||||
|  | import net.fabricmc.accesswidener.AccessWidenerRemapper; | ||||||
| import net.fabricmc.accesswidener.AccessWidenerVisitor; | import net.fabricmc.accesswidener.AccessWidenerVisitor; | ||||||
| import net.fabricmc.accesswidener.AccessWidenerWriter; | import net.fabricmc.accesswidener.AccessWidenerWriter; | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.processors.JarProcessor; | import net.fabricmc.loom.configuration.processors.JarProcessor; | ||||||
| import net.fabricmc.loom.util.Constants; |  | ||||||
| import net.fabricmc.loom.util.Checksum; | import net.fabricmc.loom.util.Checksum; | ||||||
|  | import net.fabricmc.loom.util.Constants; | ||||||
| import net.fabricmc.tinyremapper.TinyRemapper; | import net.fabricmc.tinyremapper.TinyRemapper; | ||||||
| 
 | 
 | ||||||
| public class AccessWidenerJarProcessor implements JarProcessor { | public class AccessWidenerJarProcessor implements JarProcessor { | ||||||
|  | @ -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); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -22,9 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration.ide; | ||||||
| 
 |  | ||||||
| import static net.fabricmc.loom.AbstractPlugin.isRootProject; |  | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -41,13 +39,15 @@ import com.google.gson.JsonElement; | ||||||
| import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||||
| import org.apache.commons.io.FileUtils; | import org.apache.commons.io.FileUtils; | ||||||
| import org.apache.commons.io.IOUtils; | 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.Document; | ||||||
| import org.w3c.dom.Element; | import org.w3c.dom.Element; | ||||||
| import org.w3c.dom.Node; | 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.LoomGradleExtension; | ||||||
|  | import net.fabricmc.loom.util.Constants; | ||||||
|  | import net.fabricmc.loom.util.OperatingSystem; | ||||||
| 
 | 
 | ||||||
| public class RunConfig { | public class RunConfig { | ||||||
| 	public String configName; | 	public String configName; | ||||||
|  | @ -105,7 +105,7 @@ public class RunConfig { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private static void populate(Project project, LoomGradleExtension extension, RunConfig runConfig, String mode) { | 	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.eclipseProjectName = project.getExtensions().getByType(EclipseModel.class).getProject().getName(); | ||||||
| 		runConfig.ideaModuleName = getIdeaModuleName(project); | 		runConfig.ideaModuleName = getIdeaModuleName(project); | ||||||
| 		runConfig.runDir = "file://$PROJECT_DIR$/" + extension.runDir; | 		runConfig.runDir = "file://$PROJECT_DIR$/" + extension.runDir; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration.ide; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -32,8 +32,8 @@ import org.apache.commons.io.FileUtils; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MinecraftAssetsProvider; | import net.fabricmc.loom.configuration.providers.minecraft.MinecraftNativesProvider; | ||||||
| import net.fabricmc.loom.providers.MinecraftNativesProvider; | import net.fabricmc.loom.configuration.providers.minecraft.assets.MinecraftAssetsProvider; | ||||||
| 
 | 
 | ||||||
| public class SetupIntelijRunConfigs { | public class SetupIntelijRunConfigs { | ||||||
| 	public static void setup(Project project) { | 	public static void setup(Project project) { | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration.mods; | ||||||
| 
 | 
 | ||||||
| import java.io.BufferedReader; | import java.io.BufferedReader; | ||||||
| import java.io.ByteArrayInputStream; | import java.io.ByteArrayInputStream; | ||||||
|  | @ -56,12 +56,15 @@ import net.fabricmc.accesswidener.AccessWidenerReader; | ||||||
| import net.fabricmc.accesswidener.AccessWidenerRemapper; | import net.fabricmc.accesswidener.AccessWidenerRemapper; | ||||||
| import net.fabricmc.accesswidener.AccessWidenerWriter; | import net.fabricmc.accesswidener.AccessWidenerWriter; | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.configuration.RemappedConfigurationEntry; | ||||||
| import net.fabricmc.loom.providers.MinecraftMappedProvider; | import net.fabricmc.loom.configuration.processors.dependency.ModDependencyInfo; | ||||||
| import net.fabricmc.loom.processors.dependency.ModDependencyInfo; | import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; | ||||||
| import net.fabricmc.tinyremapper.TinyRemapper; | 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.InputTag; | ||||||
| import net.fabricmc.tinyremapper.OutputConsumerPath; | import net.fabricmc.tinyremapper.OutputConsumerPath; | ||||||
|  | import net.fabricmc.tinyremapper.TinyRemapper; | ||||||
| 
 | 
 | ||||||
| public class ModProcessor { | public class ModProcessor { | ||||||
| 	public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); | 	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 { | 		try { | ||||||
| 			LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); | 			LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); | ||||||
| 			String launchMethod = extension.getLoaderLaunchMethod(); | 			String launchMethod = extension.getLoaderLaunchMethod(); | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.processors; | package net.fabricmc.loom.configuration.processors; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| 
 | 
 | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.processors; | package net.fabricmc.loom.configuration.processors; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.processors; | package net.fabricmc.loom.configuration.processors; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -31,9 +31,9 @@ import java.util.function.Consumer; | ||||||
| import org.apache.commons.io.FileUtils; | import org.apache.commons.io.FileUtils; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.configuration.providers.MinecraftProvider; | ||||||
| import net.fabricmc.loom.providers.MinecraftMappedProvider; | import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; | ||||||
| import net.fabricmc.loom.providers.MinecraftProvider; | import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider; | ||||||
| import net.fabricmc.loom.util.Constants; | import net.fabricmc.loom.util.Constants; | ||||||
| 
 | 
 | ||||||
| public class MinecraftProcessedProvider extends MinecraftMappedProvider { | public class MinecraftProcessedProvider extends MinecraftMappedProvider { | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.processors.dependency; | package net.fabricmc.loom.configuration.processors.dependency; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -37,7 +37,7 @@ import org.apache.commons.io.FileUtils; | ||||||
| import org.apache.commons.io.IOUtils; | import org.apache.commons.io.IOUtils; | ||||||
| import org.gradle.api.artifacts.Configuration; | import org.gradle.api.artifacts.Configuration; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.util.ModProcessor; | import net.fabricmc.loom.configuration.mods.ModProcessor; | ||||||
| 
 | 
 | ||||||
| public class ModDependencyInfo { | public class ModDependencyInfo { | ||||||
| 	private final String group; | 	private final String group; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.processors.dependency; | package net.fabricmc.loom.configuration.processors.dependency; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| 
 | 
 | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.providers; | package net.fabricmc.loom.configuration.providers; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -42,9 +42,9 @@ import org.apache.commons.io.FileUtils; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| import org.gradle.api.artifacts.Dependency; | 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.Constants; | ||||||
| import net.fabricmc.loom.util.DependencyProvider; |  | ||||||
| import net.fabricmc.loom.util.RemappedConfigurationEntry; |  | ||||||
| 
 | 
 | ||||||
| public class LaunchProvider extends DependencyProvider { | public class LaunchProvider extends DependencyProvider { | ||||||
| 	public Dependency annotationDependency; | 	public Dependency annotationDependency; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.providers; | package net.fabricmc.loom.configuration.providers; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.FileReader; | import java.io.FileReader; | ||||||
|  | @ -40,11 +40,12 @@ import org.gradle.api.GradleException; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| import org.gradle.api.logging.Logger; | 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.Constants; | ||||||
| import net.fabricmc.loom.util.DependencyProvider; |  | ||||||
| import net.fabricmc.loom.util.DownloadUtil; | 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.loom.util.StaticPathWatcher; | ||||||
| import net.fabricmc.stitch.merge.JarMerger; | import net.fabricmc.stitch.merge.JarMerger; | ||||||
| 
 | 
 | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.providers; | package net.fabricmc.loom.configuration.providers.mappings; | ||||||
| 
 | 
 | ||||||
| import java.io.BufferedReader; | import java.io.BufferedReader; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.providers; | package net.fabricmc.loom.configuration.providers.mappings; | ||||||
| 
 | 
 | ||||||
| import java.io.BufferedReader; | import java.io.BufferedReader; | ||||||
| import java.io.File; | import java.io.File; | ||||||
|  | @ -46,13 +46,15 @@ import org.zeroturnaround.zip.ZipEntrySource; | ||||||
| import org.zeroturnaround.zip.ZipUtil; | import org.zeroturnaround.zip.ZipUtil; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.processors.JarProcessorManager; | import net.fabricmc.loom.configuration.DependencyProvider; | ||||||
| import net.fabricmc.loom.processors.MinecraftProcessedProvider; | 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.Constants; | ||||||
| import net.fabricmc.loom.util.DeletingFileVisitor; | import net.fabricmc.loom.util.DeletingFileVisitor; | ||||||
| import net.fabricmc.loom.util.DependencyProvider; |  | ||||||
| import net.fabricmc.loom.util.DownloadUtil; | import net.fabricmc.loom.util.DownloadUtil; | ||||||
| import net.fabricmc.loom.util.accesswidener.AccessWidenerJarProcessor; |  | ||||||
| import net.fabricmc.mapping.reader.v2.TinyV2Factory; | import net.fabricmc.mapping.reader.v2.TinyV2Factory; | ||||||
| import net.fabricmc.mapping.tree.TinyTree; | import net.fabricmc.mapping.tree.TinyTree; | ||||||
| import net.fabricmc.stitch.Command; | import net.fabricmc.stitch.Command; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.mappings; | package net.fabricmc.loom.configuration.providers.mappings; | ||||||
| 
 | 
 | ||||||
| import java.io.BufferedReader; | import java.io.BufferedReader; | ||||||
| import java.io.File; | import java.io.File; | ||||||
|  | @ -54,8 +54,8 @@ import org.zeroturnaround.zip.ZipEntrySource; | ||||||
| import org.zeroturnaround.zip.ZipUtil; | import org.zeroturnaround.zip.ZipUtil; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
|  | import net.fabricmc.loom.configuration.providers.minecraft.MinecraftVersionInfo; | ||||||
| import net.fabricmc.loom.util.DownloadUtil; | import net.fabricmc.loom.util.DownloadUtil; | ||||||
| import net.fabricmc.loom.util.MinecraftVersionInfo; |  | ||||||
| import net.fabricmc.lorenztiny.TinyMappingsReader; | import net.fabricmc.lorenztiny.TinyMappingsReader; | ||||||
| import net.fabricmc.mapping.tree.TinyMappingFactory; | import net.fabricmc.mapping.tree.TinyMappingFactory; | ||||||
| 
 | 
 | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration.providers.minecraft; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | @ -22,15 +22,15 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.providers; | package net.fabricmc.loom.configuration.providers.minecraft; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| 
 | 
 | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
|  | import net.fabricmc.loom.configuration.providers.MinecraftProvider; | ||||||
| import net.fabricmc.loom.util.Constants; | import net.fabricmc.loom.util.Constants; | ||||||
| import net.fabricmc.loom.util.MinecraftVersionInfo; |  | ||||||
| 
 | 
 | ||||||
| public class MinecraftLibraryProvider { | public class MinecraftLibraryProvider { | ||||||
| 	public File MINECRAFT_LIBS; | 	public File MINECRAFT_LIBS; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.providers; | package net.fabricmc.loom.configuration.providers.minecraft; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -34,11 +34,13 @@ import java.util.function.Consumer; | ||||||
| import com.google.common.collect.ImmutableMap; | import com.google.common.collect.ImmutableMap; | ||||||
| import org.gradle.api.Project; | 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.loom.util.TinyRemapperMappingsHelper; | ||||||
| import net.fabricmc.tinyremapper.OutputConsumerPath; | import net.fabricmc.tinyremapper.OutputConsumerPath; | ||||||
| import net.fabricmc.tinyremapper.TinyRemapper; | import net.fabricmc.tinyremapper.TinyRemapper; | ||||||
| import net.fabricmc.loom.util.Constants; |  | ||||||
| import net.fabricmc.loom.util.DependencyProvider; |  | ||||||
| 
 | 
 | ||||||
| public class MinecraftMappedProvider extends DependencyProvider { | public class MinecraftMappedProvider extends DependencyProvider { | ||||||
| 	private static final Map<String, String> JSR_TO_JETBRAINS = new ImmutableMap.Builder<String, String>() | 	private static final Map<String, String> JSR_TO_JETBRAINS = new ImmutableMap.Builder<String, String>() | ||||||
|  | @ -22,19 +22,19 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.providers; | package net.fabricmc.loom.configuration.providers.minecraft; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.net.URL; | import java.net.URL; | ||||||
| 
 | 
 | ||||||
| import org.gradle.api.GradleException; | import org.gradle.api.GradleException; | ||||||
| import org.zeroturnaround.zip.ZipUtil; |  | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
|  | import org.zeroturnaround.zip.ZipUtil; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
|  | import net.fabricmc.loom.configuration.providers.MinecraftProvider; | ||||||
| import net.fabricmc.loom.util.DownloadUtil; | import net.fabricmc.loom.util.DownloadUtil; | ||||||
| import net.fabricmc.loom.util.MinecraftVersionInfo; |  | ||||||
| 
 | 
 | ||||||
| public class MinecraftNativesProvider { | public class MinecraftNativesProvider { | ||||||
| 	public static void provide(MinecraftProvider minecraftProvider, Project project) throws IOException { | 	public static void provide(MinecraftProvider minecraftProvider, Project project) throws IOException { | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.configuration.providers.minecraft; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | @ -31,6 +31,9 @@ import java.util.Map; | ||||||
| import com.google.gson.JsonElement; | import com.google.gson.JsonElement; | ||||||
| import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||||
| 
 | 
 | ||||||
|  | import net.fabricmc.loom.util.Constants; | ||||||
|  | import net.fabricmc.loom.util.OperatingSystem; | ||||||
|  | 
 | ||||||
| public class MinecraftVersionInfo { | public class MinecraftVersionInfo { | ||||||
| 	public List<Library> libraries; | 	public List<Library> libraries; | ||||||
| 	public Map<String, Downloads> downloads; | 	public Map<String, Downloads> downloads; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.assets; | package net.fabricmc.loom.configuration.providers.minecraft.assets; | ||||||
| 
 | 
 | ||||||
| import java.util.HashSet; | import java.util.HashSet; | ||||||
| import java.util.LinkedHashMap; | import java.util.LinkedHashMap; | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.assets; | package net.fabricmc.loom.configuration.providers.minecraft.assets; | ||||||
| 
 | 
 | ||||||
| @SuppressWarnings("unused") | @SuppressWarnings("unused") | ||||||
| public class AssetObject { | public class AssetObject { | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.providers; | package net.fabricmc.loom.configuration.providers.minecraft.assets; | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.FileReader; | import java.io.FileReader; | ||||||
|  | @ -40,13 +40,12 @@ import org.gradle.api.GradleException; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | 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.Checksum; | ||||||
| import net.fabricmc.loom.util.Constants; | import net.fabricmc.loom.util.Constants; | ||||||
| import net.fabricmc.loom.util.DownloadUtil; | import net.fabricmc.loom.util.DownloadUtil; | ||||||
| import net.fabricmc.loom.util.MinecraftVersionInfo; | import net.fabricmc.loom.util.gradle.ProgressLogger; | ||||||
| import net.fabricmc.loom.util.assets.AssetIndex; |  | ||||||
| import net.fabricmc.loom.util.assets.AssetObject; |  | ||||||
| import net.fabricmc.loom.util.progress.ProgressLogger; |  | ||||||
| 
 | 
 | ||||||
| public class MinecraftAssetsProvider { | public class MinecraftAssetsProvider { | ||||||
| 	public static void provide(MinecraftProvider minecraftProvider, Project project) throws IOException { | 	public static void provide(MinecraftProvider minecraftProvider, Project project) throws IOException { | ||||||
|  | @ -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)); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.decompilers; | ||||||
| 
 | 
 | ||||||
| import static java.text.MessageFormat.format; | import static java.text.MessageFormat.format; | ||||||
| 
 | 
 | ||||||
|  | @ -46,7 +46,8 @@ import org.objectweb.asm.ClassWriter; | ||||||
| import org.objectweb.asm.Label; | import org.objectweb.asm.Label; | ||||||
| import org.objectweb.asm.MethodVisitor; | 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. |  * TODO, Move to stitch. | ||||||
|  | @ -35,7 +35,7 @@ import org.gradle.api.Project; | ||||||
| import org.gradle.api.tasks.JavaExec; | import org.gradle.api.tasks.JavaExec; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.util.RunConfig; | import net.fabricmc.loom.configuration.ide.RunConfig; | ||||||
| 
 | 
 | ||||||
| public abstract class AbstractRunTask extends JavaExec { | public abstract class AbstractRunTask extends JavaExec { | ||||||
| 	private final Function<Project, RunConfig> configProvider; | 	private final Function<Project, RunConfig> configProvider; | ||||||
|  |  | ||||||
|  | @ -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(); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  | @ -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); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  | @ -30,8 +30,8 @@ import org.gradle.api.Project; | ||||||
| import org.gradle.api.tasks.TaskAction; | import org.gradle.api.tasks.TaskAction; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MinecraftAssetsProvider; | import net.fabricmc.loom.configuration.providers.minecraft.MinecraftNativesProvider; | ||||||
| import net.fabricmc.loom.providers.MinecraftNativesProvider; | import net.fabricmc.loom.configuration.providers.minecraft.assets.MinecraftAssetsProvider; | ||||||
| 
 | 
 | ||||||
| public class DownloadAssetsTask extends AbstractLoomTask { | public class DownloadAssetsTask extends AbstractLoomTask { | ||||||
| 	@TaskAction | 	@TaskAction | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ import org.apache.commons.io.FileUtils; | ||||||
| import org.gradle.api.tasks.TaskAction; | import org.gradle.api.tasks.TaskAction; | ||||||
| import org.gradle.plugins.ide.eclipse.model.EclipseModel; | 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 { | public class GenEclipseRunsTask extends AbstractLoomTask { | ||||||
| 	@TaskAction | 	@TaskAction | ||||||
|  |  | ||||||
|  | @ -37,28 +37,28 @@ import javax.xml.transform.TransformerFactory; | ||||||
| import javax.xml.transform.dom.DOMSource; | import javax.xml.transform.dom.DOMSource; | ||||||
| import javax.xml.transform.stream.StreamResult; | 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.Document; | ||||||
| import org.w3c.dom.Element; | import org.w3c.dom.Element; | ||||||
| import org.w3c.dom.NodeList; | import org.w3c.dom.NodeList; | ||||||
| import org.xml.sax.SAXException; | 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.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.util.RunConfig; | import net.fabricmc.loom.configuration.ide.RunConfig; | ||||||
| 
 | 
 | ||||||
| public class GenIdeaProjectTask extends AbstractLoomTask { | public class GenIdeaProjectTask extends AbstractLoomTask { | ||||||
| 	@TaskAction | 	@TaskAction | ||||||
| 	public void genIdeaRuns() throws IOException, ParserConfigurationException, SAXException, TransformerException { | 	public void genIdeaRuns() throws IOException, ParserConfigurationException, SAXException, TransformerException { | ||||||
| 		Project project = this.getProject(); | 		Project project = this.getProject(); | ||||||
| 
 | 
 | ||||||
|  | 		LoomGradleExtension extension = getExtension(); | ||||||
|  | 
 | ||||||
| 		// Only generate the idea runs on the root project | 		// Only generate the idea runs on the root project | ||||||
| 		if (!AbstractPlugin.isRootProject(project)) { | 		if (!extension.isRootProject()) { | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		LoomGradleExtension extension = getExtension(); |  | ||||||
| 		project.getLogger().lifecycle(":Building idea workspace"); | 		project.getLogger().lifecycle(":Building idea workspace"); | ||||||
| 
 | 
 | ||||||
| 		File file = project.file(project.getName() + ".iws"); | 		File file = project.file(project.getName() + ".iws"); | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ import org.gradle.api.Project; | ||||||
| import org.gradle.api.tasks.TaskAction; | import org.gradle.api.tasks.TaskAction; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.util.RunConfig; | import net.fabricmc.loom.configuration.ide.RunConfig; | ||||||
| 
 | 
 | ||||||
| // Recommended vscode plugins: | // Recommended vscode plugins: | ||||||
| // https://marketplace.visualstudio.com/items?itemName=redhat.java | // https://marketplace.visualstudio.com/items?itemName=redhat.java | ||||||
|  |  | ||||||
|  | @ -30,18 +30,20 @@ import java.nio.file.Files; | ||||||
| import java.nio.file.Path; | import java.nio.file.Path; | ||||||
| import java.nio.file.StandardCopyOption; | import java.nio.file.StandardCopyOption; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
|  | import java.util.Locale; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| 
 | 
 | ||||||
| import javax.inject.Inject; | import javax.inject.Inject; | ||||||
| 
 | 
 | ||||||
| import org.gradle.api.tasks.TaskAction; | import org.gradle.api.tasks.TaskAction; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.util.Constants; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.LoomGradlePlugin; |  | ||||||
| import net.fabricmc.loom.api.decompilers.DecompilationMetadata; | import net.fabricmc.loom.api.decompilers.DecompilationMetadata; | ||||||
| import net.fabricmc.loom.api.decompilers.LoomDecompiler; | import net.fabricmc.loom.api.decompilers.LoomDecompiler; | ||||||
| import net.fabricmc.loom.util.LineNumberRemapper; | import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; | ||||||
| import net.fabricmc.loom.util.progress.ProgressLogger; | 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; | import net.fabricmc.stitch.util.StitchUtil; | ||||||
| 
 | 
 | ||||||
| public class GenerateSourcesTask extends AbstractLoomTask { | public class GenerateSourcesTask extends AbstractLoomTask { | ||||||
|  | @ -64,18 +66,18 @@ public class GenerateSourcesTask extends AbstractLoomTask { | ||||||
| 
 | 
 | ||||||
| 		DecompilationMetadata metadata = new DecompilationMetadata(threads, javaDocs, libraries); | 		DecompilationMetadata metadata = new DecompilationMetadata(threads, javaDocs, libraries); | ||||||
| 		Path compiledJar = getExtension().getMappingsProvider().mappedProvider.getMappedJar().toPath(); | 		Path compiledJar = getExtension().getMappingsProvider().mappedProvider.getMappedJar().toPath(); | ||||||
| 		Path sourcesDestination = LoomGradlePlugin.getMappedByproduct(getProject(), "-sources.jar").toPath(); | 		Path sourcesDestination = getMappedJarFileWithSuffix("-sources.jar").toPath(); | ||||||
| 		Path linemap = LoomGradlePlugin.getMappedByproduct(getProject(), "-sources.lmap").toPath(); | 		Path linemap = getMappedJarFileWithSuffix("-sources.lmap").toPath(); | ||||||
| 		decompiler.decompile(compiledJar, sourcesDestination, linemap, metadata); | 		decompiler.decompile(compiledJar, sourcesDestination, linemap, metadata); | ||||||
| 
 | 
 | ||||||
| 		if (Files.exists(linemap)) { | 		if (Files.exists(linemap)) { | ||||||
| 			Path linemappedJarDestination = LoomGradlePlugin.getMappedByproduct(getProject(), "-linemapped.jar").toPath(); | 			Path linemappedJarDestination = getMappedJarFileWithSuffix("-linemapped.jar").toPath(); | ||||||
| 
 | 
 | ||||||
| 			remapLineNumbers(compiledJar, linemap, linemappedJarDestination); | 			remapLineNumbers(compiledJar, linemap, linemappedJarDestination); | ||||||
| 
 | 
 | ||||||
| 			// In order for IDEs to recognize the new line mappings, we need to overwrite the existing compiled jar | 			// 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. | 			// 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. | 			// The second time genSources is ran, we want to keep the existing unlinemapped jar. | ||||||
| 			if (!Files.exists(unlinemappedJar)) { | 			if (!Files.exists(unlinemappedJar)) { | ||||||
|  | @ -92,7 +94,7 @@ public class GenerateSourcesTask extends AbstractLoomTask { | ||||||
| 		LineNumberRemapper remapper = new LineNumberRemapper(); | 		LineNumberRemapper remapper = new LineNumberRemapper(); | ||||||
| 		remapper.readMappings(linemap.toFile()); | 		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"); | 		progressLogger.start("Adjusting line numbers", "linemap"); | ||||||
| 
 | 
 | ||||||
| 		try (StitchUtil.FileSystemDelegate inFs = StitchUtil.getJarFileSystem(oldCompiledJar.toFile(), true); | 		try (StitchUtil.FileSystemDelegate inFs = StitchUtil.getJarFileSystem(oldCompiledJar.toFile(), true); | ||||||
|  | @ -102,4 +104,17 @@ public class GenerateSourcesTask extends AbstractLoomTask { | ||||||
| 
 | 
 | ||||||
| 		progressLogger.completed(); | 		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); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										108
									
								
								src/main/java/net/fabricmc/loom/task/LoomTasks.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								src/main/java/net/fabricmc/loom/task/LoomTasks.java
									
									
									
									
									
										Normal file
									
								
							|  | @ -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); | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -49,10 +49,10 @@ import org.gradle.api.tasks.TaskAction; | ||||||
| import org.gradle.api.tasks.options.Option; | import org.gradle.api.tasks.options.Option; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; | ||||||
| import net.fabricmc.loom.providers.MinecraftMappedProvider; | 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.SourceRemapper; | ||||||
| import net.fabricmc.loom.util.mappings.MojangMappingsDependency; |  | ||||||
| import net.fabricmc.lorenztiny.TinyMappingsJoiner; | import net.fabricmc.lorenztiny.TinyMappingsJoiner; | ||||||
| import net.fabricmc.mapping.tree.TinyMappingFactory; | import net.fabricmc.mapping.tree.TinyMappingFactory; | ||||||
| import net.fabricmc.mapping.tree.TinyTree; | import net.fabricmc.mapping.tree.TinyTree; | ||||||
|  |  | ||||||
|  | @ -45,14 +45,14 @@ import org.gradle.jvm.tasks.Jar; | ||||||
| import org.zeroturnaround.zip.ZipUtil; | import org.zeroturnaround.zip.ZipUtil; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.build.JarRemapper; | ||||||
| import net.fabricmc.loom.util.GradleSupport; | import net.fabricmc.loom.build.MixinRefmapHelper; | ||||||
| import net.fabricmc.loom.util.MixinRefmapHelper; | import net.fabricmc.loom.build.NestedJars; | ||||||
| import net.fabricmc.loom.util.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.TinyRemapperMappingsHelper; | ||||||
| import net.fabricmc.loom.util.ZipReprocessorUtil; | import net.fabricmc.loom.util.ZipReprocessorUtil; | ||||||
| import net.fabricmc.loom.util.accesswidener.AccessWidenerJarProcessor; | import net.fabricmc.loom.util.gradle.GradleSupport; | ||||||
| import net.fabricmc.loom.util.JarRemapper; |  | ||||||
| import net.fabricmc.stitch.util.Pair; | import net.fabricmc.stitch.util.Pair; | ||||||
| import net.fabricmc.tinyremapper.OutputConsumerPath; | import net.fabricmc.tinyremapper.OutputConsumerPath; | ||||||
| import net.fabricmc.tinyremapper.TinyRemapper; | import net.fabricmc.tinyremapper.TinyRemapper; | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.task; | package net.fabricmc.loom.task; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.util.RunConfig; | import net.fabricmc.loom.configuration.ide.RunConfig; | ||||||
| 
 | 
 | ||||||
| public class RunClientTask extends AbstractRunTask { | public class RunClientTask extends AbstractRunTask { | ||||||
| 	public RunClientTask() { | 	public RunClientTask() { | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.task; | package net.fabricmc.loom.task; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.util.RunConfig; | import net.fabricmc.loom.configuration.ide.RunConfig; | ||||||
| 
 | 
 | ||||||
| public class RunServerTask extends AbstractRunTask { | public class RunServerTask extends AbstractRunTask { | ||||||
| 	public RunServerTask() { | 	public RunServerTask() { | ||||||
|  |  | ||||||
|  | @ -29,6 +29,8 @@ import java.util.List; | ||||||
| import com.google.common.collect.ImmutableList; | import com.google.common.collect.ImmutableList; | ||||||
| import org.objectweb.asm.Opcodes; | import org.objectweb.asm.Opcodes; | ||||||
| 
 | 
 | ||||||
|  | import net.fabricmc.loom.configuration.RemappedConfigurationEntry; | ||||||
|  | 
 | ||||||
| public class Constants { | public class Constants { | ||||||
| 	public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/"; | 	public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/"; | ||||||
| 	public static final String RESOURCES_BASE = "http://resources.download.minecraft.net/"; | 	public static final String RESOURCES_BASE = "http://resources.download.minecraft.net/"; | ||||||
|  |  | ||||||
|  | @ -35,9 +35,9 @@ import org.apache.commons.io.FileUtils; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| import org.gradle.api.logging.Logger; | import org.gradle.api.logging.Logger; | ||||||
| 
 | 
 | ||||||
| public class DownloadUtil { | import net.fabricmc.loom.LoomGradlePlugin; | ||||||
| 	public static boolean refreshDeps = false; |  | ||||||
| 
 | 
 | ||||||
|  | public class DownloadUtil { | ||||||
| 	/** | 	/** | ||||||
| 	 * Download from the given {@link URL} to the given {@link File} so long as there are differences between them. | 	 * 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 { | 	public static void downloadIfChanged(URL from, File to, Logger logger, boolean quiet) throws IOException { | ||||||
| 		HttpURLConnection connection = (HttpURLConnection) from.openConnection(); | 		HttpURLConnection connection = (HttpURLConnection) from.openConnection(); | ||||||
| 
 | 
 | ||||||
| 		if (refreshDeps) { | 		if (LoomGradlePlugin.refreshDeps) { | ||||||
| 			getETagFile(to).delete(); | 			getETagFile(to).delete(); | ||||||
| 			to.delete(); | 			to.delete(); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -41,9 +41,10 @@ import org.gradle.api.artifacts.Dependency; | ||||||
| import org.zeroturnaround.zip.ZipUtil; | import org.zeroturnaround.zip.ZipUtil; | ||||||
| 
 | 
 | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MappingsProvider; | import net.fabricmc.loom.configuration.RemappedConfigurationEntry; | ||||||
| import net.fabricmc.loom.providers.LaunchProvider; | import net.fabricmc.loom.configuration.providers.LaunchProvider; | ||||||
| import net.fabricmc.loom.util.progress.ProgressLogger; | import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider; | ||||||
|  | import net.fabricmc.loom.util.gradle.ProgressLogger; | ||||||
| import net.fabricmc.lorenztiny.TinyMappingsReader; | import net.fabricmc.lorenztiny.TinyMappingsReader; | ||||||
| import net.fabricmc.mapping.tree.TinyTree; | import net.fabricmc.mapping.tree.TinyTree; | ||||||
| import net.fabricmc.stitch.util.StitchUtil; | import net.fabricmc.stitch.util.StitchUtil; | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.util.gradle; | ||||||
| 
 | 
 | ||||||
| import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||||
| 
 | 
 | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package net.fabricmc.loom.util.progress; | package net.fabricmc.loom.util.gradle; | ||||||
| 
 | 
 | ||||||
| import java.lang.reflect.InvocationTargetException; | import java.lang.reflect.InvocationTargetException; | ||||||
| import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||||
		Loading…
	
		Reference in a new issue