From e51ea1fc16fdbfead8ba946e74f875aee39c71a7 Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Mon, 27 Sep 2021 22:49:38 -0600 Subject: [PATCH 01/11] Add Sponge's snapshot repo to the project. --- settings.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 7a53df1..174e944 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1,14 @@ pluginManagement { repositories { + gradlePluginPortal() maven { name = 'Fabric' url = 'https://maven.fabricmc.net/' } - gradlePluginPortal() + maven { + name = 'Sponge Snapshots' + url = 'https://repo.spongepowered.org/repository/maven-public/' + } } } From fe1bccafbf577c9fe5ce3cc4c3144374b5ec868f Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Mon, 27 Sep 2021 22:51:00 -0600 Subject: [PATCH 02/11] Move to VanillaGradle 2.1 snapshot version. Fixes missing working directories for VanillaGradle runs. --- Common/build.gradle | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Common/build.gradle b/Common/build.gradle index b41a286..cadefe5 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -1,6 +1,6 @@ plugins { - id("java") - id("org.spongepowered.gradle.vanilla") version "0.2" + id('java') + id('org.spongepowered.gradle.vanilla') version '0.2.1-SNAPSHOT' } archivesBaseName = mod_name @@ -12,11 +12,9 @@ repositories { } minecraft { - version(minecraft_version) // or: latestRelease() or latestSnapshot() + version(minecraft_version) runs { server() client() } -} -dependencies { -} +} \ No newline at end of file From 4b0dae67f9802d346ed9ee08b7dd1448d3fa66de Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Mon, 27 Sep 2021 23:31:03 -0600 Subject: [PATCH 03/11] Rename the VanillaGradle runs to vanilla_client and vanilla_server. These can be renamed or disabled via properties. --- Common/build.gradle | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Common/build.gradle b/Common/build.gradle index cadefe5..e2734ba 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -13,8 +13,11 @@ repositories { minecraft { version(minecraft_version) - runs { - server() - client() + runs { + if (project.hasProperty('common_runs_enabled') ? project.findProperty('common_runs_enabled').toBoolean() : true) { + + server(project.hasProperty('common_server_run_name') ? project.findProperty('common_server_run_name') : 'vanilla_server') {} + client(project.hasProperty('common_client_run_name') ? project.findProperty('common_client_run_name') : 'vanilla_client') {} + } } } \ No newline at end of file From 429fa816128a108a2d75e38c95e67791d191d229 Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Mon, 27 Sep 2021 23:49:45 -0600 Subject: [PATCH 04/11] Move pack.mcmeta to the common sources. --- Common/src/main/resources/pack.mcmeta | 6 ++++++ Forge/src/main/resources/pack.mcmeta | 7 ------- 2 files changed, 6 insertions(+), 7 deletions(-) create mode 100644 Common/src/main/resources/pack.mcmeta delete mode 100644 Forge/src/main/resources/pack.mcmeta diff --git a/Common/src/main/resources/pack.mcmeta b/Common/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..f6c7916 --- /dev/null +++ b/Common/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "${mod_name}", + "pack_format": 6, + } +} \ No newline at end of file diff --git a/Forge/src/main/resources/pack.mcmeta b/Forge/src/main/resources/pack.mcmeta deleted file mode 100644 index c79a362..0000000 --- a/Forge/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,7 +0,0 @@ -{ - "pack": { - "description": "examplemod resources", - "pack_format": 6, - "_comment": "A pack_format of 6 requires json lang files and some texture changes from 1.16.2. Note: we require v6 pack meta for all mods." - } -} From 606c8e5c675826ece4e3fe1e2c86b38b08ad58a4 Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Mon, 27 Sep 2021 23:50:44 -0600 Subject: [PATCH 05/11] Moved some properties to a shared constants class to help demonstrate how the classpaths connect. --- .../java/com/blamejared/stuff/Constants.java | 11 +++++++ .../com/example/examplemod/ExampleMod.java | 30 ++++++++++--------- Forge/src/main/resources/META-INF/mods.toml | 8 ++--- 3 files changed, 31 insertions(+), 18 deletions(-) create mode 100644 Common/src/main/java/com/blamejared/stuff/Constants.java diff --git a/Common/src/main/java/com/blamejared/stuff/Constants.java b/Common/src/main/java/com/blamejared/stuff/Constants.java new file mode 100644 index 0000000..4090578 --- /dev/null +++ b/Common/src/main/java/com/blamejared/stuff/Constants.java @@ -0,0 +1,11 @@ +package com.blamejared.stuff; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class Constants { + + public static final String MOD_ID = "multiloader"; + public static final String MOD_NAME = "MultiLoader"; + public static final Logger LOG = LogManager.getLogger(MOD_NAME); +} diff --git a/Forge/src/main/java/com/example/examplemod/ExampleMod.java b/Forge/src/main/java/com/example/examplemod/ExampleMod.java index 462d5b2..a31e330 100644 --- a/Forge/src/main/java/com/example/examplemod/ExampleMod.java +++ b/Forge/src/main/java/com/example/examplemod/ExampleMod.java @@ -1,23 +1,25 @@ package com.example.examplemod; -import net.minecraft.world.level.block.*; +import java.util.stream.Collectors; + +import com.blamejared.stuff.Constants; + +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.*; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; +import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fmlserverevents.FMLServerStartingEvent; -import org.apache.logging.log4j.*; -import java.util.stream.Collectors; - -@Mod("examplemod") +@Mod(Constants.MOD_ID) public class ExampleMod { - private static final Logger LOGGER = LogManager.getLogger(); - public ExampleMod() { FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); @@ -29,21 +31,21 @@ public class ExampleMod { private void setup(final FMLCommonSetupEvent event) { - LOGGER.info("HELLO FROM PREINIT"); - LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName()); + Constants.LOG.info("HELLO FROM PREINIT"); + Constants.LOG.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName()); } private void enqueueIMC(final InterModEnqueueEvent event) { InterModComms.sendTo("examplemod", "helloworld", () -> { - LOGGER.info("Hello world from the MDK"); + Constants.LOG.info("Hello world from the MDK"); return "Hello world"; }); } private void processIMC(final InterModProcessEvent event) { - LOGGER.info("Got IMC {}", event.getIMCStream() + Constants.LOG.info("Got IMC {}", event.getIMCStream() .map(m -> m.messageSupplier().get()) .collect(Collectors.toList())); } @@ -51,7 +53,7 @@ public class ExampleMod { @SubscribeEvent public void onServerStarting(FMLServerStartingEvent event) { - LOGGER.info("HELLO from server starting"); + Constants.LOG.info("HELLO from server starting"); } @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) @@ -60,7 +62,7 @@ public class ExampleMod { @SubscribeEvent public static void onBlocksRegistry(final RegistryEvent.Register blockRegistryEvent) { // register a new block here - LOGGER.info("HELLO from Register Block"); + Constants.LOG.info("HELLO from Register Block"); } } diff --git a/Forge/src/main/resources/META-INF/mods.toml b/Forge/src/main/resources/META-INF/mods.toml index 1b3f5eb..0c620ed 100644 --- a/Forge/src/main/resources/META-INF/mods.toml +++ b/Forge/src/main/resources/META-INF/mods.toml @@ -15,7 +15,7 @@ license="All rights reserved" # A list of mods - how many allowed here is determined by the individual mod loader [[mods]] #mandatory # The modid of the mod -modId="examplemod" #mandatory +modId="multiloader" #mandatory # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it # ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata # see the associated build.gradle script for how to populate this completely automatically during a build @@ -27,7 +27,7 @@ displayName="Example Mod" #mandatory # A URL for the "homepage" for this mod, displayed in the mod UI #displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional # A file name (in the root of the mod JAR) containing a logo for display -logoFile="examplemod.png" #optional +logoFile="multiloader.png" #optional # A text field displayed in the mod UI credits="Thanks for this example mod goes to Java" #optional # A text field displayed in the mod UI @@ -41,7 +41,7 @@ Have some lorem ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magna. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed sagittis luctus odio eu tempus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque volutpat ligula eget lacus auctor sagittis. In hac habitasse platea dictumst. Nunc gravida elit vitae sem vehicula efficitur. Donec mattis ipsum et arcu lobortis, eleifend sagittis sem rutrum. Cras pharetra quam eget posuere fermentum. Sed id tincidunt justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. ''' # A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. -[[dependencies.examplemod]] #optional +[[dependencies.multiloader]] #optional # the modid of the dependency modId="forge" #mandatory # Does this dependency have to exist - if not, ordering below must be specified @@ -53,7 +53,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magn # Side this dependency is applied on - BOTH, CLIENT or SERVER side="BOTH" # Here's another dependency -[[dependencies.examplemod]] +[[dependencies.multiloader]] modId="minecraft" mandatory=true # This version range declares a minimum of the current minecraft version up to but not including the next major version From 207bfc7d79cefb0a1f81abe6be89ec8afc4eb07f Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Tue, 28 Sep 2021 01:23:22 -0600 Subject: [PATCH 06/11] Remove redundant mod_group property. --- Common/build.gradle | 1 - Fabric/build.gradle | 1 - Forge/build.gradle | 1 - gradle.properties | 4 ++-- 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Common/build.gradle b/Common/build.gradle index e2734ba..87f394d 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -5,7 +5,6 @@ plugins { archivesBaseName = mod_name version = "common-${minecraft_version}-${mod_version}" -group = mod_group repositories { mavenCentral() diff --git a/Fabric/build.gradle b/Fabric/build.gradle index ed54a18..8d2e0c4 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -9,7 +9,6 @@ targetCompatibility = JavaVersion.VERSION_16 archivesBaseName = mod_name version = "fabric-${minecraft_version}-${mod_version}" -group = mod_group repositories { } diff --git a/Forge/build.gradle b/Forge/build.gradle index b54c537..8c88f8b 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -14,7 +14,6 @@ apply plugin: 'maven-publish' archivesBaseName = mod_name version = "forge-${minecraft_version}-${mod_version}" -group = mod_group java.toolchain.languageVersion = JavaLanguageVersion.of(16) diff --git a/gradle.properties b/gradle.properties index 709b189..0472fc9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,6 @@ fabric_version=0.40.1+1.17 fabric_loader_version=0.11.7 # Mod options -mod_group=com.blamejared.multiloader mod_version=1.0.0 mod_name=MultiLoader mod_author=Jared @@ -18,4 +17,5 @@ mod_id=multiloader # Gradle org.gradle.jvmargs=-Xmx3G -org.gradle.daemon=false \ No newline at end of file +org.gradle.daemon=false +group=com.blamejared.multiloader \ No newline at end of file From f72cac02ad990808744aa889b2c83671a074eb4c Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Tue, 28 Sep 2021 01:33:29 -0600 Subject: [PATCH 07/11] Removed non-semver data from version. Version is now assigned through the intended version property. --- Common/build.gradle | 1 - Fabric/build.gradle | 1 - Forge/build.gradle | 1 - gradle.properties | 8 +++++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Common/build.gradle b/Common/build.gradle index 87f394d..40197e2 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -4,7 +4,6 @@ plugins { } archivesBaseName = mod_name -version = "common-${minecraft_version}-${mod_version}" repositories { mavenCentral() diff --git a/Fabric/build.gradle b/Fabric/build.gradle index 8d2e0c4..9b56798 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -8,7 +8,6 @@ sourceCompatibility = JavaVersion.VERSION_16 targetCompatibility = JavaVersion.VERSION_16 archivesBaseName = mod_name -version = "fabric-${minecraft_version}-${mod_version}" repositories { } diff --git a/Forge/build.gradle b/Forge/build.gradle index 8c88f8b..9ecf73d 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -13,7 +13,6 @@ apply plugin: 'eclipse' apply plugin: 'maven-publish' archivesBaseName = mod_name -version = "forge-${minecraft_version}-${mod_version}" java.toolchain.languageVersion = JavaLanguageVersion.of(16) diff --git a/gradle.properties b/gradle.properties index 0472fc9..b6b301a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,7 @@ +# Project +version=1.0.0 +group=com.blamejared.multiloader + # Common minecraft_version=1.17.1 @@ -10,12 +14,10 @@ fabric_version=0.40.1+1.17 fabric_loader_version=0.11.7 # Mod options -mod_version=1.0.0 mod_name=MultiLoader mod_author=Jared mod_id=multiloader # Gradle org.gradle.jvmargs=-Xmx3G -org.gradle.daemon=false -group=com.blamejared.multiloader \ No newline at end of file +org.gradle.daemon=false \ No newline at end of file From d4e9a8dd17105e950302145f32d0abccb0de0895 Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Tue, 28 Sep 2021 01:41:24 -0600 Subject: [PATCH 08/11] Re-add extra flourishes to the archive base name. --- Common/build.gradle | 2 +- Fabric/build.gradle | 2 +- Forge/build.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Common/build.gradle b/Common/build.gradle index 40197e2..a40cf38 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -3,7 +3,7 @@ plugins { id('org.spongepowered.gradle.vanilla') version '0.2.1-SNAPSHOT' } -archivesBaseName = mod_name +archivesBaseName = "${mod_name}-common-${minecraft_version}" repositories { mavenCentral() diff --git a/Fabric/build.gradle b/Fabric/build.gradle index 9b56798..f9b3dde 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -7,7 +7,7 @@ plugins { sourceCompatibility = JavaVersion.VERSION_16 targetCompatibility = JavaVersion.VERSION_16 -archivesBaseName = mod_name +archivesBaseName = "${mod_name}-fabric-${minecraft_version}" repositories { } diff --git a/Forge/build.gradle b/Forge/build.gradle index 9ecf73d..9bf7fa6 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -12,7 +12,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' -archivesBaseName = mod_name +archivesBaseName = "${mod_name}-forge-${minecraft_version}" java.toolchain.languageVersion = JavaLanguageVersion.of(16) From 6ae7d108050e50b5c58513c8a1a6dff95aa8553d Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Tue, 28 Sep 2021 02:33:31 -0600 Subject: [PATCH 09/11] Add common manifest properties to all JARs, not just Forge. --- Forge/build.gradle | 12 ------------ build.gradle | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Forge/build.gradle b/Forge/build.gradle index 9bf7fa6..eee1309 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -76,18 +76,6 @@ dependencies { jar { dependsOn ":Common:compileJava" from project(":Common").sourceSets.main.output - - manifest { - attributes([ - "Specification-Title" : mod_name, - "Specification-Vendor" : mod_author, - "Specification-Version" : "1", - "Implementation-Title" : project.name, - "Implementation-Version" : project.jar.archiveVersion, - "Implementation-Vendor" : mod_author, - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ]) - } } diff --git a/build.gradle b/build.gradle index e69de29..12cfc62 100644 --- a/build.gradle +++ b/build.gradle @@ -0,0 +1,21 @@ +subprojects { + + apply plugin: 'java' + + jar { + manifest { + attributes([ + 'Specification-Title' : mod_name, + 'Specification-Vendor' : mod_author, + 'Specification-Version' : project.jar.archiveVersion, + 'Implementation-Title' : project.name, + 'Implementation-Version' : project.jar.archiveVersion, + 'Implementation-Vendor' : mod_author, + 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + 'Timestampe' : System.currentTimeMillis(), + 'Built-On-Java' : "${System.getProperty('java.vm.version')} (${System.getProperty('java.vm.vendor')})", + 'Build-On-Minecraft' : minecraft_version + ]) + } + } +} \ No newline at end of file From b76bf02f3fe053293bac115fee0e677c64f6c144 Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Tue, 28 Sep 2021 02:58:33 -0600 Subject: [PATCH 10/11] Set Java version for all Java projects. --- Fabric/build.gradle | 3 --- Forge/build.gradle | 3 --- build.gradle | 2 ++ 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Fabric/build.gradle b/Fabric/build.gradle index f9b3dde..f31703f 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -4,9 +4,6 @@ plugins { id 'idea' } -sourceCompatibility = JavaVersion.VERSION_16 -targetCompatibility = JavaVersion.VERSION_16 - archivesBaseName = "${mod_name}-fabric-${minecraft_version}" repositories { diff --git a/Forge/build.gradle b/Forge/build.gradle index eee1309..8d9acc4 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -14,8 +14,6 @@ apply plugin: 'maven-publish' archivesBaseName = "${mod_name}-forge-${minecraft_version}" -java.toolchain.languageVersion = JavaLanguageVersion.of(16) - minecraft { mappings channel: 'official', version: minecraft_version @@ -78,7 +76,6 @@ jar { from project(":Common").sourceSets.main.output } - jar.finalizedBy('reobfJar') publishing { diff --git a/build.gradle b/build.gradle index 12cfc62..5f24bdb 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,8 @@ subprojects { apply plugin: 'java' + java.toolchain.languageVersion = JavaLanguageVersion.of(16) + jar { manifest { attributes([ From 029a7c3dc81ace42ab12f7af5b7c3fd47f5e6689 Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Tue, 28 Sep 2021 03:09:54 -0600 Subject: [PATCH 11/11] Generate source jars and jdoc jars for each project. --- Fabric/build.gradle | 4 ---- build.gradle | 4 +++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Fabric/build.gradle b/Fabric/build.gradle index f31703f..ad6525a 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -42,10 +42,6 @@ tasks.withType(JavaCompile).configureEach { it.options.release = 16 } -java { - withSourcesJar() -} - jar { dependsOn ":Common:compileJava" from project(":Common").sourceSets.main.output diff --git a/build.gradle b/build.gradle index 5f24bdb..53bd109 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,9 @@ subprojects { apply plugin: 'java' java.toolchain.languageVersion = JavaLanguageVersion.of(16) - + java.withSourcesJar() + java.withJavadocJar() + jar { manifest { attributes([