From 6b17d207d5f9eeffb76855e211dade903fa8561e Mon Sep 17 00:00:00 2001 From: Adrian Siekierka Date: Fri, 2 Nov 2018 10:33:03 +0100 Subject: [PATCH] fix mod compilation --- .../net/fabricmc/loom/AbstractPlugin.java | 1 + .../net/fabricmc/loom/task/SetupTask.java | 1 + .../net/fabricmc/loom/util/Constants.java | 1 - .../net/fabricmc/loom/util/ModProcessor.java | 21 ++++++++++++------- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/AbstractPlugin.java b/src/main/java/net/fabricmc/loom/AbstractPlugin.java index a64f848f..14f9aa25 100644 --- a/src/main/java/net/fabricmc/loom/AbstractPlugin.java +++ b/src/main/java/net/fabricmc/loom/AbstractPlugin.java @@ -105,6 +105,7 @@ public class AbstractPlugin implements Plugin { javaCompileTask.doFirst(task1 -> { project.getLogger().lifecycle(":setting java compiler args"); try { + javaCompileTask.getClasspath().add(project.getConfigurations().getByName(Constants.CONFIG_MINECRAFT)); javaCompileTask.getClasspath().add(target.files(this.getClass().getProtectionDomain().getCodeSource().getLocation())); javaCompileTask.getOptions().getCompilerArgs().add("-AinMapFilePomfIntermediary=" + Constants.MAPPINGS_TINY.get(extension).getCanonicalPath()); diff --git a/src/main/java/net/fabricmc/loom/task/SetupTask.java b/src/main/java/net/fabricmc/loom/task/SetupTask.java index 300b231d..3b8c6c92 100644 --- a/src/main/java/net/fabricmc/loom/task/SetupTask.java +++ b/src/main/java/net/fabricmc/loom/task/SetupTask.java @@ -43,6 +43,7 @@ public class SetupTask extends DefaultTask { public void configureModRemapper(){ LoomGradleExtension extension = getProject().getExtensions().getByType(LoomGradleExtension.class); Configuration inputConfig = getProject().getConfigurations().getByName(Constants.COMPILE_MODS); + inputConfig.getResolvedConfiguration().getFiles().stream() .filter(file -> file.getName().endsWith(".jar")) .forEach(input -> { diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java index f090409a..7bb19430 100644 --- a/src/main/java/net/fabricmc/loom/util/Constants.java +++ b/src/main/java/net/fabricmc/loom/util/Constants.java @@ -65,7 +65,6 @@ public class Constants { public static final IDelayed MINECRAFT_LIBS = new DelayedFile(extension -> new File(extension.getUserCache(), extension.version + "-libs")); public static final IDelayed MINECRAFT_NATIVES = new DelayedFile(extension -> new File(extension.getUserCache(), extension.version + "-natives")); public static final IDelayed MINECRAFT_JSON = new DelayedFile(extension -> new File(extension.getUserCache(), extension.version + "-info.json")); - public static final IDelayed REF_MAP = new DelayedFile(extension -> new File(CACHE_FILES, "mixin-refmap.json")); public static final IDelayed VERSION_MANIFEST = new DelayedFile(extension -> new File(extension.getUserCache(), "version_manifest.json")); diff --git a/src/main/java/net/fabricmc/loom/util/ModProcessor.java b/src/main/java/net/fabricmc/loom/util/ModProcessor.java index 3d1ad851..8ede3088 100644 --- a/src/main/java/net/fabricmc/loom/util/ModProcessor.java +++ b/src/main/java/net/fabricmc/loom/util/ModProcessor.java @@ -53,10 +53,7 @@ import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.jar.JarFile; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -83,9 +80,13 @@ public class ModProcessor { File mappingsFile = Constants.MAPPINGS_TINY.get(extension); Path mappings = mappingsFile.toPath(); Path mc = Constants.MINECRAFT_INTERMEDIARY_JAR.get(extension).toPath(); - Path[] classpath = project.getConfigurations().getByName(Constants.CONFIG_MC_DEPENDENCIES).getFiles().stream() + Path[] mcDeps = project.getConfigurations().getByName(Constants.CONFIG_MC_DEPENDENCIES).getFiles().stream() .map(File::toPath) .toArray(Path[]::new); + Collection modCompileFiles = project.getConfigurations().getByName(Constants.COMPILE_MODS).getFiles(); + Path[] modCompiles = modCompileFiles.stream() + .map(File::toPath) + .toArray(Path[]::new); project.getLogger().lifecycle(":remapping " + input.getName() + " (TinyRemapper, " + fromM + " -> " + toM + ")"); @@ -96,9 +97,12 @@ public class ModProcessor { try { OutputConsumerPath outputConsumer = new OutputConsumerPath(Paths.get(output.getAbsolutePath())); outputConsumer.addNonClassFiles(input.toPath()); - remapper.read(input.toPath()); + if (!modCompileFiles.contains(input)) { + remapper.read(input.toPath()); + } + remapper.read(modCompiles); remapper.read(mc); - remapper.read(classpath); + remapper.read(mcDeps); remapper.apply(input.toPath(), outputConsumer); outputConsumer.finish(); } catch (Exception e){ @@ -110,7 +114,6 @@ public class ModProcessor { } Gson gson = new GsonBuilder().setPrettyPrinting().create(); - project.getLogger().lifecycle(":remapping " + input.getName() + " (Mixin reference map)"); // first, identify all of the mixin refmaps Set mixinRefmapFilenames = new HashSet<>(); // TODO: this is a lovely hack @@ -139,6 +142,8 @@ public class ModProcessor { throw new RuntimeException(e); } + project.getLogger().lifecycle(":remapping " + input.getName() + " (Mixin reference maps)"); + ZipUtil.transformEntries( output, mixinRefmapFilenames.stream()