diff options
Diffstat (limited to 'neoforge')
-rw-r--r-- | neoforge/.gitignore | 42 | ||||
-rw-r--r-- | neoforge/build.gradle.kts | 188 | ||||
-rw-r--r-- | neoforge/gradle.properties | 1 | ||||
-rw-r--r-- | neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java | 11 | ||||
-rw-r--r-- | neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java | 24 | ||||
-rw-r--r-- | neoforge/src/main/resources/META-INF/mods.toml | 31 | ||||
-rw-r--r-- | neoforge/src/main/resources/pack.mcmeta | 6 |
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 |