From f7acc732823caa7ab9de517de577a0d243ba4541 Mon Sep 17 00:00:00 2001 From: LexManos Date: Tue, 8 Jan 2019 00:29:36 -0800 Subject: [PATCH] Update userdev and runconfigs for ForgeGradle changes. --- build.gradle | 101 +++++++++++------- mdk/build.gradle | 45 +++----- .../fml/loading/FMLServiceProvider.java | 5 + .../minecraftforge/registries/GameData.java | 2 +- .../userdev/ClasspathLocator.java | 12 ++- .../userdev/FMLUserdevLaunchProvider.java | 7 +- .../userdev/UserdevLauncher.java | 8 +- 7 files changed, 99 insertions(+), 81 deletions(-) diff --git a/build.gradle b/build.gradle index 8dfa80e1f..1f725cda0 100644 --- a/build.gradle +++ b/build.gradle @@ -160,37 +160,39 @@ project(':forge') { accessTransformer = file("$rootDir/src/main/resources/META-INF/accesstransformer.cfg") exc = file("$rootDir/src/main/resources/forge.exc") srgPatches = true - clientRun { - main = 'net.minecraftforge.fml.LaunchTesting' - environment = [ - target: 'fmldevclient', - assetDirectory: downloadAssets.output, - nativesDirectory: extractNatives.output - ] - properties = [ - 'org.lwjgl.util.Debug': 'true', - 'org.lwjgl.util.DebugLoader': 'true', - 'org.lwjgl.system.SharedLibraryExtractDirectory': 'lwjgl_dll', - 'mc.version': MC_VERSION, - 'mcp.version': MCP_VERSION, - 'forge.version': project.version.substring(MC_VERSION.length() + 1), - 'forge.spec': SPEC_VERSION, - 'forge.group': project.group, - 'fmllauncher.version': SPEC_VERSION - ] - } - serverRun { - main = 'net.minecraftforge.fml.LaunchTesting' - environment = [ - target: 'fmldevserver' - ] - properties = [ - 'mc.version': MC_VERSION, - 'mcp.version': MCP_VERSION, - 'forge.version': "${project.version.substring(MC_VERSION.length() + 1)}".toString(), - 'forge.spec': SPEC_VERSION, - 'forge.group': project.group - ] + runs { + client = { + main 'net.minecraftforge.fml.LaunchTesting' + environment = [ + target: 'fmldevclient', + assetDirectory: downloadAssets.output, + nativesDirectory: extractNatives.output + ] + properties = [ + 'org.lwjgl.util.Debug': 'true', + 'org.lwjgl.util.DebugLoader': 'true', + 'org.lwjgl.system.SharedLibraryExtractDirectory': 'lwjgl_dll', + 'mc.version': MC_VERSION, + 'mcp.version': MCP_VERSION, + 'forge.version': project.version.substring(MC_VERSION.length() + 1), + 'forge.spec': SPEC_VERSION, + 'forge.group': project.group, + 'fmllauncher.version': SPEC_VERSION + ] + } + server = { + main 'net.minecraftforge.fml.LaunchTesting' + environment = [ + target: 'fmldevserver' + ] + properties = [ + 'mc.version': MC_VERSION, + 'mcp.version': MCP_VERSION, + 'forge.version': "${project.version.substring(MC_VERSION.length() + 1)}".toString(), + 'forge.spec': SPEC_VERSION, + 'forge.group': project.group + ] + } } } @@ -283,9 +285,9 @@ project(':forge') { } //jvmArgs = ['-verbose:class'] classpath sourceSets.main.runtimeClasspath - main patcher.clientRun.main - systemProperties = patcher.clientRun.properties - environment += patcher.clientRun.environment + main patcher.runs.client.main + systemProperties = patcher.runs.client.properties + environment += patcher.runs.client.environment workingDir 'runclient' } @@ -300,10 +302,10 @@ project(':forge') { } } classpath sourceSets.main.runtimeClasspath - main patcher.serverRun.main + main patcher.runs.server.main args 'nogui' - systemProperties = patcher.serverRun.properties - environment += patcher.serverRun.environment + systemProperties = patcher.runs.server.properties + environment += patcher.runs.server.environment workingDir 'runserver' standardInput = System.in } @@ -790,6 +792,31 @@ project(':forge') { artifacts.each { key, lib -> addLibrary(lib.name) } + addLibrary("${project.group}:${project.name}:${project.version}:launcher") + runs { + client = { + main 'net.minecraftforge.userdev.UserdevLauncher' + environment 'target', 'fmluserdevclient' + environment 'assetDirectory', '{assets_root}' + environment 'nativesDirectory', '{natives}' + environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1) + environment 'FORGE_GROUP', project.group + environment 'MCP_VERSION', MCP_VERSION + environment 'MC_VERSION', MC_VERSION + environment 'MOD_CLASSES', '{source_roots}' + environment 'MCP_MAPPINGS', '{mcp_mappings}' + } + server = { + main 'net.minecraftforge.userdev.UserdevLauncher' + environment 'target', 'fmldevserver' + environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1) + environment 'FORGE_GROUP', project.group + environment 'MCP_VERSION', MCP_VERSION + environment 'MC_VERSION', MC_VERSION + environment 'MOD_CLASSES', '{source_roots}' + environment 'MCP_MAPPINGS', '{mcp_mappings}' + } + } } license { diff --git a/mdk/build.gradle b/mdk/build.gradle index a6e9b952e..ee4428ebf 100644 --- a/mdk/build.gradle +++ b/mdk/build.gradle @@ -1,17 +1,9 @@ buildscript { repositories { - mavenLocal() maven { url = 'https://files.minecraftforge.net/maven' } jcenter() mavenCentral() } - // This is only here while i'm activly developing FG, Remind me to remove when we publically release - configurations { - classpath.resolutionStrategy { - cacheDynamicVersionsFor 10, 'seconds' - cacheChangingModulesFor 0, 'seconds' - } - } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true } @@ -24,10 +16,7 @@ version = '1.0' group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'modid' -sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. -compileJava { - sourceCompatibility = targetCompatibility = '1.8' -} +sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. minecraft { // the mappings can be changed at any time, and must be in the following format. @@ -42,22 +31,14 @@ minecraft { // default run configurations. // these can be tweaked, removed, or duplicated as needed. - runConfig { - name= "Minecraft Client" - main= "net.minecraftforge.userdev.UserdevLauncher" - ideaModuleName = "${project.name}_main" - workingDirectory = project.file("run").canonicalPath - environment "target", "fmldevclient" - environment "assetDirectory", downloadAssets.output.absolutePath - } - - runConfig { - name= "Minecraft Server" - main= "net.minecraftforge.userdev.UserdevLauncher" - ideaModuleName = "${project.name}_main" - workingDirectory = project.file("run").canonicalPath - environment "target", "fmldevserver" - environment "assetDirectory", downloadAssets.output.absolutePath + runs { + client = { + workingDirectory project.file('run').canonicalPath + source sourceSets.main + } + server = { + workingDirectory project.file('run').canonicalPath + } } } @@ -65,7 +46,7 @@ dependencies { // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. // The userdev artifact is a special name and will get all sorts of transformations applied to it. - minecraft '@FORGE_GROUP@:userdev:@FORGE_VERSION@' + minecraft '@FORGE_GROUP@:@FORGE_NAME@:@FORGE_VERSION@' // you may put jars on which you depend on in ./libs // or you may define them like so.. @@ -79,10 +60,8 @@ dependencies { // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' - // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, - // except that these dependencies get remapped to your current MCP mappings - //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' - //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + // These dependencies get remapped to your current MCP mappings + //deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev' // for more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServiceProvider.java b/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServiceProvider.java index 32bef29ba..7ffe7ebbb 100644 --- a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServiceProvider.java +++ b/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServiceProvider.java @@ -45,12 +45,14 @@ public class FMLServiceProvider implements ITransformationService private ArgumentAcceptingOptionSpec mcOption; private ArgumentAcceptingOptionSpec forgeGroupOption; private ArgumentAcceptingOptionSpec mcpOption; + private ArgumentAcceptingOptionSpec mappingsOption; private List modsArgumentList; private List modListsArgumentList; private List mavenRootsArgumentList; private String targetForgeVersion; private String targetMcVersion; private String targetMcpVersion; + private String targetMcpMappings; private String targetForgeGroup; @Override @@ -74,6 +76,7 @@ public class FMLServiceProvider implements ITransformationService arguments.put("forgeGroup", targetForgeGroup); arguments.put("mcVersion", targetMcVersion); arguments.put("mcpVersion", targetMcpVersion); + arguments.put("mcpMappings", targetMcpMappings); LOGGER.debug(CORE, "Preparing launch handler"); FMLLoader.setupLaunchHandler(environment, arguments); LOGGER.debug(CORE,"Initiating mod scan"); @@ -95,6 +98,7 @@ public class FMLServiceProvider implements ITransformationService forgeGroupOption = argumentBuilder.apply("forgeGroup", "Forge Group (for testing)").withRequiredArg().ofType(String.class).defaultsTo("net.minecraftforge"); mcOption = argumentBuilder.apply("mcVersion", "Minecraft Version number").withRequiredArg().ofType(String.class).required(); mcpOption = argumentBuilder.apply("mcpVersion", "MCP Version number").withRequiredArg().ofType(String.class).required(); + mappingsOption = argumentBuilder.apply("mcpMappings", "MCP Mappings Channel and Version").withRequiredArg().ofType(String.class); modsOption = argumentBuilder.apply("mods", "List of mods to add").withRequiredArg().ofType(String.class).withValuesSeparatedBy(","); modListsOption = argumentBuilder.apply("modLists", "JSON modlists").withRequiredArg().ofType(String.class).withValuesSeparatedBy(","); mavenRootsOption = argumentBuilder.apply("mavenRoots", "Maven root directories").withRequiredArg().ofType(String.class).withValuesSeparatedBy(","); @@ -110,6 +114,7 @@ public class FMLServiceProvider implements ITransformationService targetForgeGroup = option.value(forgeGroupOption); targetMcVersion = option.value(mcOption); targetMcpVersion = option.value(mcpOption); + targetMcpMappings = option.value(mappingsOption); } @Nonnull diff --git a/src/main/java/net/minecraftforge/registries/GameData.java b/src/main/java/net/minecraftforge/registries/GameData.java index 20074039b..6864f8806 100644 --- a/src/main/java/net/minecraftforge/registries/GameData.java +++ b/src/main/java/net/minecraftforge/registries/GameData.java @@ -695,7 +695,7 @@ public class GameData //Loader.instance().fireRemapEvent(remaps, false); // The id map changed, ensure we apply object holders - //ObjectHolderRegistry.INSTANCE.applyObjectHolders(); + ObjectHolderRegistry.INSTANCE.applyObjectHolders(); // Return an empty list, because we're good return ArrayListMultimap.create(); diff --git a/src/userdev/java/net/minecraftforge/userdev/ClasspathLocator.java b/src/userdev/java/net/minecraftforge/userdev/ClasspathLocator.java index 7a8412eee..011ac0a20 100644 --- a/src/userdev/java/net/minecraftforge/userdev/ClasspathLocator.java +++ b/src/userdev/java/net/minecraftforge/userdev/ClasspathLocator.java @@ -44,7 +44,6 @@ public class ClasspathLocator implements IModLocator private static final Logger LOGGER = LogManager.getLogger(); private static final String COREMODS = "META-INF/coremods.json"; private static final String MODS = "META-INF/mods.toml"; - private Map> paths = Maps.newHashMap(); public ClasspathLocator() {} @@ -75,9 +74,12 @@ public class ClasspathLocator implements IModLocator e.printStackTrace(); } return null; - }).filter(Objects::nonNull).distinct() - .map(path -> new ModFile(path, this)) - .collect(Collectors.toList()); + }) + .filter(Objects::nonNull) + .distinct() + .filter(Files::isRegularFile) //We're only looking for remapped jars, exploded directories are handled by FMLUserdevLaunchProvider + .map(path -> new ModFile(path, this)) + .collect(Collectors.toList()); } @Override @@ -121,6 +123,7 @@ public class ClasspathLocator implements IModLocator { Path classesPath = filePath; + /* // Hack 1: When running from within intellij, we get // "out/production/resources" + "out/production/classes" if(filePath.getNameCount() >= 1 && filePath.getName(filePath.getNameCount()-1).toString().equals("resources")) @@ -134,6 +137,7 @@ public class ClasspathLocator implements IModLocator // We'll scan all the subdirectories for languages and sourcesets, hopefully that works... classesPath = filePath.getParent().getParent().resolve("classes"); } + */ return classesPath; } diff --git a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java index 7c2dfa3d0..dd594e06e 100644 --- a/src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java +++ b/src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java @@ -29,7 +29,7 @@ public abstract class FMLUserdevLaunchProvider extends FMLCommonLaunchHandler { LOGGER.fatal(CORE, "Unable to locate forge on the classpath"); throw new RuntimeException("Unable to locate forge on the classpath"); } - forgeJar = LibraryFinder.findJarPathFor("ForgeVersion.class","forge", forgePath); + forgeJar = LibraryFinder.findJarPathFor("ForgeVersion.class", "forge", forgePath); return forgeJar; } @@ -41,8 +41,9 @@ public abstract class FMLUserdevLaunchProvider extends FMLCommonLaunchHandler { final String forgeVersion = (String) arguments.get("forgeVersion"); final String mcVersion = (String) arguments.get("mcVersion"); final String mcpVersion = (String) arguments.get("mcpVersion"); + final String mcpMappings = (String) arguments.get("mcpMappings"); final String forgeGroup = (String) arguments.get("forgeGroup"); - final String userdevVersion = mcVersion+"-"+forgeVersion+"_mapped_snapshot_"+mcpVersion; + final String userdevVersion = mcVersion + "-" + forgeVersion + "_mapped_" + mcpMappings; int dirs = forgeGroup.split("\\.").length + 2; Path fjroot = forgeJar; do { @@ -51,7 +52,7 @@ public abstract class FMLUserdevLaunchProvider extends FMLCommonLaunchHandler { final String fjpath = fjroot.toString(); LOGGER.debug(CORE, "Injecting forge as mod {} from maven path {}", userdevVersion, fjpath); mavenRoots.add(fjpath); - mods.add(forgeGroup+":userdev:"+userdevVersion); + mods.add(forgeGroup+":forge:"+userdevVersion); try { final Enumeration resources = ClassLoader.getSystemClassLoader().getResources("META-INF/mods.toml"); diff --git a/src/userdev/java/net/minecraftforge/userdev/UserdevLauncher.java b/src/userdev/java/net/minecraftforge/userdev/UserdevLauncher.java index fe4b3578b..6868de3b8 100644 --- a/src/userdev/java/net/minecraftforge/userdev/UserdevLauncher.java +++ b/src/userdev/java/net/minecraftforge/userdev/UserdevLauncher.java @@ -53,9 +53,6 @@ public class UserdevLauncher String assets = System.getenv().getOrDefault("assetDirectory", "assets"); String target = System.getenv().get("target"); - if (assets == null ||!new File(assets).exists()) { - throw new IllegalArgumentException("Environment variable 'assets' must be set to a valid path."); - } if (target == null) { throw new IllegalArgumentException("Environment variable 'target' must be set to 'fmluserdevclient' or 'fmluserdevserver'."); } @@ -65,11 +62,16 @@ public class UserdevLauncher "--launchTarget", target, "--fml.forgeVersion", System.getenv("FORGE_VERSION"), "--fml.mcpVersion", System.getenv("MCP_VERSION"), + "--fml.mcpMappings", System.getenv("MCP_MAPPINGS"), "--fml.mcVersion", System.getenv("MC_VERSION"), "--fml.forgeGroup", System.getenv("FORGE_GROUP") }; if (Objects.equals(target,"fmluserdevclient")) { + if (assets == null || !new File(assets).exists()) { + throw new IllegalArgumentException("Environment variable 'assetDirectory' must be set to a valid path."); + } + hackNatives(); launchArgs = ObjectArrays.concat(launchArgs, new String[] { "--accessToken", "blah",