From 8138e17b4226e21a90dac87dbe46eaba58faf9f6 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Tue, 4 Nov 2025 22:21:15 +0100 Subject: [PATCH] dev: switch to stonecutter build system - This will allow us to build the library for different Minecraft versions at the same time - Right now, only Fabric and Neoforge 1.21.10 are fully working - As a bonus, the jar is now even smaller! --- CHANGELOG.md | 0 build.gradle | 72 ------- build.gradle.kts | 192 ++++++++++++++++++ buildSrc/build.gradle.kts | 8 + buildSrc/src/main/kotlin/build-extensions.kt | 33 +++ common/build.gradle | 40 ---- .../eu/midnightdust/core/MidnightLib.java | 37 ---- .../lib/util/PlatformFunctions.java | 34 ---- fabric/build.gradle | 139 ------------- .../fabric/core/MidnightLibFabric.java | 15 -- .../midnightdust/lib/config/AutoModMenu.java | 27 --- .../util/fabric/PlatformFunctionsImpl.java | 30 --- .../test/fabric/MLExampleFabric.java | 12 -- fabric/src/test/resources/fabric.mod.json | 23 --- gradle.properties | 48 +++-- neoforge/build.gradle | 167 --------------- neoforge/gradle.properties | 1 - .../util/neoforge/PlatformFunctionsImpl.java | 33 --- .../neoforge/MidnightLibNeoForge.java | 52 ----- neoforge/src/main/resources/midnightlib.png | Bin 2801 -> 0 bytes .../test/neoforge/MLExampleNeoForge.java | 12 -- .../resources/META-INF/neoforge.mods.toml | 34 ---- quilt/build.gradle | 88 -------- quilt/gradle.properties | 1 - .../util/fabric/PlatformFunctionsImpl.java | 29 --- .../quilt/core/MidnightLibClientQuilt.java | 14 -- .../quilt/core/MidnightLibServerQuilt.java | 12 -- quilt/src/main/resources/quilt.mod.json | 64 ------ settings.gradle | 15 -- settings.gradle.kts | 33 +++ .../eu/midnightdust/core/MidnightLib.java | 125 ++++++++++++ .../core/config/MidnightLibConfig.java | 0 .../core/mixin/MixinOptionsScreen.java | 0 .../screen/MidnightConfigOverviewScreen.java | 0 .../midnightdust/lib/config/AutoCommand.java | 3 - .../midnightdust/lib/config/ButtonEntry.java | 0 .../eu/midnightdust/lib/config/EntryInfo.java | 0 .../lib/config/MidnightConfig.java | 0 .../lib/config/MidnightConfigListWidget.java | 0 .../lib/config/MidnightConfigScreen.java | 0 .../lib/config/MidnightSliderWidget.java | 0 .../lib/util/MidnightColorUtil.java | 0 .../lib/util/PlatformFunctions.java | 60 ++++++ .../resources/META-INF/neoforge.mods.toml | 2 +- .../main/resources/architectury.common.json | 0 .../resources/assets/midnightlib/icon.png | Bin .../assets/midnightlib/lang/de_de.json | 0 .../assets/midnightlib/lang/en_us.json | 1 - .../assets/midnightlib/lang/es_ar.json | 0 .../assets/midnightlib/lang/fr_fr.json | 0 .../assets/midnightlib/lang/ms_my.json | 0 .../assets/midnightlib/lang/pt_br.json | 0 .../assets/midnightlib/lang/ru_ru.json | 0 .../assets/midnightlib/lang/tt_ru.json | 0 .../assets/midnightlib/lang/uk_ua.json | 0 .../assets/midnightlib/lang/zh_cn.json | 0 .../assets/midnightlib/lang/zh_tw.json | 0 .../assets/midnightlib/lang/zlm_arab.json | 0 .../textures/gui/sprites/icon/explorer.png | Bin .../textures/gui/sprites/icon/midnightlib.png | Bin .../textures/gui/sprites/icon/reset.png | Bin .../main/resources/fabric.mod.json | 16 +- .../main/resources/midnightlib.mixins.json | 0 .../midnightdust/test/MidnightLibExtras.java | 0 .../test/config/MidnightConfigExample.java | 0 .../resources/assets/modid/lang/en_us.json | 0 .../resources/assets/modid/lang/es_ar.json | 0 stonecutter.gradle.kts | 54 +++++ versions/1.20.1-fabric/gradle.properties | 12 ++ versions/1.20.1-forge/gradle.properties | 13 ++ versions/1.21.1-fabric/gradle.properties | 13 ++ versions/1.21.1-neoforge/gradle.properties | 13 ++ versions/1.21.10-fabric/gradle.properties | 12 ++ versions/1.21.10-neoforge/gradle.properties | 12 ++ versions/1.21.5-fabric/gradle.properties | 12 ++ versions/1.21.5-neoforge/gradle.properties | 12 ++ versions/1.21.8-fabric/gradle.properties | 12 ++ versions/1.21.8-neoforge/gradle.properties | 12 ++ 78 files changed, 668 insertions(+), 981 deletions(-) create mode 100644 CHANGELOG.md delete mode 100644 build.gradle create mode 100644 build.gradle.kts create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/src/main/kotlin/build-extensions.kt delete mode 100644 common/build.gradle delete mode 100644 common/src/main/java/eu/midnightdust/core/MidnightLib.java delete mode 100644 common/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java delete mode 100644 fabric/build.gradle delete mode 100644 fabric/src/main/java/eu/midnightdust/fabric/core/MidnightLibFabric.java delete mode 100644 fabric/src/main/java/eu/midnightdust/lib/config/AutoModMenu.java delete mode 100644 fabric/src/main/java/eu/midnightdust/lib/util/fabric/PlatformFunctionsImpl.java delete mode 100644 fabric/src/test/java/eu/midnightdust/test/fabric/MLExampleFabric.java delete mode 100644 fabric/src/test/resources/fabric.mod.json delete mode 100644 neoforge/build.gradle delete mode 100644 neoforge/gradle.properties delete mode 100644 neoforge/src/main/java/eu/midnightdust/lib/util/neoforge/PlatformFunctionsImpl.java delete mode 100644 neoforge/src/main/java/eu/midnightdust/neoforge/MidnightLibNeoForge.java delete mode 100644 neoforge/src/main/resources/midnightlib.png delete mode 100644 neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java delete mode 100644 neoforge/src/test/resources/META-INF/neoforge.mods.toml delete mode 100644 quilt/build.gradle delete mode 100644 quilt/gradle.properties delete mode 100644 quilt/src/main/java/eu/midnightdust/lib/util/fabric/PlatformFunctionsImpl.java delete mode 100644 quilt/src/main/java/eu/midnightdust/quilt/core/MidnightLibClientQuilt.java delete mode 100644 quilt/src/main/java/eu/midnightdust/quilt/core/MidnightLibServerQuilt.java delete mode 100644 quilt/src/main/resources/quilt.mod.json delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts create mode 100644 src/main/java/eu/midnightdust/core/MidnightLib.java rename {common/src => src}/main/java/eu/midnightdust/core/config/MidnightLibConfig.java (100%) rename {common/src => src}/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java (100%) rename {common/src => src}/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java (100%) rename {common/src => src}/main/java/eu/midnightdust/lib/config/AutoCommand.java (97%) rename {common/src => src}/main/java/eu/midnightdust/lib/config/ButtonEntry.java (100%) rename {common/src => src}/main/java/eu/midnightdust/lib/config/EntryInfo.java (100%) rename {common/src => src}/main/java/eu/midnightdust/lib/config/MidnightConfig.java (100%) rename {common/src => src}/main/java/eu/midnightdust/lib/config/MidnightConfigListWidget.java (100%) rename {common/src => src}/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java (100%) rename {common/src => src}/main/java/eu/midnightdust/lib/config/MidnightSliderWidget.java (100%) rename {common/src => src}/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java (100%) create mode 100644 src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java rename {neoforge/src => src}/main/resources/META-INF/neoforge.mods.toml (93%) rename {common/src => src}/main/resources/architectury.common.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/icon.png (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/de_de.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/en_us.json (89%) rename {common/src => src}/main/resources/assets/midnightlib/lang/es_ar.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/fr_fr.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/ms_my.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/pt_br.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/ru_ru.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/tt_ru.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/uk_ua.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/zh_cn.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/zh_tw.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/lang/zlm_arab.json (100%) rename {common/src => src}/main/resources/assets/midnightlib/textures/gui/sprites/icon/explorer.png (100%) rename {common/src => src}/main/resources/assets/midnightlib/textures/gui/sprites/icon/midnightlib.png (100%) rename {common/src => src}/main/resources/assets/midnightlib/textures/gui/sprites/icon/reset.png (100%) rename {fabric/src => src}/main/resources/fabric.mod.json (76%) rename {common/src => src}/main/resources/midnightlib.mixins.json (100%) rename {common/src => src}/test/java/eu/midnightdust/test/MidnightLibExtras.java (100%) rename {common/src => src}/test/java/eu/midnightdust/test/config/MidnightConfigExample.java (100%) rename {common/src => src}/test/resources/assets/modid/lang/en_us.json (100%) rename {common/src => src}/test/resources/assets/modid/lang/es_ar.json (100%) create mode 100644 stonecutter.gradle.kts create mode 100644 versions/1.20.1-fabric/gradle.properties create mode 100644 versions/1.20.1-forge/gradle.properties create mode 100644 versions/1.21.1-fabric/gradle.properties create mode 100644 versions/1.21.1-neoforge/gradle.properties create mode 100644 versions/1.21.10-fabric/gradle.properties create mode 100644 versions/1.21.10-neoforge/gradle.properties create mode 100644 versions/1.21.5-fabric/gradle.properties create mode 100644 versions/1.21.5-neoforge/gradle.properties create mode 100644 versions/1.21.8-fabric/gradle.properties create mode 100644 versions/1.21.8-neoforge/gradle.properties diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/build.gradle b/build.gradle deleted file mode 100644 index e7c4b26..0000000 --- a/build.gradle +++ /dev/null @@ -1,72 +0,0 @@ -import groovy.json.JsonSlurper -import groovy.json.JsonOutput - -plugins { - id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.11-SNAPSHOT" apply false - id "me.shedaniel.unified-publishing" version "0.1.+" apply false - id 'com.github.johnrengelman.shadow' version '8.1.1' apply false -} - -architectury { - minecraft = rootProject.minecraft_version -} - -subprojects { - apply plugin: "dev.architectury.loom" - - dependencies { - minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" - mappings loom.officialMojangMappings() - } -} - -allprojects { - apply plugin: "java" - apply plugin: "architectury-plugin" - apply plugin: "maven-publish" - - archivesBaseName = rootProject.archives_base_name - version = rootProject.mod_version - group = rootProject.maven_group - - repositories { - // Add repositories to retrieve artifacts from in here. - // You should only use this when depending on other mods because - // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. - // See https://docs.gradle.org/current/userguide/declaring_repositories.html - // for more information about repositories. - } - - tasks.withType(JavaCompile) { - options.encoding = "UTF-8" - options.release = 21 - } - ext { - releaseChangelog = { - def changes = new StringBuilder() - changes << "## MidnightLib v$project.version for $project.minecraft_version\n[View the changelog](https://www.github.com/TeamMidnightDust/MidnightLib/commits/)" - def proc = "git log --max-count=1 --pretty=format:%s".execute() - proc.in.eachLine { line -> - def processedLine = line.toString() - if (!processedLine.contains("New translations") && !processedLine.contains("Merge") && !processedLine.contains("branch")) { - changes << "\n- ${processedLine.capitalize()}" - } - } - proc.waitFor() - return changes.toString() - } - } - processResources { - // Minify json resources - doLast { - fileTree(dir: outputs.files.asPath, include: "**/*.json").each { - File file -> file.text = JsonOutput.toJson(new JsonSlurper().parse(file)) - } - } - } - - java { - withSourcesJar() - } -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..ae9cf24 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,192 @@ +import java.util.* + +plugins { + id("dev.architectury.loom") + id("architectury-plugin") + id("me.modmuss50.mod-publish-plugin") + id("com.github.johnrengelman.shadow") +} + +val minecraft = stonecutter.current.version +val loader = loom.platform.get().name.lowercase() + +version = "${mod.version}+$minecraft" +group = mod.group +base { + archivesName.set("${mod.id}-$loader") +} + +//architectury.common(stonecutter.tree.branches.mapNotNull { +// if (stonecutter.current.project !in it) null +// else it.prop("loom.platform") +//}) +repositories { + maven("https://maven.neoforged.net/releases/") + + //modmenu + maven("https://maven.terraformersmc.com/") + //placeholder api (modmenu depencency) + maven("https://maven.nucleoid.xyz/") +} +dependencies { + minecraft("com.mojang:minecraft:$minecraft") + + if (loader == "fabric") { + modImplementation("net.fabricmc:fabric-loader:${mod.dep("fabric_loader")}") + modImplementation("com.terraformersmc:modmenu:${mod.dep("modmenu_version")}") + + //some features (like automatic resource loading from non vanilla namespaces) work only with fabric API installed + //for example translations from assets/modid/lang/en_us.json won't be working, same stuff with textures + //but we keep runtime only to not accidentally depend on fabric's api, because it doesn't exist in neo/forge + modImplementation("net.fabricmc.fabric-api:fabric-api:${mod.dep("fabric_version")}") + } + if (loader == "forge") { + "forge"("net.minecraftforge:forge:${minecraft}-${mod.dep("forge_loader")}") + } + if (loader == "neoforge") { + "neoForge"("net.neoforged:neoforge:${mod.dep("neoforge_loader")}") + } + mappings (loom.officialMojangMappings()) +} + +loom { + //accessWidenerPath = rootProject.file("src/main/resources/template.accesswidener") + + decompilers { + get("vineflower").apply { // Adds names to lambdas - useful for mixins + options.put("mark-corresponding-synthetics", "1") + } + } + if (loader == "forge") { + forge.mixinConfigs( + "template-common.mixins.json", + "template-forge.mixins.json", + ) + } +} + + +val localProperties = Properties() +val localPropertiesFile = rootProject.file("local.properties") +if (localPropertiesFile.exists()) { + localProperties.load(localPropertiesFile.inputStream()) +} +publishMods { + val modrinthToken = localProperties.getProperty("publish.modrinthToken", System.getenv("MODRINTH_TOKEN")) + val curseforgeToken = localProperties.getProperty("publish.curseforgeToken", System.getenv("CURSEFORGE_TOKEN")) + + + file = project.tasks.remapJar.get().archiveFile + dryRun = modrinthToken == null || curseforgeToken == null + + displayName = "${mod.name} ${loader.replaceFirstChar { it.uppercase() }} ${property("mod.mc_title")}-${mod.version}" + version = mod.version + changelog = rootProject.file("CHANGELOG.md").readText() + type = BETA + + modLoaders.add(loader) + + val targets = property("mod.mc_targets").toString().split(' ') + modrinth { + projectId = property("publish.modrinth").toString() + accessToken = modrinthToken + targets.forEach(minecraftVersions::add) + if (loader == "fabric") { + requires("fabric-api") + optional("modmenu") + } + } + + curseforge { + projectId = property("publish.curseforge").toString() + accessToken = curseforgeToken.toString() + targets.forEach(minecraftVersions::add) + if (loader == "fabric") { + requires("fabric-api") + optional("modmenu") + } + } +} + +java { + withSourcesJar() + val java = if (stonecutter.eval(minecraft, ">=1.20.5")) JavaVersion.VERSION_21 else JavaVersion.VERSION_17 + targetCompatibility = java + sourceCompatibility = java +} + +val shadowBundle: Configuration by configurations.creating { + isCanBeConsumed = false + isCanBeResolved = true +} + +tasks.shadowJar { + configurations = listOf(shadowBundle) + archiveClassifier = "dev-shadow" +} + +tasks.remapJar { + injectAccessWidener = true + input = tasks.shadowJar.get().archiveFile + archiveClassifier = null + dependsOn(tasks.shadowJar) +} + +tasks.jar { + archiveClassifier = "dev" +} + +val buildAndCollect = tasks.register("buildAndCollect") { + group = "build" + from(tasks.remapJar.get().archiveFile, tasks.remapSourcesJar.get().archiveFile) + into(rootProject.layout.buildDirectory.file("libs/${mod.version}/$loader")) + dependsOn("build") +} + +if (stonecutter.current.isActive) { + rootProject.tasks.register("buildActive") { + group = "project" + dependsOn(buildAndCollect) + } + + rootProject.tasks.register("runActive") { + group = "project" + dependsOn(tasks.named("runClient")) + } +} + +tasks.processResources { + properties( + listOf("fabric.mod.json"), + "id" to mod.id, + "name" to mod.name, + "version" to mod.version, + "minecraft" to mod.prop("mc_dep_fabric") + ) + properties( + listOf("META-INF/mods.toml", "pack.mcmeta"), + "id" to mod.id, + "name" to mod.name, + "version" to mod.version, + "minecraft" to mod.prop("mc_dep_forgelike") + ) + properties( + listOf("META-INF/neoforge.mods.toml", "pack.mcmeta"), + "id" to mod.id, + "name" to mod.name, + "version" to mod.version, + "minecraft" to mod.prop("mc_dep_forgelike") + ) +} + +tasks.build { + group = "versioned" + description = "Must run through 'chiseledBuild'" +} + + +stonecutter { + constants { + arrayOf("fabric", "neoforge", "forge").forEach { it -> put(it, loader == it) } + } +} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000..74dfa9a --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + `kotlin-dsl` + kotlin("jvm") version "2.0.20" +} + +repositories { + mavenCentral() +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/build-extensions.kt b/buildSrc/src/main/kotlin/build-extensions.kt new file mode 100644 index 0000000..35bfa98 --- /dev/null +++ b/buildSrc/src/main/kotlin/build-extensions.kt @@ -0,0 +1,33 @@ +import org.gradle.api.Project +import org.gradle.api.artifacts.dsl.RepositoryHandler +import org.gradle.kotlin.dsl.expand +import org.gradle.kotlin.dsl.maven +import org.gradle.language.jvm.tasks.ProcessResources +import java.util.* + +val Project.mod: ModData get() = ModData(this) +fun Project.prop(key: String): String? = findProperty(key)?.toString() +fun String.upperCaseFirst() = replaceFirstChar { if (it.isLowerCase()) it.uppercaseChar() else it } + +fun RepositoryHandler.strictMaven(url: String, alias: String, vararg groups: String) = exclusiveContent { + forRepository { maven(url) { name = alias } } + filter { groups.forEach(::includeGroup) } +} + +fun ProcessResources.properties(files: Iterable, vararg properties: Pair) { + for ((name, value) in properties) inputs.property(name, value) + filesMatching(files) { + expand(properties.toMap()) + } +} + +@JvmInline +value class ModData(private val project: Project) { + val id: String get() = requireNotNull(project.prop("mod.id")) { "Missing 'mod.id'" } + val name: String get() = requireNotNull(project.prop("mod.name")) { "Missing 'mod.name'" } + val version: String get() = requireNotNull(project.prop("mod.version")) { "Missing 'mod.version'" } + val group: String get() = requireNotNull(project.prop("mod.group")) { "Missing 'mod.group'" } + + fun prop(key: String) = requireNotNull(project.prop("mod.$key")) { "Missing 'mod.$key'" } + fun dep(key: String) = requireNotNull(project.prop("deps.$key")) { "Missing 'deps.$key'" } +} \ No newline at end of file diff --git a/common/build.gradle b/common/build.gradle deleted file mode 100644 index 115233a..0000000 --- a/common/build.gradle +++ /dev/null @@ -1,40 +0,0 @@ -plugins { - id 'java' -} - -architectury { - common(rootProject.enabled_platforms.split(",")) -} - -dependencies { - // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies - // Do NOT use other classes from fabric loader - modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" -} - -publishing { - publications { - mavenCommon(MavenPublication) { - artifactId = rootProject.archives_base_name - from components.java - } - } - - // 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. - } -} - -configurations { - testOutput.extendsFrom(testImplementation) -} - -tasks.register('testJar', Jar) { - from sourceSets.test.output - archiveClassifier = 'tests' -} - -artifacts { - testOutput testJar -} \ No newline at end of file diff --git a/common/src/main/java/eu/midnightdust/core/MidnightLib.java b/common/src/main/java/eu/midnightdust/core/MidnightLib.java deleted file mode 100644 index e533f39..0000000 --- a/common/src/main/java/eu/midnightdust/core/MidnightLib.java +++ /dev/null @@ -1,37 +0,0 @@ -package eu.midnightdust.core; - -import eu.midnightdust.core.config.MidnightLibConfig; -import eu.midnightdust.lib.config.AutoCommand; -import eu.midnightdust.lib.config.MidnightConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.swing.UIManager; -import net.minecraft.Util; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -public class MidnightLib { - public static List hiddenMods = new ArrayList<>(); - public static final String MOD_ID = "midnightlib"; - public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); - - public static void onInitializeClient() { - try { - if (Util.getPlatform() != Util.OS.OSX) { - System.setProperty("java.awt.headless", "false"); - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } - } catch (Exception | Error e) { LOGGER.error("Error setting system look and feel", e); } - MidnightLibConfig.init(MOD_ID, MidnightLibConfig.class); - } - public static void registerAutoCommand() { - MidnightConfig.configInstances.forEach((modid, config) -> { - for (Field field : config.configClass.getFields()) { - if (field.isAnnotationPresent(MidnightConfig.Entry.class) && !field.isAnnotationPresent(MidnightConfig.Client.class) && !field.isAnnotationPresent(MidnightConfig.Hidden.class)) - new AutoCommand(field, modid); - } - }); - } -} diff --git a/common/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java b/common/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java deleted file mode 100644 index 1707e3b..0000000 --- a/common/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java +++ /dev/null @@ -1,34 +0,0 @@ -package eu.midnightdust.lib.util; - -import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import dev.architectury.injectables.annotations.ExpectPlatform; -import java.nio.file.Path; -import net.minecraft.commands.CommandSourceStack; - -public class PlatformFunctions { - @ExpectPlatform - public static String getPlatformName() { - // Just throw an error, the content should get replaced at runtime. - throw new AssertionError(); - } - @ExpectPlatform - public static Path getConfigDirectory() { - // Just throw an error, the content should get replaced at runtime. - throw new AssertionError(); - } - @ExpectPlatform - public static boolean isClientEnv() { - // Just throw an error, the content should get replaced at runtime. - throw new AssertionError(); - } - @ExpectPlatform - public static boolean isModLoaded(String modid) { - // Just throw an error, the content should get replaced at runtime. - throw new AssertionError(); - } - @ExpectPlatform - public static void registerCommand(LiteralArgumentBuilder command) { - // Just throw an error, the content should get replaced at runtime. - throw new AssertionError(); - } -} diff --git a/fabric/build.gradle b/fabric/build.gradle deleted file mode 100644 index 2e4526c..0000000 --- a/fabric/build.gradle +++ /dev/null @@ -1,139 +0,0 @@ -plugins { - id 'com.github.johnrengelman.shadow' - id "me.shedaniel.unified-publishing" -} -repositories { - maven { url "https://maven.terraformersmc.com/releases" } -} - -architectury { - platformSetupLoomIde() - fabric() -} - -sourceSets { - test { - compileClasspath += main.compileClasspath - runtimeClasspath += main.runtimeClasspath - java { - srcDirs.add('src/test/java' as File) - } - resources { - srcDirs.add('src/test/resources' as File) - } - } -} - -loom { - runs { - testClient { - client() - configName = "Test Minecraft Client" - source sourceSets.test - } - testServer { - server() - configName = "Test Minecraft Server" - source sourceSets.test - } - } -} - -configurations { - common - shadowCommon // Don't use shadow from the shadow plugin since it *excludes* files. - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentFabric.extendsFrom common - archivesBaseName = rootProject.archives_base_name - version = rootProject.mod_version + "-" + project.name + "+" + rootProject.minecraft_version -} - -dependencies { - modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" - modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" - modCompileOnly("com.terraformersmc:modmenu:${rootProject.mod_menu_version}") - - common(project(path: ":common", configuration: "namedElements")) { transitive false } - shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } - - testImplementation common(project(path: ':common', configuration: 'testOutput')) -} - -processResources { - inputs.property "version", rootProject.version - - filesMatching("fabric.mod.json") { - expand "version": rootProject.version - } -} - -processTestResources { - inputs.property "version", rootProject.version - - filesMatching("fabric.mod.json") { - expand "version": rootProject.version - } -} - -shadowJar { - exclude "architectury.common.json" - - configurations = [project.configurations.shadowCommon] - archiveClassifier = "dev-shadow" -} - -remapJar { - input.set shadowJar.archiveFile - dependsOn shadowJar -} - -sourcesJar { - def commonSources = project(":common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } -} - -components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } -} - -unifiedPublishing { - project { - displayName = "MidnightLib $rootProject.version - Fabric $project.minecraft_version" - releaseType = "$project.release_type" - changelog = releaseChangelog() - gameVersions = [] - gameLoaders = ["fabric", "quilt"] - mainPublication remapJar - relations { - depends { - curseforge = "fabric-api" - modrinth = "fabric-api" - } - } - - var CURSEFORGE_TOKEN = project.findProperty("CURSEFORGE_TOKEN") ?: System.getenv("CURSEFORGE_TOKEN") - if (CURSEFORGE_TOKEN != null) { - curseforge { - token = CURSEFORGE_TOKEN - id = rootProject.curseforge_id - gameVersions.addAll "Java 21", project.minecraft_version - if (project.supported_versions != "") gameVersions.addAll project.supported_versions - } - } - - var MODRINTH_TOKEN = project.findProperty("MODRINTH_TOKEN") ?: System.getenv("MODRINTH_TOKEN") - if (MODRINTH_TOKEN != null) { - modrinth { - token = MODRINTH_TOKEN - id = rootProject.modrinth_id - version = rootProject.mod_version + "+" + rootProject.minecraft_version + "-" + project.name - gameVersions.addAll project.minecraft_version - if (project.supported_versions != "") gameVersions.addAll project.supported_versions - } - } - } -} \ No newline at end of file diff --git a/fabric/src/main/java/eu/midnightdust/fabric/core/MidnightLibFabric.java b/fabric/src/main/java/eu/midnightdust/fabric/core/MidnightLibFabric.java deleted file mode 100644 index b616bb5..0000000 --- a/fabric/src/main/java/eu/midnightdust/fabric/core/MidnightLibFabric.java +++ /dev/null @@ -1,15 +0,0 @@ -package eu.midnightdust.fabric.core; - -import eu.midnightdust.core.MidnightLib; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.DedicatedServerModInitializer; - -public class MidnightLibFabric implements DedicatedServerModInitializer, ClientModInitializer { - @Override - public void onInitializeClient() { - MidnightLib.onInitializeClient(); - MidnightLib.registerAutoCommand(); - } - @Override - public void onInitializeServer() {MidnightLib.registerAutoCommand();} -} diff --git a/fabric/src/main/java/eu/midnightdust/lib/config/AutoModMenu.java b/fabric/src/main/java/eu/midnightdust/lib/config/AutoModMenu.java deleted file mode 100644 index 56f914c..0000000 --- a/fabric/src/main/java/eu/midnightdust/lib/config/AutoModMenu.java +++ /dev/null @@ -1,27 +0,0 @@ -package eu.midnightdust.lib.config; - -import com.terraformersmc.modmenu.api.ConfigScreenFactory; -import com.terraformersmc.modmenu.api.ModMenuApi; -import eu.midnightdust.core.MidnightLib; -import eu.midnightdust.core.config.MidnightLibConfig; - -import java.util.HashMap; -import java.util.Map; - -public class AutoModMenu implements ModMenuApi { - - @Override - public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> MidnightLibConfig.getScreen(parent,"midnightlib"); - } - - @Override - public Map> getProvidedConfigScreenFactories() { - HashMap> map = new HashMap<>(); - MidnightConfig.configInstances.forEach((modid, cClass) -> { - if (!MidnightLib.hiddenMods.contains(modid)) - map.put(modid, parent -> MidnightConfig.getScreen(parent, modid)); - }); - return map; - } -} \ No newline at end of file diff --git a/fabric/src/main/java/eu/midnightdust/lib/util/fabric/PlatformFunctionsImpl.java b/fabric/src/main/java/eu/midnightdust/lib/util/fabric/PlatformFunctionsImpl.java deleted file mode 100644 index f0bdfb8..0000000 --- a/fabric/src/main/java/eu/midnightdust/lib/util/fabric/PlatformFunctionsImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package eu.midnightdust.lib.util.fabric; - -import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import eu.midnightdust.lib.util.PlatformFunctions; -import net.fabricmc.api.EnvType; -import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.commands.CommandSourceStack; -import java.nio.file.Path; - -public class PlatformFunctionsImpl { - public static String getPlatformName() { - return "fabric"; - } - /** - * This is our actual method to {@link PlatformFunctions#getConfigDirectory()}. - */ - public static Path getConfigDirectory() { - return FabricLoader.getInstance().getConfigDir(); - } - public static boolean isClientEnv() { - return FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT; - } - public static boolean isModLoaded(String modid) { - return FabricLoader.getInstance().isModLoaded(modid); - } - public static void registerCommand(LiteralArgumentBuilder command) { - CommandRegistrationCallback.EVENT.register((dispatcher, dedicated, registrationEnvironment) -> dispatcher.register(command)); - } -} diff --git a/fabric/src/test/java/eu/midnightdust/test/fabric/MLExampleFabric.java b/fabric/src/test/java/eu/midnightdust/test/fabric/MLExampleFabric.java deleted file mode 100644 index 4af42a1..0000000 --- a/fabric/src/test/java/eu/midnightdust/test/fabric/MLExampleFabric.java +++ /dev/null @@ -1,12 +0,0 @@ -package eu.midnightdust.test.fabric; - -import eu.midnightdust.test.config.MidnightConfigExample; -import eu.midnightdust.lib.config.MidnightConfig; -import net.fabricmc.api.ModInitializer; - -public class MLExampleFabric implements ModInitializer { - @Override - public void onInitialize() { - MidnightConfig.init("modid", MidnightConfigExample.class); - } -} diff --git a/fabric/src/test/resources/fabric.mod.json b/fabric/src/test/resources/fabric.mod.json deleted file mode 100644 index 3f9c64d..0000000 --- a/fabric/src/test/resources/fabric.mod.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "schemaVersion": 1, - "id": "modid", - "version": "${version}", - - "name": "MidnightLib Test Mod", - "description": "Example Mod for Team MidnightDust's mods.", - "authors": [ "MidnightDust" ], - - "license": "CC0", - "icon": "assets/midnightlib/icon.png", - - "environment": "*", - "entrypoints": { - "main": [ - "eu.midnightdust.test.fabric.MLExampleFabric" - ] - }, - "depends": { - "fabric-resource-loader-v0": "*", - "midnightlib": ">=1.6.0" - } -} diff --git a/gradle.properties b/gradle.properties index f2f1f95..67662e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,37 @@ -org.gradle.jvmargs=-Xmx3172M +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx3G +#org.gradle.parallel=true +org.gradle.caching=false +org.gradle.caching.debug=false +org.gradle.parallel=false +#org.gradle.configureondemand=true -minecraft_version=1.21.10 -supported_versions=1.21.9 -yarn_mappings=1.21.10+build.2 -enabled_platforms=fabric,neoforge +# Mod properties +mod.version=1.8.3 +mod.group=eu.midnightdust +mod.id=midnightlib +mod.name=MidnightLib -archives_base_name=midnightlib -mod_version=1.8.3 -maven_group=eu.midnightdust -release_type=release -curseforge_id=488090 -modrinth_id=codAaoxh +# Used for the mod metadata +mod.mc_dep_fabric=[VERSIONED] +mod.mc_dep_forgelike=[VERSIONED] +# Used for the release title. I.e. '1.20.x' +mod.mc_title=[VERSIONED] +# Space separated versions for publishing. I.e. '1.20, 1.20.1' +mod.mc_targets=[VERSIONED] -fabric_loader_version=0.17.3 -fabric_api_version=0.138.0+1.21.10 +# Mod setup +deps.fabric_loader=0.17.3 +deps.fabric_version=[VERSIONED] -neoforge_version=21.10.47-beta -yarn_mappings_patch_neoforge_version = 1.21+build.4 +deps.forge_loader=[VERSIONED] +deps.neoforge_loader=[VERSIONED] +deps.neoforge_patch=[VERSIONED] -mod_menu_version = 9.0.0 \ No newline at end of file +# Mod dependencies +deps.yarn_build=[VERSIONED] +deps.modmenu_version=[VERSIONED] + +# Publishing +publish.modrinth=codAaoxh +publish.curseforge=488090 \ No newline at end of file diff --git a/neoforge/build.gradle b/neoforge/build.gradle deleted file mode 100644 index 9ed0299..0000000 --- a/neoforge/build.gradle +++ /dev/null @@ -1,167 +0,0 @@ -plugins { - id 'com.github.johnrengelman.shadow' - id "me.shedaniel.unified-publishing" -} - -repositories { - maven { - name = 'NeoForged' - url = 'https://maven.neoforged.net/releases' - } -} - - -architectury { - platformSetupLoomIde() - neoForge { - platformPackage = "neoforge" - } -} - -sourceSets { - test { - compileClasspath += main.compileClasspath - runtimeClasspath += main.runtimeClasspath - java { - srcDirs.add('src/test/java' as File) - } - resources { - srcDirs.add('src/test/resources' as File) - } - } -} - -loom { - accessWidenerPath = project(":common").loom.accessWidenerPath - - runs { - testClient { - client() - name = "Test Minecraft Client" - - mods { - create('midnightlib') { - sourceSet sourceSets.main - } - create('modid') { // test mod - sourceSet sourceSets.test - } - } - source sourceSets.test - } - testServer { - server() - name = "Test Minecraft Server" - - mods { - create('midnightlib') { - sourceSet sourceSets.main - } - create('modid') { // test mod - sourceSet sourceSets.test - } - } - source sourceSets.test - } - } - -} - -configurations { - common { - canBeResolved = true - canBeConsumed = false - } - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentNeoForge.extendsFrom common - - // Files in this configuration will be bundled into your mod using the Shadow plugin. - // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files. - shadowBundle { - canBeResolved = true - canBeConsumed = false - } - archivesBaseName = rootProject.archives_base_name - version = rootProject.mod_version + "-" + project.name + "+" + rootProject.minecraft_version -} - -dependencies { - neoForge "net.neoforged:neoforge:$rootProject.neoforge_version" - - common(project(path: ':common', configuration: 'namedElements')) { transitive false } - shadowBundle project(path: ':common', configuration: 'transformProductionNeoForge') - -// testImplementation common(project(path: ':common', configuration: 'namedElements')) { transitive false } - testImplementation common(project(path: ':common', configuration: 'testOutput')) { transitive false } - testImplementation sourceSets.main.output -} - -processResources { - inputs.property 'version', rootProject.version - - filesMatching('META-INF/neoforge.mods.toml') { - expand version: rootProject.version - } -} - -processTestResources { - inputs.property 'version', rootProject.version - - filesMatching('META-INF/neoforge.mods.toml') { - expand version: rootProject.version - } -} - -shadowJar { - configurations = [project.configurations.shadowBundle] - archiveClassifier = 'dev-shadow' -} - -remapJar { - input.set shadowJar.archiveFile -} - -sourcesJar { - def commonSources = project(":common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } -} - -components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } -} - -unifiedPublishing { - project { - displayName = "MidnightLib $rootProject.version - NeoForge $project.minecraft_version" - releaseType = "$project.release_type" - changelog = releaseChangelog() - gameVersions = [] - gameLoaders = ["neoforge"] - mainPublication remapJar - - var CURSEFORGE_TOKEN = project.findProperty("CURSEFORGE_TOKEN") ?: System.getenv("CURSEFORGE_TOKEN") - if (CURSEFORGE_TOKEN != null) { - curseforge { - token = CURSEFORGE_TOKEN - id = rootProject.curseforge_id - gameVersions.addAll "Java 21", project.minecraft_version - if (project.supported_versions != "") gameVersions.addAll project.supported_versions - } - } - - var MODRINTH_TOKEN = project.findProperty("MODRINTH_TOKEN") ?: System.getenv("MODRINTH_TOKEN") - if (MODRINTH_TOKEN != null) { - modrinth { - token = MODRINTH_TOKEN - id = rootProject.modrinth_id - version = rootProject.mod_version + "+" + rootProject.minecraft_version + "-" + project.name - gameVersions.addAll project.minecraft_version - if (project.supported_versions != "") gameVersions.addAll project.supported_versions - } - } - } -} \ No newline at end of file diff --git a/neoforge/gradle.properties b/neoforge/gradle.properties deleted file mode 100644 index 2914393..0000000 --- a/neoforge/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -loom.platform=neoforge \ No newline at end of file diff --git a/neoforge/src/main/java/eu/midnightdust/lib/util/neoforge/PlatformFunctionsImpl.java b/neoforge/src/main/java/eu/midnightdust/lib/util/neoforge/PlatformFunctionsImpl.java deleted file mode 100644 index 026b70e..0000000 --- a/neoforge/src/main/java/eu/midnightdust/lib/util/neoforge/PlatformFunctionsImpl.java +++ /dev/null @@ -1,33 +0,0 @@ -package eu.midnightdust.lib.util.neoforge; - -import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import eu.midnightdust.lib.util.PlatformFunctions; -import net.minecraft.commands.CommandSourceStack; -import net.neoforged.fml.ModList; -import net.neoforged.fml.loading.FMLEnvironment; -import net.neoforged.fml.loading.FMLPaths; - -import java.nio.file.Path; - -import static eu.midnightdust.neoforge.MidnightLibNeoForge.commands; - -public class PlatformFunctionsImpl { - public static String getPlatformName() { - return "neoforge"; - } - /** - * This is our actual method to {@link PlatformFunctions#getConfigDirectory()}. - */ - public static Path getConfigDirectory() { - return FMLPaths.CONFIGDIR.get(); - } - public static boolean isClientEnv() { - return FMLEnvironment.getDist().isClient(); - } - public static boolean isModLoaded(String modid) { - return ModList.get().isLoaded(modid); - } - public static void registerCommand(LiteralArgumentBuilder command) { - commands.add(command); - } -} diff --git a/neoforge/src/main/java/eu/midnightdust/neoforge/MidnightLibNeoForge.java b/neoforge/src/main/java/eu/midnightdust/neoforge/MidnightLibNeoForge.java deleted file mode 100644 index 4ffaec0..0000000 --- a/neoforge/src/main/java/eu/midnightdust/neoforge/MidnightLibNeoForge.java +++ /dev/null @@ -1,52 +0,0 @@ -package eu.midnightdust.neoforge; - -import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import eu.midnightdust.core.MidnightLib; -import eu.midnightdust.lib.config.MidnightConfig; -import net.minecraft.commands.CommandSourceStack; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.fml.ModList; -import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.fml.common.Mod; -import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; -import net.neoforged.fml.loading.FMLEnvironment; -import net.neoforged.neoforge.client.gui.IConfigScreenFactory; -import net.neoforged.neoforge.event.RegisterCommandsEvent; - -import java.util.ArrayList; -import java.util.ConcurrentModificationException; -import java.util.List; - -@Mod("midnightlib") -public class MidnightLibNeoForge { - public static List> commands = new ArrayList<>(); - - public MidnightLibNeoForge() { - if (FMLEnvironment.getDist() == Dist.CLIENT) MidnightLib.onInitializeClient(); - } - - @EventBusSubscriber(modid = "midnightlib", value = Dist.CLIENT) - public static class MidnightLibBusEvents { - @SubscribeEvent - public static void onPostInit(FMLClientSetupEvent event) { - ModList.get().forEachModContainer((modid, modContainer) -> { - if (MidnightConfig.configInstances.containsKey(modid) && !MidnightLib.hiddenMods.contains(modid)) { - modContainer.registerExtensionPoint(IConfigScreenFactory.class, (minecraftClient, screen) -> MidnightConfig.getScreen(screen, modid)); - } - }); - MidnightLib.registerAutoCommand(); - } - } - - @EventBusSubscriber(modid = "midnightlib") - public static class MidnightLibEvents { - @SubscribeEvent - public static void registerCommands(RegisterCommandsEvent event) { - try { - commands.forEach(command -> event.getDispatcher().register(command)); - } - catch (ConcurrentModificationException ignored) {} - } - } -} diff --git a/neoforge/src/main/resources/midnightlib.png b/neoforge/src/main/resources/midnightlib.png deleted file mode 100644 index d31b4c46823b2536b67007b68606f8b82c806a08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2801 zcmd5-dpOkDAD)>Q%ov2&+-aJy%(|3lv1VMRVbU~4xvX}EtlZWNa?3SJqS~yIOPQg_ zZ6dcs#$6>s2_d(p5O&-dmwsoT{qMKG|Ms8X`99~I&w0P+^SAo%BIz^tyWPNUIeWMmo|8mgtp#TyV76x)l zOG`m;?AWpYA}J~=0!UO;6p#ZOfEHkgiHTve*$WE`2m~TEHMOUwCnF;xIXRh3CRbHe z6&4oe<>dhoqyYY*p&`IOH8oXRTl?zOtCW-!-~O>5s{KzfRBsX%Sjv*mJz5vJ)~=NQXJ`Ldv(je?!EkvZQ2ZPV+BKV<E?B0GbTi##1o2XaYn&}+3VR`)b%gp@x zf}x$Ir9b<&&8+=Hd+)8U?QHROJNc{gf{yW#-pN%S`|X>smY17LJJajq{X^RyKMZcq zjZTi%56mo1404x0bZmQa`CAi<{Pk(U+9&?%@Y>g%nRWh9%TU+yE`Md4|8&IXTekxQ z0)Irb!cm=C`qLeq6rE*b=>;=~{qdO()TN;K`(~fqu1bGys3m(1J<~9^J9aem^ZnZO*JcK1va@&V#*Jk>-qJ`) zp_PVz=t^ma=`_eSc`eG~p;_KsX-rlz?O|5y$LPR3d#|*u@Z=LSI>PDx0~U<@gcii> z%tuJO`_j=vEUE%F@g(sqE9fQS91~rg*pw!o9?{b$6{6H9n+4g<4kPw zl99J0()G5!nYz9}Fo|N0cStH`VRF4MOPbDL(lsj_>Mfn{AwR{_5LPqLCbmHQajBJL zwf(D}M0iL3_d-z;FqtQ$KvhqhMV;I;?F~|eD`E!aPn}eEOd_2b6ymH!?n$`Z9kg)r zCcZ@8kdcyy5;Y_#<5uiGP%WKee-!yTzvU8e-8|+ydVJjQN(1x5eFZ&sT@9u}FR_eh zPtV76yKSVvG3lz~Ss6u`Ig5LlGm4#GLW1^S$CFxC#3h@t@5Fat`X_rF_vG`lfAVpa zpdT_Bw&_}@2J6G*ed62C-4(0T_ev4#L*z){n*Z>YmXnbvGs7L2A|5k)k<`22Mp{C@ zkCi+T{HZcwpFCTeLBhppYs9uK@GVH&&BTOw5~aPvbP?8`eElvhgc=u)Pa`Eb2U&d2 zeXXW+h3UM2Epwr1yMCH`3j1R1dA|~MSJMd3J7t-Afm?HH-S_31E4u9ny7oH9Cbh(y zeb9gP-1p4**UwK5a3UV1dRSAH1}R*=MlKxU0?qVcPsou+tWp=b(8I8Il|89HuJ+hg zTK*>ER%a`FaFbYQELv$}S+s2Hf^hA|w-iHE>rnyZ)N}~hpNH6Bw5RMBNpJ2uN;JO6 zIM7&Un0?QIu)hlSN?5%~!2CRPTKI%7Yr?c~Zhhi&=V`GB{W{?r8GG%#n{Iy2fxc(W z8b>ii17YSPveiL4p3OPrF*?4>?Sl}aSSt^ju5<+ovk{WF7041FMIZMJwwLapm7jXwV%dyklz%FQ?qKAt+6(Xr6^>Tz-Ct@mj>$eqAEB7()VFKANcr^A^5Qj77$FQFJc30c&s7ihSVS0(5 z(WTh!|1lD+i>jh}pVK&o;Jq!edY*Z(E^FZ1$%^$Mp+wvB<@Uc@}NNvirsT5qH zr9dLr81j|8i9{%ib)IfCkbO}Dk(hgU30ViR9ccPO;3le$_e2zJzGHZ(-A?-X@Bv9a z%L4N$ER41HZ0?Cc!#}hYPwOVGiD+IpFSFb2?F;QReYP2^g?q;xN8f7S)Qi{{zqwc` zse-%cUm$toNR!*8^OppN46kKfINd6nU#Z)yxh|z(Tox5tIhE6U^t&1ll`fuc&8HkEdoL+%6~^lnYe+^ z%Bw3|3gbcK-)I|sfE=42%$felT4k`-X!7U65S=e!VX*f0eYVU-4$6O51QQMat?P_?@Xmm zdYWxHT=Zlgwp+Nf-%MSaO+i)lF=Lu56A(wk?^Ldj8a>fqx|an|L(Yd-QJ*L_cU&8G zI80wYl)0f)GGHl!ojC5%ip2#c{qEx%x{L?%DV`&wY^0@!`1K59 command) { - CommandRegistrationCallback.EVENT.register((dispatcher, dedicated, registrationEnvironment) -> dispatcher.register(command)); - } -} diff --git a/quilt/src/main/java/eu/midnightdust/quilt/core/MidnightLibClientQuilt.java b/quilt/src/main/java/eu/midnightdust/quilt/core/MidnightLibClientQuilt.java deleted file mode 100644 index 6899896..0000000 --- a/quilt/src/main/java/eu/midnightdust/quilt/core/MidnightLibClientQuilt.java +++ /dev/null @@ -1,14 +0,0 @@ -package eu.midnightdust.quilt.core; - -import eu.midnightdust.core.MidnightLibClient; -import eu.midnightdust.lib.util.MidnightColorUtil; -import org.quiltmc.loader.api.ModContainer; -import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer; -import org.quiltmc.qsl.lifecycle.api.client.event.ClientTickEvents; - -public class MidnightLibClientQuilt implements ClientModInitializer { - @Override - public void onInitializeClient(ModContainer mod) { - MidnightLibClient.onInitializeClient(); - } -} diff --git a/quilt/src/main/java/eu/midnightdust/quilt/core/MidnightLibServerQuilt.java b/quilt/src/main/java/eu/midnightdust/quilt/core/MidnightLibServerQuilt.java deleted file mode 100644 index e37654c..0000000 --- a/quilt/src/main/java/eu/midnightdust/quilt/core/MidnightLibServerQuilt.java +++ /dev/null @@ -1,12 +0,0 @@ -package eu.midnightdust.quilt.core; - -import eu.midnightdust.core.MidnightLibServer; -import org.quiltmc.loader.api.ModContainer; -import org.quiltmc.qsl.base.api.entrypoint.server.DedicatedServerModInitializer; - -public class MidnightLibServerQuilt implements DedicatedServerModInitializer { - @Override - public void onInitializeServer(ModContainer mod) { - MidnightLibServer.onInitializeServer(); - } -} diff --git a/quilt/src/main/resources/quilt.mod.json b/quilt/src/main/resources/quilt.mod.json deleted file mode 100644 index 7954ae7..0000000 --- a/quilt/src/main/resources/quilt.mod.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "schema_version": 1, - "quilt_loader": { - "group": "${group}", - "id": "midnightlib", - "version": "${version}", - "intermediate_mappings": "net.fabricmc:intermediary", - "entrypoints": { - "client_init": [ - "eu.midnightdust.quilt.core.MidnightLibClientQuilt" - ], - "server_init": [ - "eu.midnightdust.quilt.core.MidnightLibServerQuilt" - ], - "modmenu": [ - "eu.midnightdust.lib.config.AutoModMenu" - ] - }, - "depends": [ - { - "id": "quilt_loader", - "version": "*" - }, - { - "id": "quilt_base", - "version": "*" - }, - { - "id": "minecraft", - "version": ">=1.19.4" - } - ], - "metadata": { - "name": "MidnightLib (Quilt)", - "description": "Common Library for Team MidnightDust's mods. Provides a config api, automatic integration with other mods, common utils, and cosmetics.", - "license": "MIT", - "environment": "*", - "contributors": { - "Motschen": "Author", - "TeamMidnightDust": "Mascot" - }, - "contact": { - "email": "mail@midnightdust.eu", - "homepage": "https://modrinth.com/mod/midnightlib", - "issues": "https://github.com/TeamMidnightDust/MidnightLib/issues", - "sources": "https://github.com/TeamMidnightDust/MidnightLib" - }, - "icon": "assets/midnightlib/icon.png" - } - }, - "mixin": [ - "midnightlib.mixins.json" - ], - "modmenu": { - "links": { - "modmenu.discord": "https://discord.midnightdust.eu/", - "modmenu.website": "https://www.midnightdust.eu/", - "midnightlib.curseforge": "https://www.curseforge.com/minecraft/mc-mods/midnightlib", - "midnightlib.modrinth": "https://modrinth.com/mod/midnightlib", - "midnightlib.wiki": "https://github.com/TeamMidnightDust/MidnightLib/wiki" - }, - "badges": [ "library" ] - } -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index eb1c254..0000000 --- a/settings.gradle +++ /dev/null @@ -1,15 +0,0 @@ -pluginManagement { - repositories { - maven { url "https://maven.fabricmc.net/" } - maven { url "https://maven.architectury.dev/" } - maven { url "https://maven.neoforged.net/releases" } - gradlePluginPortal() - } -} - -include("common") -include("fabric") -include("neoforge") -//include("quilt") - -rootProject.name = "midnightlib" \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..4f9d56a --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,33 @@ +pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + maven("https://maven.fabricmc.net/") + maven("https://maven.architectury.dev") + maven("https://maven.minecraftforge.net") + maven("https://maven.neoforged.net/releases/") + maven("https://maven.kikugie.dev/snapshots") + } +} + +plugins { + id("dev.kikugie.stonecutter") version "0.7" +} + +stonecutter { + centralScript = "build.gradle.kts" + kotlinController = true + shared { + fun mc(loader: String, vararg versions: String) { + for (version in versions) vers("$version-$loader", version) + } + //i would recommend to use neoforge for mc > 1.20.1, i haven't tested template for forge on versions higher than that + mc("fabric","1.20.1", "1.21.1", "1.21.5", "1.21.8", "1.21.10") + mc("forge","1.20.1") + //WARNING: neoforge uses mods.toml instead of neoforge.mods.toml for versions 1.20.4 (?) and earlier + mc("neoforge", "1.21.1", "1.21.5", "1.21.8", "1.21.10") + } + create(rootProject) +} + +rootProject.name = "MidnightLib" \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/core/MidnightLib.java b/src/main/java/eu/midnightdust/core/MidnightLib.java new file mode 100644 index 0000000..efe0eaa --- /dev/null +++ b/src/main/java/eu/midnightdust/core/MidnightLib.java @@ -0,0 +1,125 @@ +package eu.midnightdust.core; + +import eu.midnightdust.core.config.MidnightLibConfig; +import eu.midnightdust.lib.config.AutoCommand; +import eu.midnightdust.lib.config.MidnightConfig; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.swing.UIManager; +import net.minecraft.Util; +import java.lang.reflect.Field; +import java.util.ArrayList; + +import java.util.List; + +//? if fabric { +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.api.DedicatedServerModInitializer; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; + +import java.util.HashMap; +import java.util.Map; + +public class MidnightLib implements DedicatedServerModInitializer, ClientModInitializer, ModMenuApi { +//?} else if neoforge { +/*import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import eu.midnightdust.lib.util.PlatformFunctions; +import net.minecraft.commands.CommandSourceStack; + +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.ModList; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; +import net.neoforged.neoforge.event.RegisterCommandsEvent; + +import java.util.ConcurrentModificationException; + +@Mod("midnightlib") +public class MidnightLib { +*///?} + public static List hiddenMods = new ArrayList<>(); + public static final String MOD_ID = "midnightlib"; + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + + public void onInitializeClient() { + try { + if (Util.getPlatform() != Util.OS.OSX) { + System.setProperty("java.awt.headless", "false"); + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } + } catch (Exception | Error e) { LOGGER.error("Error setting system look and feel", e); } + MidnightLibConfig.init(MOD_ID, MidnightLibConfig.class); + } + + public static void registerAutoCommand() { + MidnightConfig.configInstances.forEach((modid, config) -> { + for (Field field : config.configClass.getFields()) { + if (field.isAnnotationPresent(MidnightConfig.Entry.class) && !field.isAnnotationPresent(MidnightConfig.Client.class) && !field.isAnnotationPresent(MidnightConfig.Hidden.class)) + new AutoCommand(field, modid); + } + }); + } + + //? if fabric { + public void onInitializeServer() { + registerAutoCommand(); + } + + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return parent -> MidnightLibConfig.getScreen(parent,"midnightlib"); + } + + @Override + public Map> getProvidedConfigScreenFactories() { + HashMap> map = new HashMap<>(); + MidnightConfig.configInstances.forEach((modid, cClass) -> { + if (!MidnightLib.hiddenMods.contains(modid)) + map.put(modid, parent -> MidnightConfig.getScreen(parent, modid)); + }); + return map; + } + //?} + + + + /*? if neoforge {*/ + + /*public static List> commands = new ArrayList<>(); + + public MidnightLib() { + if (PlatformFunctions.isClientEnv()) this.onInitializeClient(); + } + + @EventBusSubscriber(modid = "midnightlib", value = Dist.CLIENT) + public static class MidnightLibBusEvents { + @SubscribeEvent + public static void onPostInit(FMLClientSetupEvent event) { + ModList.get().forEachModContainer((modid, modContainer) -> { + if (MidnightConfig.configInstances.containsKey(modid) && !MidnightLib.hiddenMods.contains(modid)) { + modContainer.registerExtensionPoint(IConfigScreenFactory.class, (minecraftClient, screen) -> MidnightConfig.getScreen(screen, modid)); + } + }); + MidnightLib.registerAutoCommand(); + } + } + + @EventBusSubscriber(modid = "midnightlib") + public static class MidnightLibEvents { + @SubscribeEvent + public static void registerCommands(RegisterCommandsEvent event) { + try { + commands.forEach(command -> event.getDispatcher().register(command)); + } + catch (ConcurrentModificationException ignored) {} + } + } + *///?} +} diff --git a/common/src/main/java/eu/midnightdust/core/config/MidnightLibConfig.java b/src/main/java/eu/midnightdust/core/config/MidnightLibConfig.java similarity index 100% rename from common/src/main/java/eu/midnightdust/core/config/MidnightLibConfig.java rename to src/main/java/eu/midnightdust/core/config/MidnightLibConfig.java diff --git a/common/src/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java b/src/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java similarity index 100% rename from common/src/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java rename to src/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java diff --git a/common/src/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java b/src/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java similarity index 100% rename from common/src/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java rename to src/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java diff --git a/common/src/main/java/eu/midnightdust/lib/config/AutoCommand.java b/src/main/java/eu/midnightdust/lib/config/AutoCommand.java similarity index 97% rename from common/src/main/java/eu/midnightdust/lib/config/AutoCommand.java rename to src/main/java/eu/midnightdust/lib/config/AutoCommand.java index 58bb91c..5ebe96e 100644 --- a/common/src/main/java/eu/midnightdust/lib/config/AutoCommand.java +++ b/src/main/java/eu/midnightdust/lib/config/AutoCommand.java @@ -1,7 +1,6 @@ package eu.midnightdust.lib.config; import com.mojang.brigadier.arguments.*; -import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import eu.midnightdust.lib.config.MidnightConfig.Entry; import eu.midnightdust.lib.util.PlatformFunctions; @@ -12,8 +11,6 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; -import static eu.midnightdust.lib.config.MidnightConfig.Entry; - public class AutoCommand { final static String VALUE = "value"; final Field field; diff --git a/common/src/main/java/eu/midnightdust/lib/config/ButtonEntry.java b/src/main/java/eu/midnightdust/lib/config/ButtonEntry.java similarity index 100% rename from common/src/main/java/eu/midnightdust/lib/config/ButtonEntry.java rename to src/main/java/eu/midnightdust/lib/config/ButtonEntry.java diff --git a/common/src/main/java/eu/midnightdust/lib/config/EntryInfo.java b/src/main/java/eu/midnightdust/lib/config/EntryInfo.java similarity index 100% rename from common/src/main/java/eu/midnightdust/lib/config/EntryInfo.java rename to src/main/java/eu/midnightdust/lib/config/EntryInfo.java diff --git a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java b/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java similarity index 100% rename from common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java rename to src/main/java/eu/midnightdust/lib/config/MidnightConfig.java diff --git a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfigListWidget.java b/src/main/java/eu/midnightdust/lib/config/MidnightConfigListWidget.java similarity index 100% rename from common/src/main/java/eu/midnightdust/lib/config/MidnightConfigListWidget.java rename to src/main/java/eu/midnightdust/lib/config/MidnightConfigListWidget.java diff --git a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java b/src/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java similarity index 100% rename from common/src/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java rename to src/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java diff --git a/common/src/main/java/eu/midnightdust/lib/config/MidnightSliderWidget.java b/src/main/java/eu/midnightdust/lib/config/MidnightSliderWidget.java similarity index 100% rename from common/src/main/java/eu/midnightdust/lib/config/MidnightSliderWidget.java rename to src/main/java/eu/midnightdust/lib/config/MidnightSliderWidget.java diff --git a/common/src/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java b/src/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java similarity index 100% rename from common/src/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java rename to src/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java diff --git a/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java b/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java new file mode 100644 index 0000000..b7128df --- /dev/null +++ b/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java @@ -0,0 +1,60 @@ +package eu.midnightdust.lib.util; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import java.nio.file.Path; + +import net.minecraft.commands.CommandSourceStack; + +//? if fabric { +import net.fabricmc.api.EnvType; +import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; +import net.fabricmc.loader.api.FabricLoader; +//?} +//? if neoforge { +/*import eu.midnightdust.core.MidnightLib; +import net.neoforged.fml.ModList; +import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.fml.loading.FMLPaths; +*///?} + +public class PlatformFunctions { + //? if fabric { + public static String getPlatformName() { + return "fabric"; + } + public static Path getConfigDirectory() { + return FabricLoader.getInstance().getConfigDir(); + } + public static boolean isClientEnv() { + return FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT; + } + public static boolean isModLoaded(String modid) { + return FabricLoader.getInstance().isModLoaded(modid); + } + public static void registerCommand(LiteralArgumentBuilder command) { + CommandRegistrationCallback.EVENT.register((dispatcher, dedicated, registrationEnvironment) -> dispatcher.register(command)); + } + //?} else if neoforge { + /*public static String getPlatformName() { + return "neoforge"; + } + public static Path getConfigDirectory() { + return FMLPaths.CONFIGDIR.get(); + } + public static boolean isClientEnv() { + //? if >= 1.21.9 { + return FMLEnvironment.getDist().isClient(); + //?} else { + // return FMLEnvironment.dist.isClient(); + //?} + } + public static boolean isModLoaded(String modid) { + return ModList.get().isLoaded(modid); + } + public static void registerCommand(LiteralArgumentBuilder command) { + MidnightLib.commands.add(command); + } + *///?} else if forge { + // + //?} +} diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml similarity index 93% rename from neoforge/src/main/resources/META-INF/neoforge.mods.toml rename to src/main/resources/META-INF/neoforge.mods.toml index 0887a3c..239724a 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -6,7 +6,7 @@ license = "MIT License" [[mods]] modId = "midnightlib" version = "${version}" -displayName = "MidnightLib" +displayName = "${name}" logoFile = "midnightlib.png" authors = "TeamMidnightDust, Motschen" description = ''' diff --git a/common/src/main/resources/architectury.common.json b/src/main/resources/architectury.common.json similarity index 100% rename from common/src/main/resources/architectury.common.json rename to src/main/resources/architectury.common.json diff --git a/common/src/main/resources/assets/midnightlib/icon.png b/src/main/resources/assets/midnightlib/icon.png similarity index 100% rename from common/src/main/resources/assets/midnightlib/icon.png rename to src/main/resources/assets/midnightlib/icon.png diff --git a/common/src/main/resources/assets/midnightlib/lang/de_de.json b/src/main/resources/assets/midnightlib/lang/de_de.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/de_de.json rename to src/main/resources/assets/midnightlib/lang/de_de.json diff --git a/common/src/main/resources/assets/midnightlib/lang/en_us.json b/src/main/resources/assets/midnightlib/lang/en_us.json similarity index 89% rename from common/src/main/resources/assets/midnightlib/lang/en_us.json rename to src/main/resources/assets/midnightlib/lang/en_us.json index cfc202e..4568ff4 100755 --- a/common/src/main/resources/assets/midnightlib/lang/en_us.json +++ b/src/main/resources/assets/midnightlib/lang/en_us.json @@ -8,7 +8,6 @@ "midnightlib.modrinth":"Modrinth", "midnightlib.curseforge":"CurseForge", "midnightlib.wiki":"Wiki", - "modmenu.summaryTranslation.midnightlib": "Common Library for easy configuration.", "midnightconfig.colorChooser.title": "Choose a color", "midnightconfig.action.list_index": "Editing list at index %s", "midnightconfig.action.color_chooser": "Open color chooser", diff --git a/common/src/main/resources/assets/midnightlib/lang/es_ar.json b/src/main/resources/assets/midnightlib/lang/es_ar.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/es_ar.json rename to src/main/resources/assets/midnightlib/lang/es_ar.json diff --git a/common/src/main/resources/assets/midnightlib/lang/fr_fr.json b/src/main/resources/assets/midnightlib/lang/fr_fr.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/fr_fr.json rename to src/main/resources/assets/midnightlib/lang/fr_fr.json diff --git a/common/src/main/resources/assets/midnightlib/lang/ms_my.json b/src/main/resources/assets/midnightlib/lang/ms_my.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/ms_my.json rename to src/main/resources/assets/midnightlib/lang/ms_my.json diff --git a/common/src/main/resources/assets/midnightlib/lang/pt_br.json b/src/main/resources/assets/midnightlib/lang/pt_br.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/pt_br.json rename to src/main/resources/assets/midnightlib/lang/pt_br.json diff --git a/common/src/main/resources/assets/midnightlib/lang/ru_ru.json b/src/main/resources/assets/midnightlib/lang/ru_ru.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/ru_ru.json rename to src/main/resources/assets/midnightlib/lang/ru_ru.json diff --git a/common/src/main/resources/assets/midnightlib/lang/tt_ru.json b/src/main/resources/assets/midnightlib/lang/tt_ru.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/tt_ru.json rename to src/main/resources/assets/midnightlib/lang/tt_ru.json diff --git a/common/src/main/resources/assets/midnightlib/lang/uk_ua.json b/src/main/resources/assets/midnightlib/lang/uk_ua.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/uk_ua.json rename to src/main/resources/assets/midnightlib/lang/uk_ua.json diff --git a/common/src/main/resources/assets/midnightlib/lang/zh_cn.json b/src/main/resources/assets/midnightlib/lang/zh_cn.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/zh_cn.json rename to src/main/resources/assets/midnightlib/lang/zh_cn.json diff --git a/common/src/main/resources/assets/midnightlib/lang/zh_tw.json b/src/main/resources/assets/midnightlib/lang/zh_tw.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/zh_tw.json rename to src/main/resources/assets/midnightlib/lang/zh_tw.json diff --git a/common/src/main/resources/assets/midnightlib/lang/zlm_arab.json b/src/main/resources/assets/midnightlib/lang/zlm_arab.json similarity index 100% rename from common/src/main/resources/assets/midnightlib/lang/zlm_arab.json rename to src/main/resources/assets/midnightlib/lang/zlm_arab.json diff --git a/common/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/explorer.png b/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/explorer.png similarity index 100% rename from common/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/explorer.png rename to src/main/resources/assets/midnightlib/textures/gui/sprites/icon/explorer.png diff --git a/common/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/midnightlib.png b/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/midnightlib.png similarity index 100% rename from common/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/midnightlib.png rename to src/main/resources/assets/midnightlib/textures/gui/sprites/icon/midnightlib.png diff --git a/common/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/reset.png b/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/reset.png similarity index 100% rename from common/src/main/resources/assets/midnightlib/textures/gui/sprites/icon/reset.png rename to src/main/resources/assets/midnightlib/textures/gui/sprites/icon/reset.png diff --git a/fabric/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json similarity index 76% rename from fabric/src/main/resources/fabric.mod.json rename to src/main/resources/fabric.mod.json index 1d3ecd3..1778c72 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,13 +1,11 @@ { "schemaVersion": 1, - "id": "midnightlib", + "id": "${id}", "version": "${version}", - - "name": "MidnightLib", - "description": "Common Library for Team MidnightDust's mods.", + "name": "${name}", + "description": "Lightweight config library with config screens and commands.", "authors": [ - "Motschen", - "TeamMidnightDust" + "Motschen" ], "contributors": [ "maloryware", @@ -25,13 +23,13 @@ "environment": "*", "entrypoints": { "server": [ - "eu.midnightdust.fabric.core.MidnightLibFabric" + "eu.midnightdust.core.MidnightLib" ], "client": [ - "eu.midnightdust.fabric.core.MidnightLibFabric" + "eu.midnightdust.core.MidnightLib" ], "modmenu": [ - "eu.midnightdust.lib.config.AutoModMenu" + "eu.midnightdust.core.MidnightLib" ] }, "depends": { diff --git a/common/src/main/resources/midnightlib.mixins.json b/src/main/resources/midnightlib.mixins.json similarity index 100% rename from common/src/main/resources/midnightlib.mixins.json rename to src/main/resources/midnightlib.mixins.json diff --git a/common/src/test/java/eu/midnightdust/test/MidnightLibExtras.java b/src/test/java/eu/midnightdust/test/MidnightLibExtras.java similarity index 100% rename from common/src/test/java/eu/midnightdust/test/MidnightLibExtras.java rename to src/test/java/eu/midnightdust/test/MidnightLibExtras.java diff --git a/common/src/test/java/eu/midnightdust/test/config/MidnightConfigExample.java b/src/test/java/eu/midnightdust/test/config/MidnightConfigExample.java similarity index 100% rename from common/src/test/java/eu/midnightdust/test/config/MidnightConfigExample.java rename to src/test/java/eu/midnightdust/test/config/MidnightConfigExample.java diff --git a/common/src/test/resources/assets/modid/lang/en_us.json b/src/test/resources/assets/modid/lang/en_us.json similarity index 100% rename from common/src/test/resources/assets/modid/lang/en_us.json rename to src/test/resources/assets/modid/lang/en_us.json diff --git a/common/src/test/resources/assets/modid/lang/es_ar.json b/src/test/resources/assets/modid/lang/es_ar.json similarity index 100% rename from common/src/test/resources/assets/modid/lang/es_ar.json rename to src/test/resources/assets/modid/lang/es_ar.json diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts new file mode 100644 index 0000000..d199c20 --- /dev/null +++ b/stonecutter.gradle.kts @@ -0,0 +1,54 @@ +plugins { + id("dev.kikugie.stonecutter") + id("dev.architectury.loom") version "1.11-SNAPSHOT" apply false + id("architectury-plugin") version "3.4-SNAPSHOT" apply false + id("com.github.johnrengelman.shadow") version "8.1.1" apply false + id("me.modmuss50.mod-publish-plugin") version "0.8.4" apply false +} +stonecutter active "1.21.10-fabric" /* [SC] DO NOT EDIT */ + +// Builds every version into `build/libs/{mod.version}/{loader}` +//stonecutter registerChiseled tasks.register("chiseledBuild", stonecutter.chiseled) { +// group = "project" +// ofTask("buildAndCollect") +//} +//stonecutter registerChiseled tasks.register("chiseledPublishMods", stonecutter.chiseled) { +// group = "project" +// ofTask("publishMods") +//} +//stonecutter registerChiseled tasks.register("chiseledRunAllClients", stonecutter.chiseled) { +// group = "project" +// ofTask("runClient") +//} + + + +// Builds loader-specific versions into `build/libs/{mod.version}/{loader}` +//for (it in stonecutter.tree.branches) { +// if (it.id.isEmpty()) continue +// val loader = it.id.upperCaseFirst() +// stonecutter registerChiseled tasks.register("chiseledBuild$loader", stonecutter.chiseled) { +// group = "project" +// versions { branch, _ -> branch == it.id } +// ofTask("buildAndCollect") +// } +//} + +// Runs active versions for each loader +for (it in stonecutter.tree.nodes) { + if (it.metadata != stonecutter.current || it.branch.id.isEmpty()) continue + val types = listOf("Client", "Server") + val loader = it.branch.id.upperCaseFirst() +// for (type in types) it.tasks.register("runActive$type$loader") { +// group = "project" +// dependsOn("run$type") +// } +} + +// See https://stonecutter.kikugie.dev/wiki/config/params +stonecutter parameters { + swaps["mod_version"] = "\"" + property("mod.version") + "\";" + swaps["minecraft"] = "\"" + node.metadata.version + "\";" + constants["release"] = property("mod.id") != "template" + dependencies["fapi"] = node.project.property("deps.fabric_version") as String +} \ No newline at end of file diff --git a/versions/1.20.1-fabric/gradle.properties b/versions/1.20.1-fabric/gradle.properties new file mode 100644 index 0000000..5e6477a --- /dev/null +++ b/versions/1.20.1-fabric/gradle.properties @@ -0,0 +1,12 @@ +mod.mc_dep_fabric==1.20.1 +mod.mc_dep_forgelike=[1.20, 1.20.1] +mod.mc_title=1.20.1 +mod.mc_targets=1.20.1 + +deps.forge_loader=47.3.0 +deps.neoforge_loader=[UNSUPPORTED] + +deps.fabric_version=0.92.3+1.20.1 +deps.modmenu_version=7.2.2 + +loom.platform=fabric diff --git a/versions/1.20.1-forge/gradle.properties b/versions/1.20.1-forge/gradle.properties new file mode 100644 index 0000000..7829d34 --- /dev/null +++ b/versions/1.20.1-forge/gradle.properties @@ -0,0 +1,13 @@ +mod.mc_dep_fabric==1.20.1 +mod.mc_dep_forgelike=[1.20, 1.20.1] +mod.mc_title=1.20.1 +mod.mc_targets=1.20.1 + +deps.forge_loader=47.3.0 +deps.neoforge_loader=[UNSUPPORTED] + +deps.fabric_version=0.92.3+1.20.1 + +deps.modmenu_version=[UNSUPPORTED] + +loom.platform=forge \ No newline at end of file diff --git a/versions/1.21.1-fabric/gradle.properties b/versions/1.21.1-fabric/gradle.properties new file mode 100644 index 0000000..2493151 --- /dev/null +++ b/versions/1.21.1-fabric/gradle.properties @@ -0,0 +1,13 @@ +mod.mc_dep_fabric=>=1.21 <=1.21.1 +mod.mc_dep_forgelike=[1.21, 1.21.1] +mod.mc_title=1.21.1 +mod.mc_targets=1.21 1.21.1 + +deps.forge_loader=0 +deps.neoforge_loader=21.1.66 + +deps.fabric_version=0.114.0+1.21.1 + +deps.modmenu_version=11.0.3 + +loom.platform=fabric \ No newline at end of file diff --git a/versions/1.21.1-neoforge/gradle.properties b/versions/1.21.1-neoforge/gradle.properties new file mode 100644 index 0000000..3a1c734 --- /dev/null +++ b/versions/1.21.1-neoforge/gradle.properties @@ -0,0 +1,13 @@ +mod.mc_dep_fabric=>=1.21 <=1.21.1 +mod.mc_dep_forgelike=[1.21, 1.21.1] +mod.mc_title=1.21.1 +mod.mc_targets=1.21 1.21.1 + +deps.forge_loader=0 +deps.neoforge_loader=21.1.66 + +deps.fabric_version=0.114.0+1.21.1 + +deps.modmenu_version=[UNSUPPORTED] + +loom.platform=neoforge \ No newline at end of file diff --git a/versions/1.21.10-fabric/gradle.properties b/versions/1.21.10-fabric/gradle.properties new file mode 100644 index 0000000..ecfd4dd --- /dev/null +++ b/versions/1.21.10-fabric/gradle.properties @@ -0,0 +1,12 @@ +mod.mc_dep_fabric=>=1.21.9 +mod.mc_dep_forgelike=[1.21.10,) +mod.mc_title=1.21.10 +mod.mc_targets=1.21.9, 1.21.10 + +deps.forge_loader=0 +deps.neoforge_loader=21.10.47-beta + +deps.fabric_version=0.138.0+1.21.10 +deps.modmenu_version=16.0.0-rc.1 + +loom.platform=fabric \ No newline at end of file diff --git a/versions/1.21.10-neoforge/gradle.properties b/versions/1.21.10-neoforge/gradle.properties new file mode 100644 index 0000000..baf58ca --- /dev/null +++ b/versions/1.21.10-neoforge/gradle.properties @@ -0,0 +1,12 @@ +mod.mc_dep_fabric=>=1.21.9 +mod.mc_dep_forgelike=[1.21.10,) +mod.mc_title=1.21.10 +mod.mc_targets=1.21.9, 1.21.10 + +deps.forge_loader=0 +deps.neoforge_loader=21.10.47-beta + +deps.fabric_version=0.138.0+1.21.10 +deps.modmenu_version=16.0.0-rc.1 + +loom.platform=neoforge \ No newline at end of file diff --git a/versions/1.21.5-fabric/gradle.properties b/versions/1.21.5-fabric/gradle.properties new file mode 100644 index 0000000..7e266b9 --- /dev/null +++ b/versions/1.21.5-fabric/gradle.properties @@ -0,0 +1,12 @@ +mod.mc_dep_fabric==1.21.5 +mod.mc_dep_forgelike=[1.21.5] +mod.mc_title=1.21.5 +mod.mc_targets=1.21.5 + +deps.forge_loader=54.0.13 +deps.neoforge_loader=21.4.47-beta + +deps.fabric_version=0.121.0+1.21.5 +deps.modmenu_version=14.0.0-rc.1 + +loom.platform=fabric \ No newline at end of file diff --git a/versions/1.21.5-neoforge/gradle.properties b/versions/1.21.5-neoforge/gradle.properties new file mode 100644 index 0000000..e36ac2e --- /dev/null +++ b/versions/1.21.5-neoforge/gradle.properties @@ -0,0 +1,12 @@ +mod.mc_dep_fabric==1.21.5 +mod.mc_dep_forgelike=[1.21.5] +mod.mc_title=1.21.5 +mod.mc_targets=1.21.5 + +deps.forge_loader=0 +deps.neoforge_loader=21.5.54-beta + +deps.fabric_version=0.121.0+1.21.5 +deps.modmenu_version=[UNSUPPORTED] + +loom.platform=neoforge \ No newline at end of file diff --git a/versions/1.21.8-fabric/gradle.properties b/versions/1.21.8-fabric/gradle.properties new file mode 100644 index 0000000..0da1f37 --- /dev/null +++ b/versions/1.21.8-fabric/gradle.properties @@ -0,0 +1,12 @@ +mod.mc_dep_fabric==1.21.8 +mod.mc_dep_forgelike=[1.21.8] +mod.mc_title=1.21.8 +mod.mc_targets=1.21.8 + +deps.forge_loader=0 +deps.neoforge_loader=21.8.50 + +deps.fabric_version=0.136.0+1.21.8 +deps.modmenu_version=15.0.0 + +loom.platform=fabric \ No newline at end of file diff --git a/versions/1.21.8-neoforge/gradle.properties b/versions/1.21.8-neoforge/gradle.properties new file mode 100644 index 0000000..0e4c559 --- /dev/null +++ b/versions/1.21.8-neoforge/gradle.properties @@ -0,0 +1,12 @@ +mod.mc_dep_fabric==1.21.5 +mod.mc_dep_forgelike=[1.21.5] +mod.mc_title=1.21.5 +mod.mc_targets=1.21.5 + +deps.forge_loader=0 +deps.neoforge_loader=21.8.50 + +deps.fabric_version=0.136.0+1.21.8 +deps.modmenu_version=[UNSUPPORTED] + +loom.platform=neoforge \ No newline at end of file