aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom
diff options
context:
space:
mode:
authormodmuss50 <modmuss50@gmail.com>2020-12-21 19:34:00 +0000
committerGitHub <noreply@github.com>2020-12-21 19:34:00 +0000
commit3bdccee02e624c7e0905ec8b2d92608f423adb0b (patch)
tree2691a731c11da1cfc773fe55d637b011bd322319 /src/main/java/net/fabricmc/loom
parent78c934aed58e28b2128ef8969d74110e8050fa84 (diff)
downloadarchitectury-loom-3bdccee02e624c7e0905ec8b2d92608f423adb0b.tar.gz
architectury-loom-3bdccee02e624c7e0905ec8b2d92608f423adb0b.tar.bz2
architectury-loom-3bdccee02e624c7e0905ec8b2d92608f423adb0b.zip
Refactor and fix game/loader library handling (#298)
Update fernflower
Diffstat (limited to 'src/main/java/net/fabricmc/loom')
-rw-r--r--src/main/java/net/fabricmc/loom/AbstractPlugin.java5
-rw-r--r--src/main/java/net/fabricmc/loom/providers/LaunchProvider.java2
-rw-r--r--src/main/java/net/fabricmc/loom/providers/MinecraftLibraryProvider.java8
-rw-r--r--src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java8
-rw-r--r--src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java3
-rw-r--r--src/main/java/net/fabricmc/loom/util/Constants.java2
-rw-r--r--src/main/java/net/fabricmc/loom/util/LoomDependencyManager.java13
-rw-r--r--src/main/java/net/fabricmc/loom/util/ModProcessor.java3
-rw-r--r--src/main/java/net/fabricmc/loom/util/SourceRemapper.java2
9 files changed, 20 insertions, 26 deletions
diff --git a/src/main/java/net/fabricmc/loom/AbstractPlugin.java b/src/main/java/net/fabricmc/loom/AbstractPlugin.java
index 3aa6f285..4c1b70a4 100644
--- a/src/main/java/net/fabricmc/loom/AbstractPlugin.java
+++ b/src/main/java/net/fabricmc/loom/AbstractPlugin.java
@@ -119,6 +119,8 @@ public class AbstractPlugin implements Plugin<Project> {
minecraftNamedConfig.setTransitive(false); // The launchers do not recurse dependencies
Configuration minecraftDependenciesConfig = project.getConfigurations().maybeCreate(Constants.Configurations.MINECRAFT_DEPENDENCIES);
minecraftDependenciesConfig.setTransitive(false);
+ Configuration loaderDependenciesConfig = project.getConfigurations().maybeCreate(Constants.Configurations.LOADER_DEPENDENCIES);
+ loaderDependenciesConfig.setTransitive(false);
Configuration minecraftConfig = project.getConfigurations().maybeCreate(Constants.Configurations.MINECRAFT);
minecraftConfig.setTransitive(false);
@@ -147,7 +149,8 @@ public class AbstractPlugin implements Plugin<Project> {
extendsFrom("testCompileClasspath", Constants.Configurations.MINECRAFT_NAMED);
extendsFrom("testRuntimeClasspath", Constants.Configurations.MINECRAFT_NAMED);
- extendsFrom(Constants.Configurations.MINECRAFT_NAMED, Constants.Configurations.MINECRAFT_DEPENDENCIES);
+ extendsFrom(Constants.Configurations.LOADER_DEPENDENCIES, Constants.Configurations.MINECRAFT_DEPENDENCIES);
+ extendsFrom(Constants.Configurations.MINECRAFT_NAMED, Constants.Configurations.LOADER_DEPENDENCIES);
extendsFrom("compile", Constants.Configurations.MAPPINGS_FINAL);
diff --git a/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java b/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java
index 3697874c..a9284286 100644
--- a/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java
+++ b/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java
@@ -104,7 +104,7 @@ public class LaunchProvider extends DependencyProvider {
private void writeRemapClassPath() {
List<String> inputConfigurations = new ArrayList<>();
- inputConfigurations.add(Constants.Configurations.MINECRAFT_DEPENDENCIES);
+ inputConfigurations.add(Constants.Configurations.LOADER_DEPENDENCIES);
inputConfigurations.addAll(Constants.MOD_COMPILE_ENTRIES.stream().map(RemappedConfigurationEntry::getSourceConfiguration).collect(Collectors.toList()));
List<File> remapClasspath = new ArrayList<>();
diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftLibraryProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftLibraryProvider.java
index ed74ef29..6ee9c0b5 100644
--- a/src/main/java/net/fabricmc/loom/providers/MinecraftLibraryProvider.java
+++ b/src/main/java/net/fabricmc/loom/providers/MinecraftLibraryProvider.java
@@ -25,8 +25,6 @@
package net.fabricmc.loom.providers;
import java.io.File;
-import java.util.Collection;
-import java.util.HashSet;
import org.gradle.api.Project;
@@ -37,8 +35,6 @@ import net.fabricmc.loom.util.MinecraftVersionInfo;
public class MinecraftLibraryProvider {
public File MINECRAFT_LIBS;
- private final Collection<File> libs = new HashSet<>();
-
public void provide(MinecraftProvider minecraftProvider, Project project) {
MinecraftVersionInfo versionInfo = minecraftProvider.getVersionInfo();
@@ -60,10 +56,6 @@ public class MinecraftLibraryProvider {
}
}
- public Collection<File> getLibraries() {
- return libs;
- }
-
private void initFiles(Project project, MinecraftProvider minecraftProvider) {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
MINECRAFT_LIBS = new File(extension.getUserCache(), "libraries");
diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java
index 905ec231..1767f4a5 100644
--- a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java
+++ b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java
@@ -28,7 +28,6 @@ import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Map;
import java.util.function.Consumer;
@@ -135,7 +134,8 @@ public class MinecraftMappedProvider extends DependencyProvider {
}
public Path[] getRemapClasspath() {
- return getMapperPaths().stream().map(File::toPath).toArray(Path[]::new);
+ return getProject().getConfigurations().getByName(Constants.Configurations.MINECRAFT_DEPENDENCIES).getFiles()
+ .stream().map(File::toPath).toArray(Path[]::new);
}
protected void addDependencies(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) {
@@ -159,10 +159,6 @@ public class MinecraftMappedProvider extends DependencyProvider {
return String.format("%s-%s-%s-%s", minecraftProvider.getMinecraftVersion(), type, getExtension().getMappingsProvider().mappingsName, getExtension().getMappingsProvider().mappingsVersion);
}
- public Collection<File> getMapperPaths() {
- return minecraftProvider.getLibraryProvider().getLibraries();
- }
-
public File getIntermediaryJar() {
return minecraftIntermediaryJar;
}
diff --git a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
index 8f449d45..0a4c181b 100644
--- a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
+++ b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
@@ -36,6 +36,7 @@ import javax.inject.Inject;
import org.gradle.api.tasks.TaskAction;
+import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.LoomGradlePlugin;
import net.fabricmc.loom.api.decompilers.DecompilationMetadata;
import net.fabricmc.loom.api.decompilers.LoomDecompiler;
@@ -58,7 +59,7 @@ public class GenerateSourcesTask extends AbstractLoomTask {
public void doTask() throws Throwable {
int threads = Runtime.getRuntime().availableProcessors();
Path javaDocs = getExtension().getMappingsProvider().tinyMappings.toPath();
- Collection<Path> libraries = getExtension().getMinecraftProvider().getLibraryProvider().getLibraries()
+ Collection<Path> libraries = getProject().getConfigurations().getByName(Constants.Configurations.MINECRAFT_DEPENDENCIES).getFiles()
.stream().map(File::toPath).collect(Collectors.toSet());
DecompilationMetadata metadata = new DecompilationMetadata(threads, javaDocs, libraries);
diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java
index 7caa8657..7f779304 100644
--- a/src/main/java/net/fabricmc/loom/util/Constants.java
+++ b/src/main/java/net/fabricmc/loom/util/Constants.java
@@ -58,9 +58,11 @@ public class Constants {
public static final String INCLUDE = "include";
public static final String MINECRAFT = "minecraft";
public static final String MINECRAFT_DEPENDENCIES = "minecraftLibraries";
+ public static final String MINECRAFT_REMAP_CLASSPATH = "minecraftRemapClasspath";
public static final String MINECRAFT_NAMED = "minecraftNamed";
public static final String MAPPINGS = "mappings";
public static final String MAPPINGS_FINAL = "mappingsFinal";
+ public static final String LOADER_DEPENDENCIES = "loaderLibraries";
private Configurations() {
}
diff --git a/src/main/java/net/fabricmc/loom/util/LoomDependencyManager.java b/src/main/java/net/fabricmc/loom/util/LoomDependencyManager.java
index b365ba15..755992e5 100644
--- a/src/main/java/net/fabricmc/loom/util/LoomDependencyManager.java
+++ b/src/main/java/net/fabricmc/loom/util/LoomDependencyManager.java
@@ -135,8 +135,6 @@ public class LoomDependencyManager {
SourceRemapper sourceRemapper = new SourceRemapper(project, true);
String mappingsKey = mappingsProvider.getMappingsKey();
- ModCompileRemapper.remapDependencies(project, mappingsKey, extension, sourceRemapper);
-
if (extension.getInstallerJson() == null) {
//If we've not found the installer JSON we've probably skipped remapping Fabric loader, let's go looking
project.getLogger().info("Searching through modCompileClasspath for installer JSON");
@@ -153,16 +151,17 @@ public class LoomDependencyManager {
project.getLogger().info("Found installer JSON in " + input);
extension.setInstallerJson(jsonObject);
+ handleInstallerJson(extension.getInstallerJson(), project);
}
}
}
- if (extension.getInstallerJson() != null) {
- handleInstallerJson(extension.getInstallerJson(), project);
- } else {
+ if (extension.getInstallerJson() == null) {
project.getLogger().warn("fabric-installer.json not found in classpath!");
}
+ ModCompileRemapper.remapDependencies(project, mappingsKey, extension, sourceRemapper);
+
sourceRemapper.remapAll();
for (Runnable runnable : afterTasks) {
@@ -174,7 +173,7 @@ public class LoomDependencyManager {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
JsonObject libraries = jsonObject.get("libraries").getAsJsonObject();
- Configuration mcDepsConfig = project.getConfigurations().getByName(Constants.Configurations.MINECRAFT_DEPENDENCIES);
+ Configuration loaderDepsConfig = project.getConfigurations().getByName(Constants.Configurations.LOADER_DEPENDENCIES);
Configuration apDepsConfig = project.getConfigurations().getByName("annotationProcessor");
libraries.get("common").getAsJsonArray().forEach(jsonElement -> {
@@ -182,7 +181,7 @@ public class LoomDependencyManager {
ExternalModuleDependency modDep = (ExternalModuleDependency) project.getDependencies().create(name);
modDep.setTransitive(false);
- mcDepsConfig.getDependencies().add(modDep);
+ loaderDepsConfig.getDependencies().add(modDep);
if (!extension.ideSync()) {
apDepsConfig.getDependencies().add(modDep);
diff --git a/src/main/java/net/fabricmc/loom/util/ModProcessor.java b/src/main/java/net/fabricmc/loom/util/ModProcessor.java
index 01be5a15..75f5581d 100644
--- a/src/main/java/net/fabricmc/loom/util/ModProcessor.java
+++ b/src/main/java/net/fabricmc/loom/util/ModProcessor.java
@@ -136,7 +136,8 @@ public class ModProcessor {
MappingsProvider mappingsProvider = extension.getMappingsProvider();
Path mc = mappedProvider.getIntermediaryJar().toPath();
- Path[] mcDeps = mappedProvider.getMapperPaths().stream().map(File::toPath).toArray(Path[]::new);
+ Path[] mcDeps = project.getConfigurations().getByName(Constants.Configurations.LOADER_DEPENDENCIES).getFiles()
+ .stream().map(File::toPath).toArray(Path[]::new);
List<ModDependencyInfo> remapList = processList.stream().filter(ModDependencyInfo::requiresRemapping).collect(Collectors.toList());
diff --git a/src/main/java/net/fabricmc/loom/util/SourceRemapper.java b/src/main/java/net/fabricmc/loom/util/SourceRemapper.java
index 1f901aea..387990f9 100644
--- a/src/main/java/net/fabricmc/loom/util/SourceRemapper.java
+++ b/src/main/java/net/fabricmc/loom/util/SourceRemapper.java
@@ -214,7 +214,7 @@ public class SourceRemapper {
Mercury m = new Mercury();
m.setGracefulClasspathChecks(true);
- for (File file : project.getConfigurations().getByName(Constants.Configurations.MINECRAFT_DEPENDENCIES).getFiles()) {
+ for (File file : project.getConfigurations().getByName(Constants.Configurations.LOADER_DEPENDENCIES).getFiles()) {
m.getClassPath().add(file.toPath());
}