aboutsummaryrefslogtreecommitdiff
path: root/forge
diff options
context:
space:
mode:
Diffstat (limited to 'forge')
-rw-r--r--forge/build.gradle.kts108
-rw-r--r--forge/gradle.properties1
-rw-r--r--forge/src/main/kotlin/net/examplemod/forge/ExampleExpectPlatformImpl.kt14
-rw-r--r--forge/src/main/kotlin/net/examplemod/forge/ExampleModForge.kt16
-rw-r--r--forge/src/main/resources/META-INF/mods.toml35
-rw-r--r--forge/src/main/resources/examplemod.mixins.json12
-rw-r--r--forge/src/main/resources/pack.mcmeta6
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
+ }
+}