Rename mode -> environment + Hopefully fix a regression with the run tasks
parent
6a315be278
commit
5b3222e9b9
|
@ -29,6 +29,7 @@ import java.io.InputStream;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
@ -103,7 +104,7 @@ public class RunConfig {
|
||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void populate(Project project, LoomGradleExtension extension, RunConfig runConfig, String mode) {
|
private static void populate(Project project, LoomGradleExtension extension, RunConfig runConfig, String environment) {
|
||||||
runConfig.configName += extension.isRootProject() ? "" : " (" + project.getPath() + ")";
|
runConfig.configName += extension.isRootProject() ? "" : " (" + project.getPath() + ")";
|
||||||
runConfig.eclipseProjectName = project.getExtensions().getByType(EclipseModel.class).getProject().getName();
|
runConfig.eclipseProjectName = project.getExtensions().getByType(EclipseModel.class).getProject().getName();
|
||||||
runConfig.vmArgs = "";
|
runConfig.vmArgs = "";
|
||||||
|
@ -111,10 +112,10 @@ public class RunConfig {
|
||||||
|
|
||||||
if ("launchwrapper".equals(extension.getLoaderLaunchMethod())) {
|
if ("launchwrapper".equals(extension.getLoaderLaunchMethod())) {
|
||||||
runConfig.mainClass = "net.minecraft.launchwrapper.Launch"; // TODO What about custom tweakers for run configs?
|
runConfig.mainClass = "net.minecraft.launchwrapper.Launch"; // TODO What about custom tweakers for run configs?
|
||||||
runConfig.programArgs += "--tweakClass " + ("client".equals(mode) ? Constants.LaunchWrapper.DEFAULT_FABRIC_CLIENT_TWEAKER : Constants.LaunchWrapper.DEFAULT_FABRIC_SERVER_TWEAKER);
|
runConfig.programArgs += "--tweakClass " + ("client".equals(environment) ? Constants.LaunchWrapper.DEFAULT_FABRIC_CLIENT_TWEAKER : Constants.LaunchWrapper.DEFAULT_FABRIC_SERVER_TWEAKER);
|
||||||
} else {
|
} else {
|
||||||
runConfig.mainClass = "net.fabricmc.devlaunchinjector.Main";
|
runConfig.mainClass = "net.fabricmc.devlaunchinjector.Main";
|
||||||
runConfig.vmArgs = "-Dfabric.dli.config=" + encodeEscaped(extension.getDevLauncherConfig().getAbsolutePath()) + " -Dfabric.dli.env=" + mode.toLowerCase();
|
runConfig.vmArgs = "-Dfabric.dli.config=" + encodeEscaped(extension.getDevLauncherConfig().getAbsolutePath()) + " -Dfabric.dli.env=" + environment.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extension.getLoaderLaunchMethod().equals("launchwrapper")) {
|
if (extension.getLoaderLaunchMethod().equals("launchwrapper")) {
|
||||||
|
@ -122,7 +123,7 @@ public class RunConfig {
|
||||||
JsonObject installerJson = extension.getInstallerJson();
|
JsonObject installerJson = extension.getInstallerJson();
|
||||||
|
|
||||||
if (installerJson != null) {
|
if (installerJson != null) {
|
||||||
List<String> sideKeys = ImmutableList.of(mode, "common");
|
List<String> sideKeys = ImmutableList.of(environment, "common");
|
||||||
|
|
||||||
// copy launchwrapper tweakers
|
// copy launchwrapper tweakers
|
||||||
if (installerJson.has("launchwrapper")) {
|
if (installerJson.has("launchwrapper")) {
|
||||||
|
@ -162,7 +163,7 @@ public class RunConfig {
|
||||||
String name = settings.getName();
|
String name = settings.getName();
|
||||||
|
|
||||||
String configName = settings.getConfigName();
|
String configName = settings.getConfigName();
|
||||||
String mode = settings.getMode();
|
String environment = settings.getEnvironment();
|
||||||
SourceSet sourceSet = settings.getSource(project);
|
SourceSet sourceSet = settings.getSource(project);
|
||||||
|
|
||||||
String defaultMain = settings.getDefaultMainClass();
|
String defaultMain = settings.getDefaultMainClass();
|
||||||
|
@ -182,9 +183,7 @@ public class RunConfig {
|
||||||
configName += "Minecraft " + capitalizeCamelCaseName(name);
|
configName += "Minecraft " + capitalizeCamelCaseName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode == null) {
|
Objects.requireNonNull(environment, "No environment set for run config");
|
||||||
mode = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
String runDir = settings.getRunDir();
|
String runDir = settings.getRunDir();
|
||||||
|
|
||||||
|
@ -194,7 +193,7 @@ public class RunConfig {
|
||||||
|
|
||||||
RunConfig runConfig = new RunConfig();
|
RunConfig runConfig = new RunConfig();
|
||||||
runConfig.configName = configName;
|
runConfig.configName = configName;
|
||||||
populate(project, extension, runConfig, mode);
|
populate(project, extension, runConfig, environment);
|
||||||
runConfig.ideaModuleName = getIdeaModuleName(project, sourceSet);
|
runConfig.ideaModuleName = getIdeaModuleName(project, sourceSet);
|
||||||
runConfig.runDirIdeaUrl = "file://$PROJECT_DIR$/" + runDir;
|
runConfig.runDirIdeaUrl = "file://$PROJECT_DIR$/" + runDir;
|
||||||
runConfig.runDir = runDir;
|
runConfig.runDir = runDir;
|
||||||
|
@ -208,7 +207,7 @@ public class RunConfig {
|
||||||
runConfig.vmArgs += " " + vmArg;
|
runConfig.vmArgs += " " + vmArg;
|
||||||
}
|
}
|
||||||
|
|
||||||
runConfig.vmArgs += " -Dfabric.dli.main=" + getMainClass(mode, extension, defaultMain);
|
runConfig.vmArgs += " -Dfabric.dli.main=" + getMainClass(environment, extension, defaultMain);
|
||||||
|
|
||||||
// Remove unnecessary leading/trailing whitespaces we might have generated
|
// Remove unnecessary leading/trailing whitespaces we might have generated
|
||||||
runConfig.programArgs = runConfig.programArgs.trim();
|
runConfig.programArgs = runConfig.programArgs.trim();
|
||||||
|
|
|
@ -58,9 +58,9 @@ public final class RunConfigSettings implements Named {
|
||||||
private final List<String> programArgs = new ArrayList<>();
|
private final List<String> programArgs = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The mode to run, which is the name of the run config in {@code fabric_installer.[method].json}.
|
* The environment (or side) to run, usually client or server.
|
||||||
*/
|
*/
|
||||||
private String mode;
|
private String environment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The full name of the run configuration, i.e. 'Minecraft Client'.
|
* The full name of the run configuration, i.e. 'Minecraft Client'.
|
||||||
|
@ -100,7 +100,6 @@ public final class RunConfigSettings implements Named {
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.extension = project.getExtensions().getByType(LoomGradleExtension.class);
|
this.extension = project.getExtensions().getByType(LoomGradleExtension.class);
|
||||||
|
|
||||||
mode(baseName);
|
|
||||||
source("main");
|
source("main");
|
||||||
runDir("run");
|
runDir("run");
|
||||||
}
|
}
|
||||||
|
@ -126,12 +125,12 @@ public final class RunConfigSettings implements Named {
|
||||||
return programArgs;
|
return programArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMode() {
|
public String getEnvironment() {
|
||||||
return mode;
|
return environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMode(String mode) {
|
public void setEnvironment(String environment) {
|
||||||
this.mode = mode;
|
this.environment = environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getConfigName() {
|
public String getConfigName() {
|
||||||
|
@ -170,8 +169,8 @@ public final class RunConfigSettings implements Named {
|
||||||
this.source = sourceFn;
|
this.source = sourceFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void mode(String mode) {
|
public void environment(String environment) {
|
||||||
setMode(mode);
|
setEnvironment(environment);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void name(String name) {
|
public void name(String name) {
|
||||||
|
@ -255,7 +254,7 @@ public final class RunConfigSettings implements Named {
|
||||||
*/
|
*/
|
||||||
public void client() {
|
public void client() {
|
||||||
startFirstThread();
|
startFirstThread();
|
||||||
mode("client");
|
environment("client");
|
||||||
defaultMainClass(Constants.Knot.KNOT_CLIENT);
|
defaultMainClass(Constants.Knot.KNOT_CLIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,7 +263,7 @@ public final class RunConfigSettings implements Named {
|
||||||
*/
|
*/
|
||||||
public void server() {
|
public void server() {
|
||||||
programArg("nogui");
|
programArg("nogui");
|
||||||
mode("server");
|
environment("server");
|
||||||
defaultMainClass(Constants.Knot.KNOT_SERVER);
|
defaultMainClass(Constants.Knot.KNOT_SERVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,7 +274,7 @@ public final class RunConfigSettings implements Named {
|
||||||
vmArgs.addAll(0, parent.vmArgs);
|
vmArgs.addAll(0, parent.vmArgs);
|
||||||
programArgs.addAll(0, parent.programArgs);
|
programArgs.addAll(0, parent.programArgs);
|
||||||
|
|
||||||
mode = parent.mode;
|
environment = parent.environment;
|
||||||
name = parent.name;
|
name = parent.name;
|
||||||
defaultMainClass = parent.defaultMainClass;
|
defaultMainClass = parent.defaultMainClass;
|
||||||
source = parent.source;
|
source = parent.source;
|
||||||
|
|
|
@ -32,6 +32,7 @@ import java.util.List;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
|
import org.gradle.api.plugins.JavaPlugin;
|
||||||
import org.gradle.api.tasks.JavaExec;
|
import org.gradle.api.tasks.JavaExec;
|
||||||
|
|
||||||
import net.fabricmc.loom.LoomGradleExtension;
|
import net.fabricmc.loom.LoomGradleExtension;
|
||||||
|
@ -46,7 +47,7 @@ public abstract class AbstractRunTask extends JavaExec {
|
||||||
setGroup("fabric");
|
setGroup("fabric");
|
||||||
this.configProvider = config;
|
this.configProvider = config;
|
||||||
|
|
||||||
classpath(getProject().getConfigurations().getByName("runtimeClasspath"));
|
setClasspath(getProject().getConfigurations().getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME));
|
||||||
classpath(this.getProject().getExtensions().getByType(LoomGradleExtension.class).getUnmappedModCollection());
|
classpath(this.getProject().getExtensions().getByType(LoomGradleExtension.class).getUnmappedModCollection());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
package net.fabricmc.loom.task;
|
package net.fabricmc.loom.task;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
import org.gradle.api.tasks.TaskContainer;
|
import org.gradle.api.tasks.TaskContainer;
|
||||||
|
|
||||||
|
@ -85,20 +86,24 @@ public final class LoomTasks {
|
||||||
private static void registerRunTasks(TaskContainer tasks, Project project) {
|
private static void registerRunTasks(TaskContainer tasks, Project project) {
|
||||||
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
|
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
|
||||||
|
|
||||||
extension.getRuns().create("client", RunConfigSettings::client);
|
Preconditions.checkArgument(extension.getRuns().size() == 0, "Run configurations must not be registered before loom");
|
||||||
extension.getRuns().create("server", RunConfigSettings::server);
|
|
||||||
|
|
||||||
project.afterEvaluate(p -> {
|
extension.getRuns().whenObjectAdded(config -> {
|
||||||
for (RunConfigSettings config : extension.getRuns()) {
|
|
||||||
String configName = config.getName();
|
String configName = config.getName();
|
||||||
String taskName = "run" + configName.substring(0, 1).toUpperCase() + configName.substring(1);
|
String taskName = "run" + configName.substring(0, 1).toUpperCase() + configName.substring(1);
|
||||||
|
|
||||||
tasks.register(taskName, RunGameTask.class, config).configure(t -> {
|
tasks.register(taskName, RunGameTask.class, config).configure(t -> {
|
||||||
t.setDescription("Starts the '" + config.getConfigName() + "' run configuration");
|
t.setDescription("Starts the '" + config.getConfigName() + "' run configuration");
|
||||||
t.setGroup("fabric");
|
t.setGroup("fabric");
|
||||||
});
|
|
||||||
|
if (config.getEnvironment().equals("client")) {
|
||||||
|
t.dependsOn("downloadAssets");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
extension.getRuns().create("client", RunConfigSettings::client);
|
||||||
|
extension.getRuns().create("server", RunConfigSettings::server);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void registerDecompileTasks(TaskContainer tasks, Project project) {
|
private static void registerDecompileTasks(TaskContainer tasks, Project project) {
|
||||||
|
|
Loading…
Reference in New Issue