aboutsummaryrefslogtreecommitdiff
path: root/neoforge
diff options
context:
space:
mode:
Diffstat (limited to 'neoforge')
-rw-r--r--neoforge/.gitignore42
-rw-r--r--neoforge/build.gradle.kts188
-rw-r--r--neoforge/gradle.properties1
-rw-r--r--neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java11
-rw-r--r--neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java24
-rw-r--r--neoforge/src/main/resources/META-INF/mods.toml31
-rw-r--r--neoforge/src/main/resources/pack.mcmeta6
7 files changed, 303 insertions, 0 deletions
diff --git a/neoforge/.gitignore b/neoforge/.gitignore
new file mode 100644
index 0000000..b63da45
--- /dev/null
+++ b/neoforge/.gitignore
@@ -0,0 +1,42 @@
+.gradle
+build/
+!gradle/wrapper/gradle-wrapper.jar
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store \ No newline at end of file
diff --git a/neoforge/build.gradle.kts b/neoforge/build.gradle.kts
new file mode 100644
index 0000000..7b09032
--- /dev/null
+++ b/neoforge/build.gradle.kts
@@ -0,0 +1,188 @@
+import org.gradle.api.component.AdhocComponentWithVariants
+import org.gradle.jvm.tasks.Jar
+import org.gradle.kotlin.dsl.get
+import org.gradle.kotlin.dsl.libs
+
+plugins {
+ alias(libs.plugins.architectury.loom)
+ alias(libs.plugins.shadow)
+ alias(libs.plugins.minotaur)
+ alias(libs.plugins.cursegradle)
+}
+
+architectury {
+ platformSetupLoomIde()
+ neoForge()
+}
+
+loom {
+ silentMojangMappingsLicense()
+
+ accessWidenerPath.set(project(":common").loom.accessWidenerPath)
+
+ neoForge {
+
+ }
+}
+
+val common by configurations.registering
+val shadowCommon by configurations.registering
+configurations.compileClasspath.get().extendsFrom(common.get())
+configurations["developmentNeoForge"].extendsFrom(common.get())
+
+val minecraftVersion: String = libs.versions.minecraft.get()
+
+dependencies {
+ minecraft(libs.minecraft)
+ mappings(loom.layered {
+ officialMojangMappings()
+ parchment(libs.parchment)
+ })
+ neoForge(libs.neoforge)
+
+ libs.bundles.twelvemonkeys.imageio.let {
+ implementation(it)
+ include(it)
+ forgeRuntimeLibrary(it)
+ }
+ libs.bundles.quilt.parsers.let {
+ implementation(it)
+ include(it)
+ forgeRuntimeLibrary(it)
+ }
+
+ "common"(project(path = ":common", configuration = "namedElements")) { isTransitive = false }
+ "shadowCommon"(project(path = ":common", configuration = "transformProductionForge")) { isTransitive = false }
+}
+
+java {
+ withSourcesJar()
+}
+
+tasks {
+ processResources {
+ val modId: String by rootProject
+ val modName: String by rootProject
+ val modDescription: String by rootProject
+ val githubProject: String by rootProject
+
+ inputs.property("id", modId)
+ inputs.property("group", project.group)
+ inputs.property("name", modName)
+ inputs.property("description", modDescription)
+ inputs.property("version", project.version)
+ inputs.property("github", githubProject)
+
+ filesMatching(listOf("META-INF/mods.toml", "pack.mcmeta")) {
+ expand(
+ "id" to modId,
+ "group" to project.group,
+ "name" to modName,
+ "description" to modDescription,
+ "version" to project.version,
+ "github" to githubProject,
+ )
+ }
+ }
+
+ shadowJar {
+ exclude("fabric.mod.json")
+ exclude("architectury.common.json")
+
+ configurations = listOf(shadowCommon.get())
+ archiveClassifier.set("dev-shadow")
+ }
+
+ remapJar {
+ injectAccessWidener.set(true)
+ inputFile.set(shadowJar.get().archiveFile)
+ dependsOn(shadowJar)
+ archiveClassifier.set(null as String?)
+
+ from(rootProject.file("LICENSE"))
+ }
+
+ named<Jar>("sourcesJar") {
+ archiveClassifier.set("dev-sources")
+ val commonSources = project(":common").tasks.named<Jar>("sourcesJar")
+ dependsOn(commonSources)
+ from(commonSources.get().archiveFile.map { zipTree(it) })
+ }
+
+ remapSourcesJar {
+ archiveClassifier.set("sources")
+ }
+
+ jar {
+ archiveClassifier.set("dev")
+ }
+}
+
+components["java"].run {
+ if (this is AdhocComponentWithVariants) {
+ withVariantsFromConfiguration(configurations["shadowRuntimeElements"]) {
+ skip()
+ }
+ }
+}
+
+val changelogText: String by ext
+val isBeta: Boolean by ext
+
+val modrinthId: String by project
+if (modrinthId.isNotEmpty()) {
+ modrinth {
+ token.set(findProperty("modrinth.token")?.toString())
+ projectId.set(modrinthId)
+ versionName.set("${project.version} (Forge)")
+ versionNumber.set("${project.version}-neoforge")
+ versionType.set(if (isBeta) "beta" else "release")
+ uploadFile.set(tasks["remapJar"])
+ gameVersions.set(listOf("1.20.4"))
+ loaders.set(listOf("neoforge"))
+ changelog.set(changelogText)
+ syncBodyFrom.set(rootProject.file("README.md").readText())
+ }
+}
+rootProject.tasks["releaseMod"].dependsOn(tasks["modrinth"])
+
+val curseforgeId: String by project
+if (hasProperty("curseforge.token") && curseforgeId.isNotEmpty()) {
+ curseforge {
+ apiKey = findProperty("curseforge.token")
+ project(closureOf<me.hypherionmc.cursegradle.CurseProject> {
+ mainArtifact(tasks["remapJar"], closureOf<me.hypherionmc.cursegradle.CurseArtifact> {
+ displayName = "[Forge] ${project.version}"
+ })
+
+ id = curseforgeId
+ releaseType = if (isBeta) "beta" else "release"
+ addGameVersion("1.20.4")
+ addGameVersion("NeoForge")
+ addGameVersion("Java 17")
+
+ changelog = changelogText
+ changelogType = "markdown"
+ })
+
+ options(closureOf<me.hypherionmc.cursegradle.Options> {
+ forgeGradleIntegration = false
+ fabricIntegration = false
+ })
+ }
+}
+rootProject.tasks["releaseMod"].dependsOn(tasks["curseforge"])
+
+publishing {
+ publications {
+ create<MavenPublication>("forge") {
+ groupId = "dev.isxander.yacl"
+ artifactId = "yet-another-config-lib-forge"
+
+ from(components["java"])
+ }
+ }
+}
+tasks.findByPath("publishForgePublicationToReleasesRepository")?.let {
+ rootProject.tasks["releaseMod"].dependsOn(it)
+}
diff --git a/neoforge/gradle.properties b/neoforge/gradle.properties
new file mode 100644
index 0000000..7da18ea
--- /dev/null
+++ b/neoforge/gradle.properties
@@ -0,0 +1 @@
+loom.platform=neoforge
diff --git a/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java b/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java
new file mode 100644
index 0000000..343635e
--- /dev/null
+++ b/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java
@@ -0,0 +1,11 @@
+package dev.isxander.yacl3.platform.neoforge;
+
+import net.neoforged.fml.common.Mod;
+
+@Mod("yet_another_config_lib_v3")
+public class YACLForgeEntrypoint {
+ public YACLForgeEntrypoint() {
+
+ }
+
+}
diff --git a/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java b/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java
new file mode 100644
index 0000000..42a51d6
--- /dev/null
+++ b/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java
@@ -0,0 +1,24 @@
+package dev.isxander.yacl3.platform.neoforge;
+
+import dev.isxander.yacl3.platform.Env;
+import net.neoforged.fml.loading.FMLEnvironment;
+import net.neoforged.fml.loading.FMLPaths;
+
+import java.nio.file.Path;
+
+public class YACLPlatformImpl {
+ public static Env getEnvironment() {
+ return switch (FMLEnvironment.dist) {
+ case CLIENT -> Env.CLIENT;
+ case DEDICATED_SERVER -> Env.SERVER;
+ };
+ }
+
+ public static boolean isDevelopmentEnv() {
+ return !FMLEnvironment.production;
+ }
+
+ public static Path getConfigDir() {
+ return FMLPaths.CONFIGDIR.get();
+ }
+}
diff --git a/neoforge/src/main/resources/META-INF/mods.toml b/neoforge/src/main/resources/META-INF/mods.toml
new file mode 100644
index 0000000..4a68c54
--- /dev/null
+++ b/neoforge/src/main/resources/META-INF/mods.toml
@@ -0,0 +1,31 @@
+modLoader = "javafml"
+loaderVersion = "[1,)"
+#issueTrackerURL = ""
+license = "LGPL-3.0-or-later"
+
+[[mods]]
+modId = "${id}"
+version = "${version}"
+displayName = "${name}"
+authors = "isXander"
+description = '''
+${description}
+'''
+logoFile = "yacl-128x.png"
+
+[[mixins]]
+config = "yacl.mixins.json"
+
+[["dependencies.${id}"]]
+modId = "neoforge"
+mandatory = true
+versionRange = "[1,)"
+ordering = "NONE"
+side = "BOTH"
+
+[["dependencies.${id}"]]
+modId = "minecraft"
+mandatory = true
+versionRange = "[1.20.2,)"
+ordering = "NONE"
+side = "BOTH"
diff --git a/neoforge/src/main/resources/pack.mcmeta b/neoforge/src/main/resources/pack.mcmeta
new file mode 100644
index 0000000..a9c6340
--- /dev/null
+++ b/neoforge/src/main/resources/pack.mcmeta
@@ -0,0 +1,6 @@
+{
+ "pack": {
+ "description": "${name}",
+ "pack_format": 14
+ }
+} \ No newline at end of file