mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-03-30 21:05:58 -05:00
RunConfigSettings: Add support for fully custom main class (#871)
This commit is contained in:
@@ -138,10 +138,10 @@ public class RunConfig {
|
||||
String environment = settings.getEnvironment();
|
||||
SourceSet sourceSet = settings.getSource(project);
|
||||
|
||||
String defaultMain = settings.getDefaultMainClass();
|
||||
String mainClass = settings.getMainClass().getOrNull();
|
||||
|
||||
if (defaultMain == null) {
|
||||
throw new IllegalArgumentException("Run configuration '" + name + "' must specify 'defaultMainClass'");
|
||||
if (mainClass == null) {
|
||||
throw new IllegalArgumentException("Run configuration '" + name + "' must specify 'mainClass'");
|
||||
}
|
||||
|
||||
if (configName == null) {
|
||||
@@ -179,7 +179,7 @@ public class RunConfig {
|
||||
// Custom parameters
|
||||
runConfig.programArgs.addAll(settings.getProgramArgs());
|
||||
runConfig.vmArgs.addAll(settings.getVmArgs());
|
||||
runConfig.vmArgs.add("-Dfabric.dli.main=" + getMainClass(environment, extension, defaultMain));
|
||||
runConfig.vmArgs.add("-Dfabric.dli.main=" + mainClass);
|
||||
runConfig.environmentVariables = new HashMap<>();
|
||||
runConfig.environmentVariables.putAll(settings.getEnvironmentVariables());
|
||||
runConfig.projectName = project.getName();
|
||||
@@ -245,7 +245,7 @@ public class RunConfig {
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private static String getMainClass(String side, LoomGradleExtension extension, String defaultMainClass) {
|
||||
static String getMainClass(String side, LoomGradleExtension extension, String defaultMainClass) {
|
||||
InstallerData installerData = extension.getInstallerData();
|
||||
|
||||
if (installerData == null) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* This file is part of fabric-loom, licensed under the MIT License (MIT).
|
||||
*
|
||||
* Copyright (c) 2021 FabricMC
|
||||
* Copyright (c) 2021-2023 FabricMC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -31,10 +31,12 @@ import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
import org.gradle.api.Named;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.provider.Property;
|
||||
import org.gradle.api.tasks.SourceSet;
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
@@ -74,6 +76,14 @@ public final class RunConfigSettings implements Named {
|
||||
*/
|
||||
private String defaultMainClass;
|
||||
|
||||
/**
|
||||
* The main class of the run configuration.
|
||||
*
|
||||
* <p>If unset, {@link #defaultMainClass} is used as the fallback, including the overwritten main class
|
||||
* from installer files.
|
||||
*/
|
||||
private final Property<String> mainClass;
|
||||
|
||||
/**
|
||||
* The source set getter, which obtains the source set from the given project.
|
||||
*/
|
||||
@@ -106,6 +116,11 @@ public final class RunConfigSettings implements Named {
|
||||
this.project = project;
|
||||
this.extension = LoomGradleExtension.get(project);
|
||||
this.ideConfigGenerated = extension.isRootProject();
|
||||
this.mainClass = project.getObjects().property(String.class).convention(project.provider(() -> {
|
||||
Objects.requireNonNull(environment, "Run config " + baseName + " must specify environment");
|
||||
Objects.requireNonNull(defaultMainClass, "Run config " + baseName + " must specify default main class");
|
||||
return RunConfig.getMainClass(environment, extension, defaultMainClass);
|
||||
}));
|
||||
|
||||
setSource(p -> {
|
||||
final String sourceSetName = MinecraftSourceSets.get(p).getSourceSetForEnv(getEnvironment());
|
||||
@@ -160,6 +175,16 @@ public final class RunConfigSettings implements Named {
|
||||
this.defaultMainClass = defaultMainClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* The main class of the run configuration.
|
||||
*
|
||||
* <p>If unset, {@link #getDefaultMainClass defaultMainClass} is used as the fallback,
|
||||
* including the overwritten main class from installer files.
|
||||
*/
|
||||
public Property<String> getMainClass() {
|
||||
return mainClass;
|
||||
}
|
||||
|
||||
public String getRunDir() {
|
||||
return runDir;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user