diff options
author | nea <romangraef@gmail.com> | 2022-07-12 14:20:22 +0200 |
---|---|---|
committer | nea <romangraef@gmail.com> | 2022-07-12 14:20:22 +0200 |
commit | 372eec27e5e0c8ef796ed9e6bcdc68a10df84718 (patch) | |
tree | 425ab1a282196a68819da297c670e9170a8c514a /forge | |
download | firmament-372eec27e5e0c8ef796ed9e6bcdc68a10df84718.tar.gz firmament-372eec27e5e0c8ef796ed9e6bcdc68a10df84718.tar.bz2 firmament-372eec27e5e0c8ef796ed9e6bcdc68a10df84718.zip |
initial
Diffstat (limited to 'forge')
-rw-r--r-- | forge/build.gradle.kts | 108 | ||||
-rw-r--r-- | forge/gradle.properties | 1 | ||||
-rw-r--r-- | forge/src/main/kotlin/net/examplemod/forge/ExampleExpectPlatformImpl.kt | 14 | ||||
-rw-r--r-- | forge/src/main/kotlin/net/examplemod/forge/ExampleModForge.kt | 16 | ||||
-rw-r--r-- | forge/src/main/resources/META-INF/mods.toml | 35 | ||||
-rw-r--r-- | forge/src/main/resources/examplemod.mixins.json | 12 | ||||
-rw-r--r-- | forge/src/main/resources/pack.mcmeta | 6 |
7 files changed, 192 insertions, 0 deletions
diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts new file mode 100644 index 0000000..47a56db --- /dev/null +++ b/forge/build.gradle.kts @@ -0,0 +1,108 @@ +plugins { + id("com.github.johnrengelman.shadow") version "7.1.2" +} + +architectury { + platformSetupLoomIde() + forge() +} + +loom { + accessWidenerPath.set(project(":common").loom.accessWidenerPath) + + forge { + convertAccessWideners.set(true) + extraAccessWideners.add(loom.accessWidenerPath.get().asFile.name) + } +} + +/** + * @see: https://docs.gradle.org/current/userguide/migrating_from_groovy_to_kotlin_dsl.html + * */ +val common: Configuration by configurations.creating +val shadowCommon: Configuration by configurations.creating // Don't use shadow from the shadow plugin because we don't want IDEA to index this. +val developmentForge: Configuration = configurations.getByName("developmentForge") +configurations { + compileClasspath.get().extendsFrom(configurations["common"]) + runtimeClasspath.get().extendsFrom(configurations["common"]) + developmentForge.extendsFrom(configurations["common"]) +} + +dependencies { + forge("net.minecraftforge:forge:${rootProject.property("forge_version")}") + // Remove the next line if you don't want to depend on the API + modApi("dev.architectury:architectury-forge:${rootProject.property("architectury_version")}") + common(project(":common", configuration = "namedElements")) { isTransitive = false } + shadowCommon(project(":common", configuration = "transformProductionForge")) { isTransitive = false } + common(kotlin("stdlib-jdk8")) + modRuntimeOnly("me.shedaniel:RoughlyEnoughItems-forge:${rootProject.property("rei_version")}") +} + +val javaComponent = components["java"] as AdhocComponentWithVariants +javaComponent.withVariantsFromConfiguration(configurations["sourcesElements"]) { + skip() +} + +tasks { + processResources { + inputs.property("version", project.version) + + filesMatching("META-INF/mods.toml") { + expand("version" to project.version) + } + } + + shadowJar { + exclude("fabric.mod.json") + exclude("architectury.common.json") + + /** + * magic! + * groovy -> kotlin dsl + * [project.configurations.shadowCommon] -> listOf(project.configurations["shadowCommon"]) + * */ + configurations = listOf(project.configurations["shadowCommon"]) + archiveClassifier.set("dev-shadow") + } + + remapJar { + /** + * magic! + * groovy -> kotlin dsl + * shadowJar.archiveFile -> shadowJar.flatMap { it.archiveFile } + * */ + inputFile.set(shadowJar.flatMap { it.archiveFile }) + dependsOn(shadowJar) + /** + * affect suffix of build jar name + * if { archiveClassifier.set("forge") } + * name will be examplemod-1.0.0-forge.jar + */ + archiveClassifier.set("forge") + } + + jar { + archiveClassifier.set("dev") + } + + sourcesJar { + val commonSources = project(":common").tasks.getByName("sourcesJar", Jar::class) + dependsOn(commonSources) + from(commonSources.archiveFile.map { zipTree(it) }) + } + + + publishing { + publications { + create<MavenPublication>("mavenForge") { + artifactId = "${rootProject.property("archives_base_name")}-${project.name}" + from(javaComponent) + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + } + } +} diff --git a/forge/gradle.properties b/forge/gradle.properties new file mode 100644 index 0000000..32f842a --- /dev/null +++ b/forge/gradle.properties @@ -0,0 +1 @@ +loom.platform=forge
\ No newline at end of file diff --git a/forge/src/main/kotlin/net/examplemod/forge/ExampleExpectPlatformImpl.kt b/forge/src/main/kotlin/net/examplemod/forge/ExampleExpectPlatformImpl.kt new file mode 100644 index 0000000..8617e69 --- /dev/null +++ b/forge/src/main/kotlin/net/examplemod/forge/ExampleExpectPlatformImpl.kt @@ -0,0 +1,14 @@ +package net.examplemod.forge + +import net.minecraftforge.fml.loading.FMLPaths +import java.nio.file.Path +import net.examplemod.ExampleExpectPlatform + +@Suppress("unused") +object ExampleExpectPlatformImpl { + /** + * This is our actual method to [ExampleExpectPlatform.getConfigDirectory]. + */ + @JvmStatic + fun getConfigDirectory(): Path = FMLPaths.CONFIGDIR.get() +}
\ No newline at end of file diff --git a/forge/src/main/kotlin/net/examplemod/forge/ExampleModForge.kt b/forge/src/main/kotlin/net/examplemod/forge/ExampleModForge.kt new file mode 100644 index 0000000..7dc906c --- /dev/null +++ b/forge/src/main/kotlin/net/examplemod/forge/ExampleModForge.kt @@ -0,0 +1,16 @@ +package net.examplemod.forge + +import dev.architectury.platform.forge.EventBuses +import net.examplemod.ExampleMod +import net.examplemod.ExampleMod.init +import net.minecraftforge.fml.common.Mod +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext + +@Mod(ExampleMod.MOD_ID) +class ExampleModForge { + init { + // Submit our event bus to let architectury register our content on the right time + EventBuses.registerModEventBus(ExampleMod.MOD_ID, FMLJavaModLoadingContext.get().modEventBus) + init() + } +}
\ No newline at end of file diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..4c3d869 --- /dev/null +++ b/forge/src/main/resources/META-INF/mods.toml @@ -0,0 +1,35 @@ +modLoader = "javafml" +loaderVersion = "[40,)" +#issueTrackerURL = "TODO" +license = "LGPL-3.0" + +[[mods]] +modId = "notenoughupdates" +version = "${version}" +displayName = "Not Enough Updates" +authors = "nea89" +description = ''' +Not Enough Updates - A mod for Hypixel Skyblock +''' +#logoFile = "" + +[[dependencies.notenoughupdates]] +modId = "forge" +mandatory = true +versionRange = "[40,)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.notenoughupdates]] +modId = "minecraft" +mandatory = true +versionRange = "[1.18.2,)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.notenoughupdates]] +modId = "architectury" +mandatory = true +versionRange = "[4.2.50,)" +ordering = "AFTER" +side = "BOTH" diff --git a/forge/src/main/resources/examplemod.mixins.json b/forge/src/main/resources/examplemod.mixins.json new file mode 100644 index 0000000..50eba1c --- /dev/null +++ b/forge/src/main/resources/examplemod.mixins.json @@ -0,0 +1,12 @@ +{ + "required": true, + "package": "net.examplemod.mixin.forge", + "compatibilityLevel": "JAVA_16", + "client": [ + ], + "mixins": [ + ], + "injectors": { + "defaultRequire": 1 + } +}
\ No newline at end of file diff --git a/forge/src/main/resources/pack.mcmeta b/forge/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..9252d3d --- /dev/null +++ b/forge/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "Example Mod", + "pack_format": 8 + } +} |