From da675e9545d444fa65100fccd6e4c361e32b0bf5 Mon Sep 17 00:00:00 2001 From: Adrian Siekierka Date: Sun, 9 Dec 2018 22:22:35 +0100 Subject: [PATCH] clean mapping provider code --- .../net/fabricmc/loom/AbstractPlugin.java | 10 +++---- .../fabricmc/loom/LoomGradleExtension.java | 8 +++--- ...omfProvider.java => MappingsProvider.java} | 26 ++++++++++--------- .../providers/MinecraftMappedProvider.java | 9 +++---- .../loom/providers/ModRemapperProvider.java | 4 +-- .../fabricmc/loom/task/GenSourcesCfrTask.java | 4 +-- .../fabricmc/loom/task/GenSourcesTask.java | 12 ++++----- .../net/fabricmc/loom/task/RunClientTask.java | 4 +-- .../net/fabricmc/loom/util/Constants.java | 2 -- .../net/fabricmc/loom/util/MapJarsTiny.java | 6 ++--- .../net/fabricmc/loom/util/ModProcessor.java | 18 +++---------- .../net/fabricmc/loom/util/ModRemapper.java | 8 +++--- 12 files changed, 46 insertions(+), 65 deletions(-) rename src/main/java/net/fabricmc/loom/providers/{PomfProvider.java => MappingsProvider.java} (79%) diff --git a/src/main/java/net/fabricmc/loom/AbstractPlugin.java b/src/main/java/net/fabricmc/loom/AbstractPlugin.java index a2b62d8b..309a5a02 100644 --- a/src/main/java/net/fabricmc/loom/AbstractPlugin.java +++ b/src/main/java/net/fabricmc/loom/AbstractPlugin.java @@ -25,10 +25,9 @@ package net.fabricmc.loom; import com.google.common.collect.ImmutableMap; -import net.fabricmc.loom.providers.MinecraftMappedProvider; import net.fabricmc.loom.providers.MinecraftProvider; import net.fabricmc.loom.providers.ModRemapperProvider; -import net.fabricmc.loom.providers.PomfProvider; +import net.fabricmc.loom.providers.MappingsProvider; import net.fabricmc.loom.task.RemapJar; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.LoomDependencyManager; @@ -44,7 +43,6 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.bundling.AbstractArchiveTask; import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.javadoc.Javadoc; -import org.gradle.jvm.tasks.Jar; import org.gradle.plugins.ide.eclipse.model.EclipseModel; import org.gradle.plugins.ide.idea.model.IdeaModel; @@ -97,8 +95,8 @@ public class AbstractPlugin implements Plugin { javaCompileTask.doFirst(task1 -> { project.getLogger().lifecycle(":setting java compiler args"); try { - javaCompileTask.getOptions().getCompilerArgs().add("-AinMapFileNamedIntermediary=" + extension.getPomfProvider().MAPPINGS_TINY.getCanonicalPath()); - javaCompileTask.getOptions().getCompilerArgs().add("-AoutMapFileNamedIntermediary=" + extension.getPomfProvider().MAPPINGS_MIXIN_EXPORT.getCanonicalPath()); + javaCompileTask.getOptions().getCompilerArgs().add("-AinMapFileNamedIntermediary=" + extension.getMappingsProvider().MAPPINGS_TINY.getCanonicalPath()); + javaCompileTask.getOptions().getCompilerArgs().add("-AoutMapFileNamedIntermediary=" + extension.getMappingsProvider().MAPPINGS_MIXIN_EXPORT.getCanonicalPath()); if(extension.refmapName == null || extension.refmapName.isEmpty()){ project.getLogger().error("Could not find refmap definition, will be using default name: " + project.getName() + "-refmap.json"); extension.refmapName = project.getName() + "-refmap.json"; @@ -217,7 +215,7 @@ public class AbstractPlugin implements Plugin { extension.setDependencyManager(dependencyManager); dependencyManager.addProvider(new MinecraftProvider()); - dependencyManager.addProvider(new PomfProvider()); + dependencyManager.addProvider(new MappingsProvider()); dependencyManager.addProvider(new ModRemapperProvider()); dependencyManager.handleDependencies(project1); diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java index 3e266938..e8a90223 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java +++ b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java @@ -24,9 +24,9 @@ package net.fabricmc.loom; +import net.fabricmc.loom.providers.MappingsProvider; import net.fabricmc.loom.providers.MinecraftMappedProvider; import net.fabricmc.loom.providers.MinecraftProvider; -import net.fabricmc.loom.providers.PomfProvider; import net.fabricmc.loom.util.LoomDependencyManager; import org.gradle.api.Project; @@ -62,11 +62,11 @@ public class LoomGradleExtension { } public MinecraftMappedProvider getMinecraftMappedProvider(){ - return getPomfProvider().mappedProvider; + return getMappingsProvider().mappedProvider; } - public PomfProvider getPomfProvider(){ - return getDependencyManager().getProvider(PomfProvider.class); + public MappingsProvider getMappingsProvider(){ + return getDependencyManager().getProvider(MappingsProvider.class); } public void setDependencyManager(LoomDependencyManager dependencyManager) { diff --git a/src/main/java/net/fabricmc/loom/providers/PomfProvider.java b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java similarity index 79% rename from src/main/java/net/fabricmc/loom/providers/PomfProvider.java rename to src/main/java/net/fabricmc/loom/providers/MappingsProvider.java index a0ecb040..927c2818 100644 --- a/src/main/java/net/fabricmc/loom/providers/PomfProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java @@ -38,13 +38,14 @@ import java.nio.file.Path; //TODO fix local mappings //TODO possibly use maven for mappings, can fix above at the same time -public class PomfProvider extends DependencyProvider { +public class MappingsProvider extends DependencyProvider { public MinecraftMappedProvider mappedProvider; + public String mappingsName; public String minecraftVersion; - public String pomfVersion; + public String mappingsVersion; - private File POMF_DIR; + private File MAPPINGS_DIR; public File MAPPINGS_TINY_BASE; public File MAPPINGS_TINY; @@ -54,20 +55,21 @@ public class PomfProvider extends DependencyProvider { public void provide(DependencyInfo dependency, Project project, LoomGradleExtension extension) throws Exception { MinecraftProvider minecraftProvider = getDependencyManager().getProvider(MinecraftProvider.class); - project.getLogger().lifecycle(":setting up pomf " + dependency.getDependency().getVersion()); + project.getLogger().lifecycle(":setting up mappings (" + dependency.getDependency().getName() + " " + dependency.getDependency().getVersion() + ")"); String version = dependency.getDependency().getVersion(); String[] split = version.split("\\."); File mappingsJar = dependency.resolveFile(); + this.mappingsName = dependency.getDependency().getName(); this.minecraftVersion = split[0]; - this.pomfVersion = split[1]; + this.mappingsVersion = split[1]; initFiles(project); - if (!POMF_DIR.exists()) { - POMF_DIR.mkdir(); + if (!MAPPINGS_DIR.exists()) { + MAPPINGS_DIR.mkdir(); } if (!MAPPINGS_TINY_BASE.exists() || !MAPPINGS_TINY.exists()) { @@ -91,7 +93,7 @@ public class PomfProvider extends DependencyProvider { }); } - project.getDependencies().add("compile", project.getDependencies().module("net.fabricmc:pomf:" + version)); + project.getDependencies().add("compile", project.getDependencies().module(dependency.getDependency().getGroup() + ":" + dependency.getDependency().getName() + ":" + version)); mappedProvider = new MinecraftMappedProvider(); mappedProvider.initFiles(project, minecraftProvider, this); @@ -100,11 +102,11 @@ public class PomfProvider extends DependencyProvider { public void initFiles(Project project) { LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); - POMF_DIR = new File(extension.getUserCache(), "pomf"); + MAPPINGS_DIR = new File(extension.getUserCache(), "mappings"); - MAPPINGS_TINY_BASE = new File(POMF_DIR, "pomf-tiny-" + minecraftVersion + "." + pomfVersion + "-base"); - MAPPINGS_TINY = new File(POMF_DIR, "pomf-tiny-" + minecraftVersion + "." + pomfVersion); - MAPPINGS_MIXIN_EXPORT = new File(Constants.CACHE_FILES, "mixin-map-" + minecraftVersion + "." + pomfVersion + ".tiny"); + MAPPINGS_TINY_BASE = new File(MAPPINGS_DIR, mappingsName + "-tiny-" + minecraftVersion + "." + mappingsVersion + "-base"); + MAPPINGS_TINY = new File(MAPPINGS_DIR, mappingsName + "-tiny-" + minecraftVersion + "." + mappingsVersion); + MAPPINGS_MIXIN_EXPORT = new File(Constants.CACHE_FILES, "mixin-map-" + minecraftVersion + "." + mappingsVersion + ".tiny"); } @Override diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java index 87dd4e06..a4be9205 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java @@ -25,13 +25,10 @@ package net.fabricmc.loom.providers; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.task.GenSourcesTask; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.DependencyProvider; import net.fabricmc.loom.util.MapJarsTiny; -import org.gradle.api.Action; import org.gradle.api.Project; -import org.gradle.api.artifacts.repositories.IvyArtifactRepository; import java.io.File; import java.util.Collection; @@ -58,15 +55,15 @@ public class MinecraftMappedProvider extends DependencyProvider { throw new RuntimeException("mapped jar not found"); } - String version = minecraftProvider.minecraftVersion + "-mapped-" + extension.getPomfProvider().pomfVersion; + String version = minecraftProvider.minecraftVersion + "-mapped-" + extension.getMappingsProvider().mappingsVersion; project.getDependencies().add("compile", project.getDependencies().module("net.minecraft:minecraft:" + version)); } - public void initFiles(Project project, MinecraftProvider minecraftProvider, PomfProvider pomfProvider) { + public void initFiles(Project project, MinecraftProvider minecraftProvider, MappingsProvider mappingsProvider) { LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); this.minecraftProvider = minecraftProvider; MINECRAFT_INTERMEDIARY_JAR = new File(extension.getUserCache(), "minecraft-" + minecraftProvider.minecraftVersion + "-intermediary.jar"); - MINECRAFT_MAPPED_JAR = new File(extension.getUserCache(), "minecraft-" + minecraftProvider.minecraftVersion + "-mapped-" + pomfProvider.pomfVersion + ".jar"); + MINECRAFT_MAPPED_JAR = new File(extension.getUserCache(), "minecraft-" + minecraftProvider.minecraftVersion + "-mapped-" + mappingsProvider.mappingsVersion + ".jar"); } public Collection getMapperPaths() { diff --git a/src/main/java/net/fabricmc/loom/providers/ModRemapperProvider.java b/src/main/java/net/fabricmc/loom/providers/ModRemapperProvider.java index fb1c4ac8..ea45e60e 100644 --- a/src/main/java/net/fabricmc/loom/providers/ModRemapperProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/ModRemapperProvider.java @@ -39,9 +39,9 @@ public class ModRemapperProvider extends DependencyProvider { project.getLogger().lifecycle("Providing " + dependency.getDepString()); - PomfProvider pomfProvider = getDependencyManager().getProvider(PomfProvider.class); + MappingsProvider mappingsProvider = getDependencyManager().getProvider(MappingsProvider.class); - String outputName = input.getName().substring(0, input.getName().length() - 4) + "-mapped-" + pomfProvider.pomfVersion + ".jar";//TODO use the hash of the input file or something? + String outputName = input.getName().substring(0, input.getName().length() - 4) + "-mapped-" + mappingsProvider.mappingsVersion + ".jar";//TODO use the hash of the input file or something? File output = new File(Constants.REMAPPED_MODS_STORE, outputName); if(output.exists()){ output.delete(); diff --git a/src/main/java/net/fabricmc/loom/task/GenSourcesCfrTask.java b/src/main/java/net/fabricmc/loom/task/GenSourcesCfrTask.java index 11884996..d989035c 100644 --- a/src/main/java/net/fabricmc/loom/task/GenSourcesCfrTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenSourcesCfrTask.java @@ -32,8 +32,8 @@ public class GenSourcesCfrTask extends DefaultTask { public void genSources() throws IOException { Project project = this.getProject(); LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); - PomfProvider pomfProvider = extension.getPomfProvider(); - File mappedJar = pomfProvider.mappedProvider.getMappedJar(); + MappingsProvider mappingsProvider = extension.getMappingsProvider(); + File mappedJar = mappingsProvider.mappedProvider.getMappedJar(); File sourcesJar = getSourcesJar(project); Manifest manifest = new Manifest(); diff --git a/src/main/java/net/fabricmc/loom/task/GenSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenSourcesTask.java index 47fbe8b1..d8a83871 100644 --- a/src/main/java/net/fabricmc/loom/task/GenSourcesTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenSourcesTask.java @@ -26,13 +26,11 @@ package net.fabricmc.loom.task; import com.google.common.io.ByteStreams; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.providers.MappingsProvider; import net.fabricmc.loom.providers.MinecraftLibraryProvider; -import net.fabricmc.loom.providers.PomfProvider; import org.gradle.api.DefaultTask; import org.gradle.api.Project; import org.gradle.api.tasks.TaskAction; -import org.jetbrains.java.decompiler.main.ClassReference14Processor; -import org.jetbrains.java.decompiler.main.extern.IFernflowerLogger; import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; @@ -48,8 +46,8 @@ import java.util.jar.*; public class GenSourcesTask extends DefaultTask { public static File getSourcesJar(Project project) { LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); - PomfProvider pomfProvider = extension.getPomfProvider(); - File mappedJar = pomfProvider.mappedProvider.getMappedJar(); + 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); @@ -63,8 +61,8 @@ public class GenSourcesTask extends DefaultTask { Project project = this.getProject(); LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); MinecraftLibraryProvider libraryProvider = extension.getMinecraftProvider().libraryProvider; - PomfProvider pomfProvider = extension.getPomfProvider(); - File mappedJar = pomfProvider.mappedProvider.getMappedJar(); + MappingsProvider mappingsProvider = extension.getMappingsProvider(); + File mappedJar = mappingsProvider.mappedProvider.getMappedJar(); File sourcesJar = getSourcesJar(project); Manifest manifest = new Manifest(); diff --git a/src/main/java/net/fabricmc/loom/task/RunClientTask.java b/src/main/java/net/fabricmc/loom/task/RunClientTask.java index a851dc4f..5fe80e07 100644 --- a/src/main/java/net/fabricmc/loom/task/RunClientTask.java +++ b/src/main/java/net/fabricmc/loom/task/RunClientTask.java @@ -25,7 +25,7 @@ package net.fabricmc.loom.task; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.PomfProvider; +import net.fabricmc.loom.providers.MappingsProvider; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.MinecraftVersionInfo; import org.gradle.api.tasks.JavaExec; @@ -40,7 +40,7 @@ public class RunClientTask extends JavaExec { public void exec() { LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); MinecraftVersionInfo minecraftVersionInfo = extension.getMinecraftProvider().versionInfo; - PomfProvider pomfProvider = extension.getPomfProvider(); + MappingsProvider mappingsProvider = extension.getMappingsProvider(); List libs = new ArrayList<>(); for (File file : getProject().getConfigurations().getByName("compile").getFiles()) { diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java index 91da16aa..edda3cd8 100644 --- a/src/main/java/net/fabricmc/loom/util/Constants.java +++ b/src/main/java/net/fabricmc/loom/util/Constants.java @@ -32,10 +32,8 @@ public class Constants { public static final File REMAPPED_MODS_STORE = new File(CACHE_FILES, "remapped_mods"); - public static final String FABRIC_CLIENT_TWEAKER = "net.fabricmc.loader.launch.FabricClientTweaker"; public static final String FABRIC_SERVER_TWEAKER = "net.fabricmc.loader.launch.FabricServerTweaker"; - public static final String POMF_MAVEN_SERVER = "https://maven.fabricmc.net/net/fabricmc/pomf/"; public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/"; public static final String RESOURCES_BASE = "http://resources.download.minecraft.net/"; diff --git a/src/main/java/net/fabricmc/loom/util/MapJarsTiny.java b/src/main/java/net/fabricmc/loom/util/MapJarsTiny.java index babb5ac1..6660f702 100644 --- a/src/main/java/net/fabricmc/loom/util/MapJarsTiny.java +++ b/src/main/java/net/fabricmc/loom/util/MapJarsTiny.java @@ -28,7 +28,7 @@ package net.fabricmc.loom.util; import net.fabricmc.loom.LoomGradleExtension; import net.fabricmc.loom.providers.MinecraftJarProvider; import net.fabricmc.loom.providers.MinecraftMappedProvider; -import net.fabricmc.loom.providers.PomfProvider; +import net.fabricmc.loom.providers.MappingsProvider; import net.fabricmc.tinyremapper.OutputConsumerPath; import net.fabricmc.tinyremapper.TinyRemapper; import net.fabricmc.tinyremapper.TinyUtils; @@ -45,9 +45,9 @@ public class MapJarsTiny { String fromM = "official"; LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); - PomfProvider pomfProvider = extension.getPomfProvider(); + MappingsProvider mappingsProvider = extension.getMappingsProvider(); - Path mappings = pomfProvider.MAPPINGS_TINY.toPath(); + Path mappings = mappingsProvider.MAPPINGS_TINY.toPath(); Path[] classpath = mapProvider.getMapperPaths().stream() .map(File::toPath) .toArray(Path[]::new); diff --git a/src/main/java/net/fabricmc/loom/util/ModProcessor.java b/src/main/java/net/fabricmc/loom/util/ModProcessor.java index a814c23c..5b90bc48 100644 --- a/src/main/java/net/fabricmc/loom/util/ModProcessor.java +++ b/src/main/java/net/fabricmc/loom/util/ModProcessor.java @@ -25,13 +25,11 @@ package net.fabricmc.loom.util; import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.providers.MappingsProvider; import net.fabricmc.loom.providers.MinecraftMappedProvider; import net.fabricmc.loom.providers.MinecraftProvider; -import net.fabricmc.loom.providers.PomfProvider; import net.fabricmc.tinyremapper.OutputConsumerPath; import net.fabricmc.tinyremapper.TinyRemapper; import net.fabricmc.tinyremapper.TinyUtils; @@ -40,24 +38,14 @@ import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ExternalModuleDependency; import org.gradle.api.artifacts.repositories.MavenArtifactRepository; -import org.objectweb.asm.commons.Remapper; -import org.spongepowered.asm.mixin.injection.struct.MemberInfo; -import org.zeroturnaround.zip.ZipUtil; -import org.zeroturnaround.zip.transform.StringZipEntryTransformer; -import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; -import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; import java.util.jar.JarFile; import java.util.zip.ZipEntry; @@ -82,9 +70,9 @@ public class ModProcessor { MinecraftProvider minecraftProvider = extension.getMinecraftProvider(); MinecraftMappedProvider mappedProvider = extension.getMinecraftMappedProvider(); - PomfProvider pomfProvider = extension.getPomfProvider(); + MappingsProvider mappingsProvider = extension.getMappingsProvider(); - File mappingsFile = pomfProvider.MAPPINGS_TINY; + File mappingsFile = mappingsProvider.MAPPINGS_TINY; Path mappings = mappingsFile.toPath(); Path mc = mappedProvider.MINECRAFT_INTERMEDIARY_JAR.toPath(); Path[] mcDeps = mappedProvider.getMapperPaths().stream() diff --git a/src/main/java/net/fabricmc/loom/util/ModRemapper.java b/src/main/java/net/fabricmc/loom/util/ModRemapper.java index 7c2ae02a..c21e4a61 100644 --- a/src/main/java/net/fabricmc/loom/util/ModRemapper.java +++ b/src/main/java/net/fabricmc/loom/util/ModRemapper.java @@ -25,7 +25,7 @@ package net.fabricmc.loom.util; import net.fabricmc.loom.LoomGradleExtension; -import net.fabricmc.loom.providers.PomfProvider; +import net.fabricmc.loom.providers.MappingsProvider; import net.fabricmc.loom.task.RemapJar; import net.fabricmc.tinyremapper.OutputConsumerPath; import net.fabricmc.tinyremapper.TinyRemapper; @@ -50,9 +50,9 @@ public class ModRemapper { return; } - PomfProvider pomfProvider = extension.getPomfProvider(); + MappingsProvider mappingsProvider = extension.getMappingsProvider(); - Path mappings = pomfProvider.MAPPINGS_TINY.toPath(); + Path mappings = mappingsProvider.MAPPINGS_TINY.toPath(); String fromM = "named"; String toM = "intermediary"; @@ -66,7 +66,7 @@ public class ModRemapper { File modJarOutput = new File(s.substring(0, s.length() - 4) + ".remapped.jar"); Path modJarOutputPath = modJarOutput.toPath(); - File mixinMapFile = pomfProvider.MAPPINGS_MIXIN_EXPORT; + File mixinMapFile = mappingsProvider.MAPPINGS_MIXIN_EXPORT; Path mixinMapPath = mixinMapFile.toPath(); TinyRemapper.Builder remapperBuilder = TinyRemapper.newRemapper();