From 3685593c22a57ce45a33eccd4c788d85ed9d12c6 Mon Sep 17 00:00:00 2001 From: Scarlet-Phonavis Date: Fri, 5 Jul 2024 19:06:44 -0500 Subject: [PATCH] properties, shadows, and merges --- .github/workflows/build.yml | 30 +++++++ build.gradle | 83 +++++++++++++++++++ fabric/build.gradle | 3 +- .../fabric/simpleircbridgeFabric.java | 6 +- fabric/src/main/resources/fabric.mod.json | 30 ++++--- .../forge/simpleircbridgeForge.java | 13 +-- forge/src/main/resources/META-INF/mods.toml | 36 ++++---- gradle.properties | 52 ++++++++++-- .../src/main/resources/META-INF/mods.toml | 37 +++++---- quilt/build.gradle | 3 +- .../quilt/simpleircbridgeQuilt.java | 6 +- quilt/src/main/resources/quilt.mod.json | 29 ++++--- 12 files changed, 243 insertions(+), 85 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..9a53625 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,30 @@ +name: Build + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + + - name: Setup JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: Build with Gradle + uses: gradle/actions/setup-gradle@v3 + with: + arguments: build + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: Package + path: "**/build/libs" diff --git a/build.gradle b/build.gradle index 4f84d70..e51bfbe 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,16 @@ subprojects { apply plugin: 'dev.architectury.loom' apply plugin: 'architectury-plugin' apply plugin: 'maven-publish' + apply plugin: 'com.github.johnrengelman.shadow' + + configurations { + + shadowBundle { + canBeResolved = true + canBeConsumed = false + + } + } base { // Set up a suffixed format for the mod jar names, e.g. `example-fabric`. @@ -34,6 +44,79 @@ subprojects { dependencies { minecraft "net.minecraft:minecraft:$rootProject.minecraft_version" mappings loom.officialMojangMappings() + + + shadowBundle(implementation("com.electronwill.night-config:core:$rootProject.nightconfig_version") ) + shadowBundle(implementation("com.electronwill.night-config:toml:$rootProject.nightconfig_version")) + + + tasks.withType(ProcessResources).configureEach { + var replaceProperties = [ + minecraft_version : minecraft_version, + mod_id : mod_id, + mod_name : mod_name, + mod_license : mod_license, + mod_version : mod_version, + mod_authors : mod_authors, + mod_description : mod_description, + maven_group : maven_group, + mod_contact : mod_contact, + mod_git : mod_git, + + //Quilt + quilt_architectury : quilt_architectury, + quilt_minecraft : quilt_minecraft, + quilt_quiltloader : quilt_quiltloader, + quilt_quiltbase : quilt_quiltbase, + + //Fabric + fabric_fabricloader : fabric_fabricloader, + fabric_minecraft : fabric_minecraft, + fabric_java : fabric_java, + fabric_architectury : fabric_architectury, + fabric_fabricapi : fabric_fabricapi, + + //ForgeLikes + forge_loaderversion : forge_loaderversion, + forge_loaderrange : forge_loaderrange, + forge_forgeside : forge_forgeside, + forge_minecraftrange : forge_minecraftrange, + forge_architecturyrange: forge_architecturyrange, + forge_architecturyside : forge_architecturyside, + + //NeoForge + neoforge_loaderversion : neoforge_loaderversion, + neoforge_loaderrange : neoforge_loaderrange, + neoforge_neoforgeside : neoforge_neoforgeside, + neoforge_minecraftrange: neoforge_minecraftrange, + neoforge_architecturyrange: neoforge_architecturyrange, + neoforge_architecturyside: neoforge_architecturyside + + + + ] + inputs.properties replaceProperties + + filesMatching(['META-INF/mods.toml', 'quilt.mod.json', 'fabric.mod.json'] ) { + expand replaceProperties + } + } + } + shadowJar { + configurations = [project.configurations.shadowBundle] + archiveClassifier = 'dev-shadow' + + + // relocate 'redis.clients', 'net.stonebound.shaded.redis.clients' + relocate 'io.prometheus', 'net.stonebound.SimpleIRCBridge.shaded.io.prometheus' + relocate 'com.electronwill', 'net.stonebound.SimpleIRCBridge.shaded.com.electronwill' + + + dependencies { + exclude(dependency("org.slf4j:.*:.*")) + exclude(dependency("org.jetbrains:.*:.*")) + + } } java { diff --git a/fabric/build.gradle b/fabric/build.gradle index d3f1206..931a695 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -36,8 +36,7 @@ dependencies { common(project(path: ':common', configuration: 'namedElements')) { transitive false } shadowBundle project(path: ':common', configuration: 'transformProductionFabric') - include("com.electronwill.night-config:core:$rootProject.nightconfig_version") - include("com.electronwill.night-config:toml:$rootProject.nightconfig_version") + } processResources { diff --git a/fabric/src/main/java/net/stonebound/simpleircbridge/fabric/simpleircbridgeFabric.java b/fabric/src/main/java/net/stonebound/simpleircbridge/fabric/simpleircbridgeFabric.java index 30e01bf..090ccf1 100644 --- a/fabric/src/main/java/net/stonebound/simpleircbridge/fabric/simpleircbridgeFabric.java +++ b/fabric/src/main/java/net/stonebound/simpleircbridge/fabric/simpleircbridgeFabric.java @@ -2,9 +2,9 @@ import net.fabricmc.api.ModInitializer; -import net.stonebound.simpleircbridge.simpleIRCbridgeLoader; +import net.stonebound.simpleircbridge.SimpleIRCBridge; -public final class simpleircbridgeFabric implements ModInitializer { +public final class SimpleIRCBridgeFabric implements ModInitializer { @Override public void onInitialize() { // This code runs as soon as Minecraft is in a mod-load-ready state. @@ -12,6 +12,6 @@ public void onInitialize() { // Proceed with mild caution. // Run our common setup. - simpleIRCbridgeLoader.init(); + SimpleIRCBridge.init(); } } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index b052135..ac68b99 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -1,29 +1,33 @@ { "schemaVersion": 1, - "id": "simpleircbridge", - "version": "${version}", - "name": "simple irc bridge", - "description": "This is an example description! Tell everyone what your mod is about!", + "id": "${mod_id}", + "version": "${mod_version}", + "name": "${mod_name}", + "description": "${mod_description}", "authors": [ - "Xnrand and contributors" + "${mod_authors}" ], "contact": { - "homepage": "https://fabricmc.net/", - "sources": "https://github.com/FabricMC/fabric-example-mod" + "homepage": "${mod_contact}", + "sources": "${mod_git}" }, - "license": "BSD-2-Clause", + "license": "${mod_license}", + "icon": "assets/sbprometheus/icon.png", "environment": "*", "entrypoints": { "main": [ "net.stonebound.simpleircbridge.fabric.SimpleIRCBridgeFabric" ] }, + "mixins": [ + "simpleircbridge.mixins.json" + ], "depends": { - "fabricloader": ">=0.15.11", - "minecraft": "~1.20.4", - "java": ">=17", - "architectury": ">=11.1.17", - "fabric-api": "*" + "fabricloader": "${fabric_fabricloader}", + "minecraft": "${fabric_minecraft}", + "java": "${fabric_java}", + "architectury": "${fabric_architectury}", + "fabric-api": "${fabric_fabricapi}" }, "suggests": { "another-mod": "*" diff --git a/forge/src/main/java/net/stonebound/simpleircbridge/forge/simpleircbridgeForge.java b/forge/src/main/java/net/stonebound/simpleircbridge/forge/simpleircbridgeForge.java index 05546e0..a3f345e 100644 --- a/forge/src/main/java/net/stonebound/simpleircbridge/forge/simpleircbridgeForge.java +++ b/forge/src/main/java/net/stonebound/simpleircbridge/forge/simpleircbridgeForge.java @@ -4,15 +4,16 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.stonebound.simpleircbridge.simpleIRCbridgeLoader; +import net.stonebound.simpleircbridge.SimpleIRCBridge; + //TODO Test to ensure this actually works on forge, for some reason its not working in IDE but is assembled, but I can't get a normal vanilla forge server to work -@Mod(simpleIRCbridgeLoader.MOD_ID) -public final class simpleircbridgeForge { - public simpleircbridgeForge() { +@Mod(SimpleIRCBridge.MOD_ID) +public final class SimpleIRCBridgeForge { + public SimpleIRCBridgeForge() { // Submit our event bus to let Architectury API register our content on the right time. - EventBuses.registerModEventBus(simpleIRCbridgeLoader.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); + EventBuses.registerModEventBus(SimpleIRCBridge.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); // Run our common setup. - simpleIRCbridgeLoader.init(); + SimpleIRCBridge.init(); } } diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index 7e91b32..ff36d93 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -1,35 +1,33 @@ modLoader = "javafml" -loaderVersion = "[49,)" -#issueTrackerURL = "https://github.com/Stonebound/SimpleIRCBridge" -license = "BSD-2-Clause" +loaderVersion = "${forge_loaderversion}" +issueTrackerURL = "${mod_git}" +license = "${mod_license}" [[mods]] -modId = "simpleircbridge" -version = "${version}" -displayName = "simple irc bridge" -authors = "Xnrand & contributors" -description = ''' -simple irc bridge stonebound fork -''' +modId = "${mod_id}" +version = "${mod_version}" +displayName = "${mod_name}" +authors = "${mod_authors}" +description = "${mod_description}" #logoFile = "" -[[dependencies.simpleircbridge]] +[[dependencies."${mod_id}"]] modId = "forge" mandatory = true -versionRange = "[49,)" +versionRange = "${forge_loaderrange}" ordering = "NONE" -side = "SERVER" +side = "${forge_forgeside}" -[[dependencies.simpleircbridge]] +[[dependencies."${mod_id}"]] modId = "minecraft" mandatory = true -versionRange = "[1.20.4,)" +versionRange = "${forge_minecraftrange}" ordering = "NONE" -side = "SERVER" +side = "BOTH" -[[dependencies.simpleircbridge]] +[[dependencies."${mod_id}"]] modId = "architectury" mandatory = true -versionRange = "[11.1.17,)" +versionRange = "${forge_architecturyrange}" ordering = "AFTER" -side = "SERVER" +side = "${forge_architecturyside}" diff --git a/gradle.properties b/gradle.properties index 7d3752b..d9ddda8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,20 +3,60 @@ org.gradle.jvmargs=-Xmx2G org.gradle.parallel=true # Mod properties -mod_version = 1.0.2 +mod_version = 1.0.3 maven_group = net.stonebound.simpleircbridge archives_name = simpleircbridge enabled_platforms = fabric,forge,neoforge,quilt +mod_description = Simple Irc Bridge +mod_id = simpleircbridge +mod_name=Simple IRC Bridge +mod_license=BSD-2-Clause +mod_authors=xrand & contributors +mod_contact=https://stonebound.net +mod_git=https://github.com/Stonebound/SimpleIRCBridge/ + + + +#Forge TOML Properties +forge_loaderversion = [49,) +forge_loaderrange = [49,) +forge_forgeside = BOTH +forge_minecraftrange = [1.20.4,) +forge_architecturyrange = [11.1.17,) +forge_architecturyside = BOTH + + +#Neoforge TOML Properties +neoforge_loaderversion = [2,) +neoforge_loaderrange = [20.4,) +neoforge_neoforgeside = BOTH +neoforge_minecraftrange = [1.20.4,) +neoforge_architecturyrange = [11.1.17,) +neoforge_architecturyside = BOTH -# Minecraft properties -minecraft_version = 1.20.4 -# Dependencies + +#Quilt & Fabric JSON Properties +quilt_architectury= >=11.1.17 +quilt_minecraft= >=1.20.4 +quilt_quiltloader = * +quilt_quiltbase = * +#yes its cursed +fabric_fabricloader = >=0.15.11 +fabric_minecraft = ~1.20.4 +fabric_java = >=17 +fabric_architectury = >=11.1.17 +fabric_fabricapi = * + + + +# Compile Dependencies +minecraft_version = 1.20.4 architectury_api_version = 11.1.17 fabric_loader_version = 0.15.11 fabric_api_version = 0.97.1+1.20.4 -forge_version = 1.20.4-49.0.50 -neoforge_version = 20.4.234 +forge_version = 1.20.4-49.1.2 +neoforge_version = 20.4.237 quilt_loader_version = 0.26.1-beta.1 quilted_fabric_api_version = 9.0.0-alpha.8+0.97.0-1.20.4 nightconfig_version=3.6.4 \ No newline at end of file diff --git a/neoforge/src/main/resources/META-INF/mods.toml b/neoforge/src/main/resources/META-INF/mods.toml index 93c4700..9de4ecf 100644 --- a/neoforge/src/main/resources/META-INF/mods.toml +++ b/neoforge/src/main/resources/META-INF/mods.toml @@ -1,35 +1,36 @@ modLoader = "javafml" -loaderVersion = "[2,)" -#issueTrackerURL = "https://github.com/Stonebound/SimpleIRCBridge" -license = "BSD-2-Clause" +loaderVersion = "${neoforge_loaderversion}" +issueTrackerURL = "${mod_git}" +license = "${mod_license}" [[mods]] -modId = "simpleircbridge" -version = "${version}" -displayName = "simple irc bridge" -authors = "Xnrand & contributors" -description = ''' -simple irc bridge stonebound fork -''' +modId = "${mod_id}" +version = "${mod_version}" +displayName = "${mod_name}" +authors = "${mod_authors}" +description = "${mod_description}" #logoFile = "" -[[dependencies.simpleircbridge]] +[[dependencies."${mod_id}"]] modId = "neoforge" type = "required" -versionRange = "[20.4,)" +versionRange = "${neoforge_loaderrange}" ordering = "NONE" -side = "BOTH" +side = "${neoforge_neoforgeside}" -[[dependencies.simpleircbridge]] +[[dependencies."${mod_id}"]] modId = "minecraft" type = "required" -versionRange = "[1.20.4,)" +versionRange = "${neoforge_minecraftrange}" ordering = "NONE" side = "BOTH" -[[dependencies.simpleircbridge]] +[[dependencies."${mod_id}"]] modId = "architectury" type = "required" -versionRange = "[11.1.17,)" +versionRange = "${neoforge_architecturyrange}" ordering = "AFTER" -side = "BOTH" +side = "${neoforge_architecturyside}" + +[[mixins]] +config = "simpleircbridge.mixins.json" diff --git a/quilt/build.gradle b/quilt/build.gradle index 07cad4f..bd30319 100644 --- a/quilt/build.gradle +++ b/quilt/build.gradle @@ -44,8 +44,7 @@ dependencies { common(project(path: ':common', configuration: 'namedElements')) { transitive false } shadowBundle project(path: ':common', configuration: 'transformProductionQuilt') - include("com.electronwill.night-config:core:$rootProject.nightconfig_version") - include("com.electronwill.night-config:toml:$rootProject.nightconfig_version") + } processResources { diff --git a/quilt/src/main/java/net/stonebound/simpleircbridge/quilt/simpleircbridgeQuilt.java b/quilt/src/main/java/net/stonebound/simpleircbridge/quilt/simpleircbridgeQuilt.java index a306d53..f7b6f80 100644 --- a/quilt/src/main/java/net/stonebound/simpleircbridge/quilt/simpleircbridgeQuilt.java +++ b/quilt/src/main/java/net/stonebound/simpleircbridge/quilt/simpleircbridgeQuilt.java @@ -3,12 +3,12 @@ import org.quiltmc.loader.api.ModContainer; import org.quiltmc.qsl.base.api.entrypoint.ModInitializer; -import net.stonebound.simpleircbridge.simpleIRCbridgeLoader; +import net.stonebound.simpleircbridge.SimpleIRCBridge; -public final class simpleircbridgeQuilt implements ModInitializer { +public final class SimpleIRCBridgeQuilt implements ModInitializer { @Override public void onInitialize(ModContainer mod) { // Run our common setup. - simpleIRCbridgeLoader.init(); + SimpleIRCBridge.init(); } } diff --git a/quilt/src/main/resources/quilt.mod.json b/quilt/src/main/resources/quilt.mod.json index f918f8a..3e55ae8 100644 --- a/quilt/src/main/resources/quilt.mod.json +++ b/quilt/src/main/resources/quilt.mod.json @@ -1,40 +1,43 @@ { "schema_version": 1, "quilt_loader": { - "group": "${group}", - "id": "simpleircbridge", - "version": "${version}", + "group": "${maven_group}", + "id": "${mod_id}", + "version": "${mod_version}", "metadata": { - "name": "simple irc bridge", - "description": "This is an example description! Tell everyone what your mod is about!", + "name": "${mod_name}", + "description": "${mod_description}", "contributors": { - "Me!": "Xnrand and contributors" + "Me!": "${mod_authors}" }, - "icon": "assets/simpleircbridge/icon.png" + "icon": "assets/sbprometheus/icon.png" }, "intermediate_mappings": "net.fabricmc:intermediary", "entrypoints": { "init": [ - "net.stonebound.simpleircbridge.quilt.simpleircbridgeQuilt" + "net.stonebound.sbprometheus.quilt.SbPrometheusQuilt" ] }, "depends": [ { "id": "quilt_loader", - "version": "*" + "version": "${quilt_quiltloader}" }, { "id": "quilt_base", - "version": "*" + "version": "${quilt_quiltbase}" }, { "id": "minecraft", - "version": ">=1.20.4" + "version": "${quilt_minecraft}" }, { "id": "architectury", - "version": ">=11.1.17" + "version": "${quilt_architectury}" } ] - } + }, + "mixin": [ + "simpleircbridge.mixins.json" + ] }