Add runServer and runClient tasks
This commit is contained in:
		
							parent
							
								
									7b9ae34c1e
								
							
						
					
					
						commit
						a32b94a657
					
				
					 5 changed files with 216 additions and 32 deletions
				
			
		|  | @ -42,5 +42,8 @@ public class LoomGradlePlugin extends AbstractPlugin { | ||||||
| 		makeTask("genIdeaRuns", GenIdeaProjectTask.class).dependsOn("cleanIdea").dependsOn("idea").dependsOn("extractNatives"); | 		makeTask("genIdeaRuns", GenIdeaProjectTask.class).dependsOn("cleanIdea").dependsOn("idea").dependsOn("extractNatives"); | ||||||
| 
 | 
 | ||||||
| 		makeTask("vscode", GenVSCodeProjectTask.class).dependsOn("extractNatives"); | 		makeTask("vscode", GenVSCodeProjectTask.class).dependsOn("extractNatives"); | ||||||
|  | 
 | ||||||
|  | 		makeTask("runClient", RunClientTask.class).dependsOn("buildNeeded"); | ||||||
|  | 		makeTask("runServer", RunServerTask.class).dependsOn("buildNeeded"); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -44,40 +44,40 @@ import java.util.List; | ||||||
|  */ |  */ | ||||||
| public class GenVSCodeProjectTask extends DefaultTask { | public class GenVSCodeProjectTask extends DefaultTask { | ||||||
| 
 | 
 | ||||||
|     @TaskAction | 	@TaskAction | ||||||
|     public void genVsCodeProject() throws IOException { | 	public void genVsCodeProject() throws IOException { | ||||||
|         LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); | 		LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); | ||||||
|         File classPathFile = new File("vscodeClasspath.txt"); | 		File classPathFile = new File("vscodeClasspath.txt"); | ||||||
|         File configFile = new File("javaconfig.json"); | 		File configFile = new File("javaconfig.json"); | ||||||
| 
 | 
 | ||||||
|         Gson gson = new Gson(); | 		Gson gson = new Gson(); | ||||||
|         Version version = gson.fromJson(new FileReader(Constants.MINECRAFT_JSON.get(extension)), Version.class); | 		Version version = gson.fromJson(new FileReader(Constants.MINECRAFT_JSON.get(extension)), Version.class); | ||||||
| 
 | 
 | ||||||
|         List<String> libs = new ArrayList<>(); | 		List<String> libs = new ArrayList<>(); | ||||||
|         for (Version.Library library : version.libraries) { | 		for (Version.Library library : version.libraries) { | ||||||
|             if (library.allowed() && library.getFile(extension) != null && library.getFile(extension).exists()) { | 			if (library.allowed() && library.getFile(extension) != null && library.getFile(extension).exists()) { | ||||||
|                 libs.add(library.getFile(extension).getAbsolutePath()); | 				libs.add(library.getFile(extension).getAbsolutePath()); | ||||||
|             } | 			} | ||||||
|         } | 		} | ||||||
|         libs.add(Constants.MINECRAFT_MAPPED_JAR.get(extension).getAbsolutePath()); | 		libs.add(Constants.MINECRAFT_MAPPED_JAR.get(extension).getAbsolutePath()); | ||||||
|         for (File file : getProject().getConfigurations().getByName("compile").getFiles()) { | 		for (File file : getProject().getConfigurations().getByName("compile").getFiles()) { | ||||||
|             libs.add(file.getAbsolutePath()); | 			libs.add(file.getAbsolutePath()); | ||||||
|         } | 		} | ||||||
|         FileUtils.writeLines(classPathFile, libs); | 		FileUtils.writeLines(classPathFile, libs); | ||||||
| 
 | 
 | ||||||
|         JsonObject jsonObject = new JsonObject(); | 		JsonObject jsonObject = new JsonObject(); | ||||||
|         JsonArray jsonArray = new JsonArray(); | 		JsonArray jsonArray = new JsonArray(); | ||||||
|         jsonArray.add("src/main/java"); | 		jsonArray.add("src/main/java"); | ||||||
|         jsonArray.add("src/main/resorces"); | 		jsonArray.add("src/main/resorces"); | ||||||
|         jsonArray.add("src/test/java"); | 		jsonArray.add("src/test/java"); | ||||||
|         jsonArray.add("src/test/resorces"); | 		jsonArray.add("src/test/resorces"); | ||||||
|         jsonObject.add("sourcePath", jsonArray); | 		jsonObject.add("sourcePath", jsonArray); | ||||||
|         JsonElement element = new JsonPrimitive(classPathFile.getName()); | 		JsonElement element = new JsonPrimitive(classPathFile.getName()); | ||||||
|         jsonObject.add("classPathFile", element); | 		jsonObject.add("classPathFile", element); | ||||||
|         element = new JsonPrimitive("vscode"); | 		element = new JsonPrimitive("vscode"); | ||||||
|         jsonObject.add("outputDirectory", element); | 		jsonObject.add("outputDirectory", element); | ||||||
| 
 | 
 | ||||||
|         FileUtils.write(configFile, gson.toJson(jsonObject), Charset.defaultCharset()); | 		FileUtils.write(configFile, gson.toJson(jsonObject), Charset.defaultCharset()); | ||||||
|     } | 	} | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -40,7 +40,7 @@ public class MergeJarsTask extends DefaultTask { | ||||||
| 	public void mergeJars() throws IOException { | 	public void mergeJars() throws IOException { | ||||||
| 		LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); | 		LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); | ||||||
| 
 | 
 | ||||||
| 		if(!Constants.MINECRAFT_MERGED_JAR.get(extension).exists()){ | 		if (!Constants.MINECRAFT_MERGED_JAR.get(extension).exists()) { | ||||||
| 			this.getLogger().lifecycle(":merging jars"); | 			this.getLogger().lifecycle(":merging jars"); | ||||||
| 			FileInputStream client = new FileInputStream(Constants.MINECRAFT_CLIENT_JAR.get(extension)); | 			FileInputStream client = new FileInputStream(Constants.MINECRAFT_CLIENT_JAR.get(extension)); | ||||||
| 			FileInputStream server = new FileInputStream(Constants.MINECRAFT_SERVER_JAR.get(extension)); | 			FileInputStream server = new FileInputStream(Constants.MINECRAFT_SERVER_JAR.get(extension)); | ||||||
|  |  | ||||||
							
								
								
									
										92
									
								
								src/main/java/net/fabricmc/loom/task/RunClientTask.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								src/main/java/net/fabricmc/loom/task/RunClientTask.java
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,92 @@ | ||||||
|  | /* | ||||||
|  |  * This file is part of fabric-loom, licensed under the MIT License (MIT). | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2016 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 | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in all | ||||||
|  |  * copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  |  * SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package net.fabricmc.loom.task; | ||||||
|  | 
 | ||||||
|  | import com.google.gson.Gson; | ||||||
|  | import net.fabricmc.loom.LoomGradleExtension; | ||||||
|  | import net.fabricmc.loom.util.Constants; | ||||||
|  | import net.fabricmc.loom.util.Version; | ||||||
|  | import org.gradle.api.tasks.JavaExec; | ||||||
|  | 
 | ||||||
|  | import java.io.File; | ||||||
|  | import java.io.FileNotFoundException; | ||||||
|  | import java.io.FileReader; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | public class RunClientTask extends JavaExec { | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public void exec() { | ||||||
|  | 		LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); | ||||||
|  | 		Gson gson = new Gson(); | ||||||
|  | 		Version version = null; | ||||||
|  | 		try { | ||||||
|  | 			version = gson.fromJson(new FileReader(Constants.MINECRAFT_JSON.get(extension)), Version.class); | ||||||
|  | 		} catch (FileNotFoundException e) { | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		List<String> libs = new ArrayList<>(); | ||||||
|  | 		for (File file : getProject().getConfigurations().getByName("compile").getFiles()) { | ||||||
|  | 			libs.add(file.getAbsolutePath()); | ||||||
|  | 		} | ||||||
|  | 		for (File file : getProject().getConfigurations().getByName(Constants.CONFIG_MC_DEPENDENCIES_CLIENT).getFiles()) { | ||||||
|  | 			libs.add(file.getAbsolutePath()); | ||||||
|  | 		} | ||||||
|  | 		for (File file : getProject().getConfigurations().getByName(Constants.CONFIG_MC_DEPENDENCIES).getFiles()) { | ||||||
|  | 			libs.add(file.getAbsolutePath()); | ||||||
|  | 		} | ||||||
|  | 		//Used to add the fabric jar that has been built | ||||||
|  | 		for (File file : new File(getProject().getBuildDir(), "libs").listFiles()) { | ||||||
|  | 			if (file.isFile()) { | ||||||
|  | 				libs.add(file.getAbsolutePath()); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		libs.add(Constants.MINECRAFT_MAPPED_JAR.get(extension).getAbsolutePath()); | ||||||
|  | 		classpath(libs); | ||||||
|  | 
 | ||||||
|  | 		args("--tweakClass", "net.fabricmc.base.launch.FabricClientTweaker", "--assetIndex", version.assetIndex.id, "--assetsDir", new File(extension.getFabricUserCache(), "assets-" + extension.version).getAbsolutePath()); | ||||||
|  | 
 | ||||||
|  | 		setWorkingDir(new File(getProject().getRootDir(), "run")); | ||||||
|  | 
 | ||||||
|  | 		super.exec(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public String getMain() { | ||||||
|  | 		return "net.minecraft.launchwrapper.Launch"; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public List<String> getJvmArgs() { | ||||||
|  | 		LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); | ||||||
|  | 		List<String> args = new ArrayList<>(); | ||||||
|  | 		args.add("-Djava.library.path=" + Constants.MINECRAFT_NATIVES.get(extension).getAbsolutePath()); | ||||||
|  | 		args.add("-Dfabric.development=true"); | ||||||
|  | 		return args; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										89
									
								
								src/main/java/net/fabricmc/loom/task/RunServerTask.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								src/main/java/net/fabricmc/loom/task/RunServerTask.java
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,89 @@ | ||||||
|  | /* | ||||||
|  |  * This file is part of fabric-loom, licensed under the MIT License (MIT). | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2016 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 | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in all | ||||||
|  |  * copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  |  * SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package net.fabricmc.loom.task; | ||||||
|  | 
 | ||||||
|  | import com.google.gson.Gson; | ||||||
|  | import net.fabricmc.loom.LoomGradleExtension; | ||||||
|  | import net.fabricmc.loom.util.Constants; | ||||||
|  | import net.fabricmc.loom.util.Version; | ||||||
|  | import org.gradle.api.tasks.JavaExec; | ||||||
|  | 
 | ||||||
|  | import java.io.File; | ||||||
|  | import java.io.FileNotFoundException; | ||||||
|  | import java.io.FileReader; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | public class RunServerTask extends JavaExec { | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public void exec() { | ||||||
|  | 		LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); | ||||||
|  | 		Gson gson = new Gson(); | ||||||
|  | 		Version version = null; | ||||||
|  | 		try { | ||||||
|  | 			version = gson.fromJson(new FileReader(Constants.MINECRAFT_JSON.get(extension)), Version.class); | ||||||
|  | 		} catch (FileNotFoundException e) { | ||||||
|  | 			e.printStackTrace(); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		List<String> libs = new ArrayList<>(); | ||||||
|  | 		for (File file : getProject().getConfigurations().getByName("compile").getFiles()) { | ||||||
|  | 			libs.add(file.getAbsolutePath()); | ||||||
|  | 		} | ||||||
|  | 		for (File file : getProject().getConfigurations().getByName(Constants.CONFIG_MC_DEPENDENCIES).getFiles()) { | ||||||
|  | 			libs.add(file.getAbsolutePath()); | ||||||
|  | 		} | ||||||
|  | 		//Used to add the fabric jar that has been built | ||||||
|  | 		for (File file : new File(getProject().getBuildDir(), "libs").listFiles()) { | ||||||
|  | 			if (file.isFile()) { | ||||||
|  | 				libs.add(file.getAbsolutePath()); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		libs.add(Constants.MINECRAFT_MAPPED_JAR.get(extension).getAbsolutePath()); | ||||||
|  | 		classpath(libs); | ||||||
|  | 
 | ||||||
|  | 		args("--tweakClass", "net.fabricmc.base.launch.FabricServerTweaker"); | ||||||
|  | 
 | ||||||
|  | 		setWorkingDir(new File(getProject().getRootDir(), "run")); | ||||||
|  | 
 | ||||||
|  | 		super.exec(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public String getMain() { | ||||||
|  | 		return "net.minecraft.launchwrapper.Launch"; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public List<String> getJvmArgs() { | ||||||
|  | 		LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class); | ||||||
|  | 		List<String> args = new ArrayList<>(); | ||||||
|  | 		args.add("-Djava.library.path=" + Constants.MINECRAFT_NATIVES.get(extension).getAbsolutePath()); | ||||||
|  | 		args.add("-Dfabric.development=true"); | ||||||
|  | 		return args; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Loading…
	
		Reference in a new issue