diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-12-08 21:24:42 +0800 | 
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-12-08 21:24:42 +0800 | 
| commit | 07f252d70eb8a9714cfffc9e34bda39ca4f154d8 (patch) | |
| tree | a8627c262985865b66d33e008f223b9c5be53d27 /src/main/java/net | |
| parent | 0fa2f6c73b8a7e02001b6fb1526011d76cd72b92 (diff) | |
| download | architectury-loom-07f252d70eb8a9714cfffc9e34bda39ca4f154d8.tar.gz architectury-loom-07f252d70eb8a9714cfffc9e34bda39ca4f154d8.tar.bz2 architectury-loom-07f252d70eb8a9714cfffc9e34bda39ca4f154d8.zip | |
Option to disable mojmap warning + ways to add tasks to do before run.
Diffstat (limited to 'src/main/java/net')
3 files changed, 79 insertions, 32 deletions
| diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java index 8f1c7f16..0ea0dd8d 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java +++ b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java @@ -92,6 +92,8 @@ public class LoomGradleExtension {  	private Mercury[] srcMercuryCache = new Mercury[2];  	private final LazyBool forge;  	private Set<File> mixinMappings = Collections.synchronizedSet(new HashSet<>()); +	private final List<String> tasksBeforeRun = Collections.synchronizedList(new ArrayList<>()); +	private boolean silentMojangMappingsLicense = false;  	/**  	 * Loom will generate a new genSources task (with a new name, based off of {@link LoomDecompiler#name()}) @@ -119,7 +121,25 @@ public class LoomGradleExtension {  	public Mercury getOrCreateSrcMercuryCache(int id, Supplier<Mercury> factory) {  		return srcMercuryCache[id] != null ? srcMercuryCache[id] : (srcMercuryCache[id] = factory.get());  	} - +	 +	public void addTaskBeforeRun(String task) { +		synchronized(this.tasksBeforeRun) { +			this.tasksBeforeRun.add(task); +		} +	} +	 +	public List<String> getTasksBeforeRun() { +		return tasksBeforeRun; +	} +	 +	public void silentMojangMappingsLicense() { +		this.silentMojangMappingsLicense = true; +	} +	 +	public boolean isSilentMojangMappingsLicenseEnabled() { +		return silentMojangMappingsLicense; +	} +	  	public Dependency officialMojangMappings() {  		return new MojangMappingsDependency(project, this);  	} diff --git a/src/main/java/net/fabricmc/loom/util/RunConfig.java b/src/main/java/net/fabricmc/loom/util/RunConfig.java index f989c217..8575379a 100644 --- a/src/main/java/net/fabricmc/loom/util/RunConfig.java +++ b/src/main/java/net/fabricmc/loom/util/RunConfig.java @@ -24,36 +24,32 @@  package net.fabricmc.loom.util; -import static net.fabricmc.loom.AbstractPlugin.isRootProject; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; -  import com.google.common.base.Strings;  import com.google.common.collect.ImmutableList;  import com.google.common.collect.ImmutableMap;  import com.google.gson.JsonElement;  import com.google.gson.JsonObject; +import net.fabricmc.loom.LoomGradleExtension;  import org.apache.commons.io.FileUtils;  import org.apache.commons.io.IOUtils; +import org.gradle.api.Project;  import org.gradle.api.plugins.JavaPluginConvention;  import org.gradle.api.tasks.SourceSet; +import org.gradle.plugins.ide.eclipse.model.EclipseModel;  import org.w3c.dom.Document;  import org.w3c.dom.Element;  import org.w3c.dom.Node; -import org.gradle.api.Project; -import org.gradle.plugins.ide.eclipse.model.EclipseModel; -import net.fabricmc.loom.LoomGradleExtension; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import static net.fabricmc.loom.AbstractPlugin.isRootProject;  public class RunConfig {  	public String configName; @@ -63,6 +59,7 @@ public class RunConfig {  	public String runDir;  	public String vmArgs;  	public String programArgs; +	public List<String> tasksBeforeRun = new ArrayList<>();  	public final Map<String, String> envVariables = new HashMap<>();  	public Element genRuns(Element doc) { @@ -88,7 +85,25 @@ public class RunConfig {  				this.addXml(envs, "env", ImmutableMap.of("name", envEntry.getKey(), "value", envEntry.getValue()));  			}  		} - +		 +		if (!tasksBeforeRun.isEmpty()) { +			Element methodElement = this.addXml(root, "method", ImmutableMap.of("v", "2")); +			 +			this.addXml(methodElement, "option", ImmutableMap.of("name", "Make", "enabled", "true")); +			for (String s : tasksBeforeRun) { +				String project = s.substring(0, s.lastIndexOf(':')); +				String task = s.substring(s.lastIndexOf(':') + 1); +				this.addXml(methodElement, "option", ImmutableMap.<String, String>builder() +						.put("name", "Gradle.BeforeRunTask") +						.put("enabled", "true") +						.put("tasks", task) +						.put("externalProjectPath", project) +						.put("vmOptions", "") +						.put("scriptParameters", "") +						.build()); +			} +		} +		  		return root;  	} @@ -186,6 +201,7 @@ public class RunConfig {  		populate(project, extension, ideaClient, "client");  		ideaClient.vmArgs += getOSClientJVMArgs();  		ideaClient.vmArgs += " -Dfabric.dli.main=" + getMainClass("client", extension); +		ideaClient.tasksBeforeRun = new ArrayList<>(extension.getTasksBeforeRun());  		return ideaClient;  	} @@ -197,6 +213,7 @@ public class RunConfig {  		ideaServer.configName = "Minecraft Server";  		populate(project, extension, ideaServer, "server");  		ideaServer.vmArgs += " -Dfabric.dli.main=" + getMainClass("server", extension); +		ideaServer.tasksBeforeRun = new ArrayList<>(extension.getTasksBeforeRun());  		return ideaServer;  	} @@ -239,6 +256,14 @@ public class RunConfig {  		}  		dummyConfig = dummyConfig.replace("%ENVS%", envs); +		 +		StringBuilder tasksToRun = new StringBuilder(); +		for (String s : tasksBeforeRun) { +			String project = s.substring(0, s.lastIndexOf(':')); +			String task = s.substring(s.lastIndexOf(':') + 1); +			tasksToRun.append(" <option name=\"Gradle.BeforeRunTask\" enabled=\"true\" tasks=\"").append(task).append("\" externalProjectPath=\"").append(project).append("\" vmOptions=\"\" scriptParameters=\"\" />"); +		} +		dummyConfig = dummyConfig.replace("%TASKS%", tasksToRun.toString());  		return dummyConfig;  	} diff --git a/src/main/java/net/fabricmc/loom/util/mappings/MojangMappingsDependency.java b/src/main/java/net/fabricmc/loom/util/mappings/MojangMappingsDependency.java index b84d8d2b..6fd15bc6 100644 --- a/src/main/java/net/fabricmc/loom/util/mappings/MojangMappingsDependency.java +++ b/src/main/java/net/fabricmc/loom/util/mappings/MojangMappingsDependency.java @@ -100,20 +100,22 @@ public class MojangMappingsDependency implements SelfResolvingDependency {  			}  		} -		try (BufferedReader clientBufferedReader = Files.newBufferedReader(clientMappings, StandardCharsets.UTF_8)) { -			project.getLogger().warn("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); -			project.getLogger().warn("Using of the official minecraft mappings is at your own risk!"); -			project.getLogger().warn("Please make sure to read and understand the following license:"); -			project.getLogger().warn("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); -			String line; - -			while ((line = clientBufferedReader.readLine()).startsWith("#")) { -				project.getLogger().warn(line); +		if (!extension.isSilentMojangMappingsLicenseEnabled()) { +			try (BufferedReader clientBufferedReader = Files.newBufferedReader(clientMappings, StandardCharsets.UTF_8)) { +				project.getLogger().warn("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); +				project.getLogger().warn("Using of the official minecraft mappings is at your own risk!"); +				project.getLogger().warn("Please make sure to read and understand the following license:"); +				project.getLogger().warn("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); +				String line; +				 +				while ((line = clientBufferedReader.readLine()).startsWith("#")) { +					project.getLogger().warn(line); +				} +				 +				project.getLogger().warn("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); +			} catch (IOException e) { +				throw new RuntimeException("Failed to read client mappings", e);  			} - -			project.getLogger().warn("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); -		} catch (IOException e) { -			throw new RuntimeException("Failed to read client mappings", e);  		}  		return Collections.singleton(mappingsFile.toFile()); | 
