From d78bcb89bb205f86e9e64698ad985b336c2a8c6a Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Wed, 19 Nov 2025 16:07:45 +0100 Subject: [PATCH] stonecutter: various fixes & improvements --- build.gradle.kts | 75 +++++++++++++------ gradle.properties | 2 +- .../eu/midnightdust/core/MidnightLib.java | 4 +- .../core/config/MidnightLibConfig.java | 20 +++-- .../lib/config/MidnightConfigScreen.java | 1 - .../lib/util/PlatformFunctions.java | 10 ++- stonecutter.gradle.kts | 40 +--------- 7 files changed, 77 insertions(+), 75 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6cc3b83..952fdf2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,9 @@ -import java.util.* - plugins { id("dev.architectury.loom") id("architectury-plugin") id("me.modmuss50.mod-publish-plugin") id("com.github.johnrengelman.shadow") + `maven-publish` } val minecraft = stonecutter.current.version @@ -16,16 +15,11 @@ 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 + // modmenu maven("https://maven.terraformersmc.com/") - //placeholder api (modmenu depencency) maven("https://maven.nucleoid.xyz/") } dependencies { @@ -35,9 +29,7 @@ dependencies { 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 + // Fabric API is required to load modded resources modImplementation("net.fabricmc.fabric-api:fabric-api:${mod.dep("fabric_version")}") } if (loader == "forge") { @@ -58,22 +50,14 @@ loom { } } if (loader == "forge") { - forge.mixinConfigs( - "midnightlib.mixins.json", - ) + forge.mixinConfigs("midnightlib.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")) - + val modrinthToken = System.getenv("MODRINTH_TOKEN") + val curseforgeToken = System.getenv("CURSEFORGE_TOKEN") + val githubToken = System.getenv("GITHUB_TOKEN").orEmpty() file = project.tasks.remapJar.get().archiveFile dryRun = modrinthToken == null || curseforgeToken == null @@ -105,7 +89,52 @@ publishMods { optional("modmenu") } } + + github { + accessToken = githubToken + repository = "TeamMidnightDust/MidnightLib" + commitish = "multiversion" // This is the branch the release tag will be created from + + tagName = "v" + properties["mod.version"] + + // Allow the release to be initially created without any files. + allowEmptyFiles = true + } } +//publishing { +// publications { +// create("mavenJava") { +// pom { +// groupId = "eu.midnightdust" +// artifactId = "midnightlib" +// version = project.version +// +// from(components["java"]) +// } +// } +// } +//} +publishing { + repositories { + maven { + name = "MidnightDust" + url = uri("https://maven.midnightdust.eu/snapshots") + credentials(PasswordCredentials::class) + } + } + publications { + create("mavenJava") { + pom { + groupId = "eu.midnightdust" + artifactId = project.mod.id + version = "${project.version}-${loader}" + + from(components["java"]) + } + } + } +} + java { withSourcesJar() diff --git a/gradle.properties b/gradle.properties index 67662e3..31202cd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ org.gradle.parallel=false #org.gradle.configureondemand=true # Mod properties -mod.version=1.8.3 +mod.version=1.9.0-alpha.1 mod.group=eu.midnightdust mod.id=midnightlib mod.name=MidnightLib diff --git a/src/main/java/eu/midnightdust/core/MidnightLib.java b/src/main/java/eu/midnightdust/core/MidnightLib.java index 09e1891..086d787 100644 --- a/src/main/java/eu/midnightdust/core/MidnightLib.java +++ b/src/main/java/eu/midnightdust/core/MidnightLib.java @@ -80,7 +80,9 @@ public class MidnightLib { 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)) + if (field.isAnnotationPresent(MidnightConfig.Entry.class) + && !field.isAnnotationPresent(MidnightConfig.Client.class) + && !field.isAnnotationPresent(MidnightConfig.Hidden.class)) new AutoCommand(field, modid); } }); diff --git a/src/main/java/eu/midnightdust/core/config/MidnightLibConfig.java b/src/main/java/eu/midnightdust/core/config/MidnightLibConfig.java index 08e5a10..f3ee164 100644 --- a/src/main/java/eu/midnightdust/core/config/MidnightLibConfig.java +++ b/src/main/java/eu/midnightdust/core/config/MidnightLibConfig.java @@ -3,18 +3,26 @@ package eu.midnightdust.core.config; import eu.midnightdust.lib.config.MidnightConfig; import eu.midnightdust.lib.util.PlatformFunctions; -import java.util.Objects; - public class MidnightLibConfig extends MidnightConfig { - public static final boolean HAS_MODMENU = PlatformFunctions.isModLoaded("modmenu") || !Objects.equals(PlatformFunctions.getPlatformName(), "fabric"); - - @Entry public static ConfigButton config_screen_list = HAS_MODMENU ? ConfigButton.MODMENU : ConfigButton.TRUE; + //? if fabric { + @Entry public static ConfigButton config_screen_list = PlatformFunctions.isModLoaded("modmenu") ? ConfigButton.MODMENU : ConfigButton.TRUE; public enum ConfigButton { TRUE, FALSE, MODMENU } public static boolean shouldShowButton() { - return config_screen_list.equals(ConfigButton.TRUE) || (config_screen_list.equals(ConfigButton.MODMENU) && !HAS_MODMENU); + return config_screen_list.equals(ConfigButton.TRUE) || (config_screen_list.equals(ConfigButton.MODMENU) && !PlatformFunctions.isModLoaded("modmenu")); } + //?} else { + /*@Entry public static ConfigButton config_screen_list = ConfigButton.FALSE; + + public enum ConfigButton { + TRUE, FALSE + } + + public static boolean shouldShowButton() { + return config_screen_list.equals(ConfigButton.TRUE); + } + *///?} } diff --git a/src/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java b/src/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java index 3e67220..b0428e0 100644 --- a/src/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java +++ b/src/main/java/eu/midnightdust/lib/config/MidnightConfigScreen.java @@ -235,7 +235,6 @@ public class MidnightConfigScreen extends Screen { } info.actionButton = colorButton; } else if (e.selectionMode() > -1) { - Button explorerButton = //? if >= 1.21 { SpriteIconButton.builder(Component.empty(), diff --git a/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java b/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java index 04428c9..4eeb0f9 100644 --- a/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java +++ b/src/main/java/eu/midnightdust/lib/util/PlatformFunctions.java @@ -3,11 +3,7 @@ package eu.midnightdust.lib.util; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import java.nio.file.Path; -import eu.midnightdust.core.MidnightLib; import net.minecraft.commands.CommandSourceStack; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.loading.FMLEnvironment; -import net.minecraftforge.fml.loading.FMLPaths; //? if fabric { import net.fabricmc.api.EnvType; @@ -20,6 +16,12 @@ import net.neoforged.fml.ModList; import net.neoforged.fml.loading.FMLEnvironment; import net.neoforged.fml.loading.FMLPaths; *///?} +//? if forge { +/*import eu.midnightdust.core.MidnightLib; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.loading.FMLEnvironment; +import net.minecraftforge.fml.loading.FMLPaths; +*///?} public class PlatformFunctions { //? if fabric { diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts index d199c20..c569200 100644 --- a/stonecutter.gradle.kts +++ b/stonecutter.gradle.kts @@ -1,50 +1,12 @@ plugins { id("dev.kikugie.stonecutter") - id("dev.architectury.loom") version "1.11-SNAPSHOT" apply false + id("dev.architectury.loom") version "1.13-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") + "\";"