Refactor and fix game/loader library handling (#298)

Update fernflower
dev/0.11
modmuss50 2020-12-21 19:34:00 +00:00 committed by GitHub
parent 78c934aed5
commit 3bdccee02e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 21 additions and 27 deletions

View File

@ -59,7 +59,7 @@ dependencies {
// decompilers // decompilers
implementation ('net.fabricmc:procyon-fabric-compilertools:0.5.35.13') implementation ('net.fabricmc:procyon-fabric-compilertools:0.5.35.13')
implementation ('org.jetbrains:intellij-fernflower:1.2.1.16') implementation ('net.fabricmc:fabric-fernflower:1.3.0')
implementation ('org.benf:cfr:0.150') implementation ('org.benf:cfr:0.150')
// source code remapping // source code remapping

View File

@ -119,6 +119,8 @@ public class AbstractPlugin implements Plugin<Project> {
minecraftNamedConfig.setTransitive(false); // The launchers do not recurse dependencies minecraftNamedConfig.setTransitive(false); // The launchers do not recurse dependencies
Configuration minecraftDependenciesConfig = project.getConfigurations().maybeCreate(Constants.Configurations.MINECRAFT_DEPENDENCIES); Configuration minecraftDependenciesConfig = project.getConfigurations().maybeCreate(Constants.Configurations.MINECRAFT_DEPENDENCIES);
minecraftDependenciesConfig.setTransitive(false); minecraftDependenciesConfig.setTransitive(false);
Configuration loaderDependenciesConfig = project.getConfigurations().maybeCreate(Constants.Configurations.LOADER_DEPENDENCIES);
loaderDependenciesConfig.setTransitive(false);
Configuration minecraftConfig = project.getConfigurations().maybeCreate(Constants.Configurations.MINECRAFT); Configuration minecraftConfig = project.getConfigurations().maybeCreate(Constants.Configurations.MINECRAFT);
minecraftConfig.setTransitive(false); minecraftConfig.setTransitive(false);
@ -147,7 +149,8 @@ public class AbstractPlugin implements Plugin<Project> {
extendsFrom("testCompileClasspath", Constants.Configurations.MINECRAFT_NAMED); extendsFrom("testCompileClasspath", Constants.Configurations.MINECRAFT_NAMED);
extendsFrom("testRuntimeClasspath", 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); extendsFrom("compile", Constants.Configurations.MAPPINGS_FINAL);

View File

@ -104,7 +104,7 @@ public class LaunchProvider extends DependencyProvider {
private void writeRemapClassPath() { private void writeRemapClassPath() {
List<String> inputConfigurations = new ArrayList<>(); 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())); inputConfigurations.addAll(Constants.MOD_COMPILE_ENTRIES.stream().map(RemappedConfigurationEntry::getSourceConfiguration).collect(Collectors.toList()));
List<File> remapClasspath = new ArrayList<>(); List<File> remapClasspath = new ArrayList<>();

View File

@ -25,8 +25,6 @@
package net.fabricmc.loom.providers; package net.fabricmc.loom.providers;
import java.io.File; import java.io.File;
import java.util.Collection;
import java.util.HashSet;
import org.gradle.api.Project; import org.gradle.api.Project;
@ -37,8 +35,6 @@ import net.fabricmc.loom.util.MinecraftVersionInfo;
public class MinecraftLibraryProvider { public class MinecraftLibraryProvider {
public File MINECRAFT_LIBS; public File MINECRAFT_LIBS;
private final Collection<File> libs = new HashSet<>();
public void provide(MinecraftProvider minecraftProvider, Project project) { public void provide(MinecraftProvider minecraftProvider, Project project) {
MinecraftVersionInfo versionInfo = minecraftProvider.getVersionInfo(); MinecraftVersionInfo versionInfo = minecraftProvider.getVersionInfo();
@ -60,10 +56,6 @@ public class MinecraftLibraryProvider {
} }
} }
public Collection<File> getLibraries() {
return libs;
}
private void initFiles(Project project, MinecraftProvider minecraftProvider) { private void initFiles(Project project, MinecraftProvider minecraftProvider) {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
MINECRAFT_LIBS = new File(extension.getUserCache(), "libraries"); MINECRAFT_LIBS = new File(extension.getUserCache(), "libraries");

View File

@ -28,7 +28,6 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
@ -135,7 +134,8 @@ public class MinecraftMappedProvider extends DependencyProvider {
} }
public Path[] getRemapClasspath() { 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) { 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); 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() { public File getIntermediaryJar() {
return minecraftIntermediaryJar; return minecraftIntermediaryJar;
} }

View File

@ -36,6 +36,7 @@ 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.LoomGradlePlugin; 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;
@ -58,7 +59,7 @@ public class GenerateSourcesTask extends AbstractLoomTask {
public void doTask() throws Throwable { public void doTask() throws Throwable {
int threads = Runtime.getRuntime().availableProcessors(); int threads = Runtime.getRuntime().availableProcessors();
Path javaDocs = getExtension().getMappingsProvider().tinyMappings.toPath(); 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()); .stream().map(File::toPath).collect(Collectors.toSet());
DecompilationMetadata metadata = new DecompilationMetadata(threads, javaDocs, libraries); DecompilationMetadata metadata = new DecompilationMetadata(threads, javaDocs, libraries);

View File

@ -58,9 +58,11 @@ public class Constants {
public static final String INCLUDE = "include"; public static final String INCLUDE = "include";
public static final String MINECRAFT = "minecraft"; public static final String MINECRAFT = "minecraft";
public static final String MINECRAFT_DEPENDENCIES = "minecraftLibraries"; 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 MINECRAFT_NAMED = "minecraftNamed";
public static final String MAPPINGS = "mappings"; public static final String MAPPINGS = "mappings";
public static final String MAPPINGS_FINAL = "mappingsFinal"; public static final String MAPPINGS_FINAL = "mappingsFinal";
public static final String LOADER_DEPENDENCIES = "loaderLibraries";
private Configurations() { private Configurations() {
} }

View File

@ -135,8 +135,6 @@ public class LoomDependencyManager {
SourceRemapper sourceRemapper = new SourceRemapper(project, true); SourceRemapper sourceRemapper = new SourceRemapper(project, true);
String mappingsKey = mappingsProvider.getMappingsKey(); String mappingsKey = mappingsProvider.getMappingsKey();
ModCompileRemapper.remapDependencies(project, mappingsKey, extension, sourceRemapper);
if (extension.getInstallerJson() == null) { if (extension.getInstallerJson() == null) {
//If we've not found the installer JSON we've probably skipped remapping Fabric loader, let's go looking //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"); project.getLogger().info("Searching through modCompileClasspath for installer JSON");
@ -153,16 +151,17 @@ public class LoomDependencyManager {
project.getLogger().info("Found installer JSON in " + input); project.getLogger().info("Found installer JSON in " + input);
extension.setInstallerJson(jsonObject); extension.setInstallerJson(jsonObject);
handleInstallerJson(extension.getInstallerJson(), project);
} }
} }
} }
if (extension.getInstallerJson() != null) { if (extension.getInstallerJson() == null) {
handleInstallerJson(extension.getInstallerJson(), project);
} else {
project.getLogger().warn("fabric-installer.json not found in classpath!"); project.getLogger().warn("fabric-installer.json not found in classpath!");
} }
ModCompileRemapper.remapDependencies(project, mappingsKey, extension, sourceRemapper);
sourceRemapper.remapAll(); sourceRemapper.remapAll();
for (Runnable runnable : afterTasks) { for (Runnable runnable : afterTasks) {
@ -174,7 +173,7 @@ public class LoomDependencyManager {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
JsonObject libraries = jsonObject.get("libraries").getAsJsonObject(); 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"); Configuration apDepsConfig = project.getConfigurations().getByName("annotationProcessor");
libraries.get("common").getAsJsonArray().forEach(jsonElement -> { libraries.get("common").getAsJsonArray().forEach(jsonElement -> {
@ -182,7 +181,7 @@ public class LoomDependencyManager {
ExternalModuleDependency modDep = (ExternalModuleDependency) project.getDependencies().create(name); ExternalModuleDependency modDep = (ExternalModuleDependency) project.getDependencies().create(name);
modDep.setTransitive(false); modDep.setTransitive(false);
mcDepsConfig.getDependencies().add(modDep); loaderDepsConfig.getDependencies().add(modDep);
if (!extension.ideSync()) { if (!extension.ideSync()) {
apDepsConfig.getDependencies().add(modDep); apDepsConfig.getDependencies().add(modDep);

View File

@ -136,7 +136,8 @@ public class ModProcessor {
MappingsProvider mappingsProvider = extension.getMappingsProvider(); MappingsProvider mappingsProvider = extension.getMappingsProvider();
Path mc = mappedProvider.getIntermediaryJar().toPath(); 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()); List<ModDependencyInfo> remapList = processList.stream().filter(ModDependencyInfo::requiresRemapping).collect(Collectors.toList());

View File

@ -214,7 +214,7 @@ public class SourceRemapper {
Mercury m = new Mercury(); Mercury m = new Mercury();
m.setGracefulClasspathChecks(true); 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()); m.getClassPath().add(file.toPath());
} }