aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-02-02 15:32:02 +0800
committershedaniel <daniel@shedaniel.me>2021-02-02 15:32:02 +0800
commit6b8188e688a556e0950458a59ab16d7b4e58236f (patch)
treeb9da971f36b7ac6032d3acd8c1f1cf7f14f6149d
parent3f0c51324fb12d8b4dcd705a5bac14e406fa9f02 (diff)
parent5b3222e9b91d7f69187268e87527950e7b89aacb (diff)
downloadarchitectury-loom-6b8188e688a556e0950458a59ab16d7b4e58236f.tar.gz
architectury-loom-6b8188e688a556e0950458a59ab16d7b4e58236f.tar.bz2
architectury-loom-6b8188e688a556e0950458a59ab16d7b4e58236f.zip
Merge remote-tracking branch 'FabricMC/dev/0.6' into 0.6-merge
# Conflicts: # src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java # src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java # src/main/java/net/fabricmc/loom/task/LoomTasks.java
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java19
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java23
-rw-r--r--src/main/java/net/fabricmc/loom/task/AbstractRunTask.java3
-rw-r--r--src/main/java/net/fabricmc/loom/task/LoomTasks.java33
4 files changed, 38 insertions, 40 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java
index eb85934a..c2a0b68c 100644
--- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java
+++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java
@@ -32,6 +32,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.UUID;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@@ -122,7 +123,7 @@ public class RunConfig {
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.eclipseProjectName = project.getExtensions().getByType(EclipseModel.class).getProject().getName();
runConfig.vscodeProjectName = extension.isRootProject() ? "" : project.getPath();
@@ -131,10 +132,10 @@ public class RunConfig {
if ("launchwrapper".equals(extension.getLoaderLaunchMethod())) {
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 {
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.isForge()) {
@@ -159,7 +160,7 @@ public class RunConfig {
JsonObject installerJson = extension.getInstallerJson();
if (installerJson != null) {
- List<String> sideKeys = ImmutableList.of(mode, "common");
+ List<String> sideKeys = ImmutableList.of(environment, "common");
// copy launchwrapper tweakers
if (installerJson.has("launchwrapper")) {
@@ -199,7 +200,7 @@ public class RunConfig {
String name = settings.getName();
String configName = settings.getConfigName();
- String mode = settings.getMode();
+ String environment = settings.getEnvironment();
SourceSet sourceSet = settings.getSource(project);
String defaultMain = settings.getDefaultMainClass();
@@ -219,9 +220,7 @@ public class RunConfig {
configName += "Minecraft " + capitalizeCamelCaseName(name);
}
- if (mode == null) {
- mode = name;
- }
+ Objects.requireNonNull(environment, "No environment set for run config");
String runDir = settings.getRunDir();
@@ -231,7 +230,7 @@ public class RunConfig {
RunConfig runConfig = new RunConfig();
runConfig.configName = configName;
- populate(project, extension, runConfig, mode);
+ populate(project, extension, runConfig, environment);
runConfig.ideaModuleName = getIdeaModuleName(project, sourceSet);
runConfig.runDirIdeaUrl = "file://$PROJECT_DIR$/" + runDir;
runConfig.runDir = runDir;
@@ -245,7 +244,7 @@ public class RunConfig {
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
runConfig.programArgs = runConfig.programArgs.trim();
diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java
index 1a3ff178..10797e00 100644
--- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java
+++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java
@@ -58,9 +58,9 @@ public final class RunConfigSettings implements Named {
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'.
@@ -100,7 +100,6 @@ public final class RunConfigSettings implements Named {
this.project = project;
this.extension = project.getExtensions().getByType(LoomGradleExtension.class);
- mode(baseName);
source("main");
runDir("run");
}
@@ -126,12 +125,12 @@ public final class RunConfigSettings implements Named {
return programArgs;
}
- public String getMode() {
- return mode;
+ public String getEnvironment() {
+ return environment;
}
- public void setMode(String mode) {
- this.mode = mode;
+ public void setEnvironment(String environment) {
+ this.environment = environment;
}
public String getConfigName() {
@@ -170,8 +169,8 @@ public final class RunConfigSettings implements Named {
this.source = sourceFn;
}
- public void mode(String mode) {
- setMode(mode);
+ public void environment(String environment) {
+ setEnvironment(environment);
}
public void name(String name) {
@@ -255,7 +254,7 @@ public final class RunConfigSettings implements Named {
*/
public void client() {
startFirstThread();
- mode("client");
+ environment("client");
defaultMainClass(getExtension().isForge() ? Constants.ForgeUserDev.LAUNCH_TESTING : Constants.Knot.KNOT_CLIENT);
}
@@ -264,7 +263,7 @@ public final class RunConfigSettings implements Named {
*/
public void server() {
programArg("nogui");
- mode("server");
+ environment("server");
defaultMainClass(getExtension().isForge() ? Constants.ForgeUserDev.LAUNCH_TESTING : Constants.Knot.KNOT_SERVER);
}
@@ -283,7 +282,7 @@ public final class RunConfigSettings implements Named {
vmArgs.addAll(0, parent.vmArgs);
programArgs.addAll(0, parent.programArgs);
- mode = parent.mode;
+ environment = parent.environment;
name = parent.name;
defaultMainClass = parent.defaultMainClass;
source = parent.source;
diff --git a/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java b/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java
index 5f47cc17..61c27abb 100644
--- a/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java
+++ b/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java
@@ -32,6 +32,7 @@ import java.util.List;
import java.util.function.Function;
import org.gradle.api.Project;
+import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.tasks.JavaExec;
import net.fabricmc.loom.LoomGradleExtension;
@@ -46,7 +47,7 @@ public abstract class AbstractRunTask extends JavaExec {
setGroup("fabric");
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());
}
diff --git a/src/main/java/net/fabricmc/loom/task/LoomTasks.java b/src/main/java/net/fabricmc/loom/task/LoomTasks.java
index 0fdd28cd..a3aca532 100644
--- a/src/main/java/net/fabricmc/loom/task/LoomTasks.java
+++ b/src/main/java/net/fabricmc/loom/task/LoomTasks.java
@@ -24,6 +24,7 @@
package net.fabricmc.loom.task;
+import com.google.common.base.Preconditions;
import org.gradle.api.Project;
import org.gradle.api.tasks.TaskContainer;
@@ -85,26 +86,24 @@ public final class LoomTasks {
private static void registerRunTasks(TaskContainer tasks, Project project) {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
- extension.getRuns().create("client", RunConfigSettings::client);
- extension.getRuns().create("server", RunConfigSettings::server);
+ Preconditions.checkArgument(extension.getRuns().size() == 0, "Run configurations must not be registered before loom");
- project.afterEvaluate(p -> {
- if (extension.isDataGenEnabled()) {
- extension.getRuns().create("data", RunConfigSettings::data);
- }
- });
+ extension.getRuns().whenObjectAdded(config -> {
+ String configName = config.getName();
+ String taskName = "run" + configName.substring(0, 1).toUpperCase() + configName.substring(1);
- project.afterEvaluate(p -> {
- for (RunConfigSettings config : extension.getRuns()) {
- String configName = config.getName();
- String taskName = "run" + configName.substring(0, 1).toUpperCase() + configName.substring(1);
-
- tasks.register(taskName, RunGameTask.class, config).configure(t -> {
- t.setDescription("Starts the '" + config.getConfigName() + "' run configuration");
- t.setGroup("fabric");
- });
- }
+ tasks.register(taskName, RunGameTask.class, config).configure(t -> {
+ t.setDescription("Starts the '" + config.getConfigName() + "' run configuration");
+ 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) {