Export rumtime remap classpath to DLI (#277)
* Export rumtime remap classpath for https://github.com/FabricMC/fabric-loader/pull/241 * Fix bad mergedev/0.11
parent
21a9209b86
commit
9917f30518
|
@ -36,12 +36,14 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.StringJoiner;
|
import java.util.StringJoiner;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
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.util.Constants;
|
import net.fabricmc.loom.util.Constants;
|
||||||
import net.fabricmc.loom.util.DependencyProvider;
|
import net.fabricmc.loom.util.DependencyProvider;
|
||||||
|
import net.fabricmc.loom.util.RemappedConfigurationEntry;
|
||||||
|
|
||||||
public class LaunchProvider extends DependencyProvider {
|
public class LaunchProvider extends DependencyProvider {
|
||||||
public LaunchProvider(Project project) {
|
public LaunchProvider(Project project) {
|
||||||
|
@ -52,6 +54,7 @@ public class LaunchProvider extends DependencyProvider {
|
||||||
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws IOException {
|
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws IOException {
|
||||||
final LaunchConfig launchConfig = new LaunchConfig()
|
final LaunchConfig launchConfig = new LaunchConfig()
|
||||||
.property("fabric.development", "true")
|
.property("fabric.development", "true")
|
||||||
|
.property("fabric.remapClasspathFile", getRemapClasspathFile().getAbsolutePath())
|
||||||
.property("log4j.configurationFile", getLog4jConfigFile().getAbsolutePath())
|
.property("log4j.configurationFile", getLog4jConfigFile().getAbsolutePath())
|
||||||
|
|
||||||
.property("client", "java.library.path", getExtension().getNativesDirectory().getAbsolutePath())
|
.property("client", "java.library.path", getExtension().getNativesDirectory().getAbsolutePath())
|
||||||
|
@ -75,12 +78,18 @@ public class LaunchProvider extends DependencyProvider {
|
||||||
addDependency(Constants.Dependencies.DEV_LAUNCH_INJECTOR + Constants.Dependencies.Versions.DEV_LAUNCH_INJECTOR, "runtimeOnly");
|
addDependency(Constants.Dependencies.DEV_LAUNCH_INJECTOR + Constants.Dependencies.Versions.DEV_LAUNCH_INJECTOR, "runtimeOnly");
|
||||||
addDependency(Constants.Dependencies.TERMINAL_CONSOLE_APPENDER + Constants.Dependencies.Versions.TERMINAL_CONSOLE_APPENDER, "runtimeOnly");
|
addDependency(Constants.Dependencies.TERMINAL_CONSOLE_APPENDER + Constants.Dependencies.Versions.TERMINAL_CONSOLE_APPENDER, "runtimeOnly");
|
||||||
addDependency(Constants.Dependencies.JETBRAINS_ANNOTATIONS + Constants.Dependencies.Versions.JETBRAINS_ANNOTATIONS, "compileOnly");
|
addDependency(Constants.Dependencies.JETBRAINS_ANNOTATIONS + Constants.Dependencies.Versions.JETBRAINS_ANNOTATIONS, "compileOnly");
|
||||||
|
|
||||||
|
postPopulationScheduler.accept(this::writeRemapClassPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
private File getLog4jConfigFile() {
|
private File getLog4jConfigFile() {
|
||||||
return new File(getExtension().getDevLauncherConfig().getParentFile(), "log4j.xml");
|
return new File(getExtension().getDevLauncherConfig().getParentFile(), "log4j.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private File getRemapClasspathFile() {
|
||||||
|
return new File(getExtension().getDevLauncherConfig().getParentFile(), "remapClasspath.txt");
|
||||||
|
}
|
||||||
|
|
||||||
private void writeLog4jConfig() {
|
private void writeLog4jConfig() {
|
||||||
try (InputStream is = LaunchProvider.class.getClassLoader().getResourceAsStream("log4j2.fabric.xml")) {
|
try (InputStream is = LaunchProvider.class.getClassLoader().getResourceAsStream("log4j2.fabric.xml")) {
|
||||||
Files.deleteIfExists(getLog4jConfigFile().toPath());
|
Files.deleteIfExists(getLog4jConfigFile().toPath());
|
||||||
|
@ -90,6 +99,30 @@ public class LaunchProvider extends DependencyProvider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void writeRemapClassPath() {
|
||||||
|
List<String> inputConfigurations = new ArrayList<>();
|
||||||
|
inputConfigurations.add(Constants.Configurations.MINECRAFT_DEPENDENCIES);
|
||||||
|
inputConfigurations.addAll(Constants.MOD_COMPILE_ENTRIES.stream().map(RemappedConfigurationEntry::getSourceConfiguration).collect(Collectors.toList()));
|
||||||
|
|
||||||
|
List<File> remapClasspath = new ArrayList<>();
|
||||||
|
|
||||||
|
for (String inputConfiguration : inputConfigurations) {
|
||||||
|
remapClasspath.addAll(getProject().getConfigurations().getByName(inputConfiguration).getFiles());
|
||||||
|
}
|
||||||
|
|
||||||
|
remapClasspath.add(getExtension().getMinecraftMappedProvider().getIntermediaryJar());
|
||||||
|
|
||||||
|
String str = remapClasspath.stream()
|
||||||
|
.map(File::getAbsolutePath)
|
||||||
|
.collect(Collectors.joining(File.pathSeparator));
|
||||||
|
|
||||||
|
try {
|
||||||
|
Files.write(getRemapClasspathFile().toPath(), str.getBytes(StandardCharsets.UTF_8));
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException("Failed to generate remap classpath", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTargetConfig() {
|
public String getTargetConfig() {
|
||||||
return Constants.Configurations.MINECRAFT_NAMED;
|
return Constants.Configurations.MINECRAFT_NAMED;
|
||||||
|
|
Loading…
Reference in New Issue