From b7c9d8307849e94a0a84fc01f9ae8da38bbeb8e7 Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Wed, 6 Aug 2025 18:48:53 +0800 Subject: [PATCH 1/3] - fix: compatible for the case if the config class of mod updated --- .../main/java/eu/midnightdust/lib/config/MidnightConfig.java | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java b/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java index 7010451..1d56dd4 100755 --- a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java +++ b/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java @@ -132,7 +132,7 @@ public abstract class MidnightConfig { entries.values().forEach(info -> { if (info.field != null && info.entry != null) { try { - info.value = info.field.get(null); + info.value = info.field.get(null) == null ? info.defaultValue : info.field.get(null); info.tempValue = info.toTemporaryValue(); info.updateConditions(); } catch (IllegalAccessException ignored) {} diff --git a/gradle.properties b/gradle.properties index edbb6e4..ec4dbed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ yarn_mappings=1.21.6+build.1 enabled_platforms=fabric,neoforge archives_base_name=midnightlib -mod_version=1.7.5 +mod_version=1.7.6-rc.1 maven_group=eu.midnightdust release_type=release curseforge_id=488090 From a940a96bc726f47aa31444024b2ec7959907d140 Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Wed, 13 Aug 2025 23:23:16 +0800 Subject: [PATCH 2/3] better test --- build.gradle | 2 +- common/build.gradle | 17 +++++++ .../midnightdust/test}/MidnightLibExtras.java | 2 +- .../test}/config/MidnightConfigExample.java | 4 +- .../resources/assets/modid/lang/en_us.json | 0 .../resources/assets/modid/lang/es_ar.json | 0 fabric/build.gradle | 34 ++++++++++++- .../test/fabric/MLExampleFabric.java | 12 +++++ .../src/test}/resources/fabric.mod.json | 4 +- gradle/wrapper/gradle-wrapper.properties | 2 +- neoforge/build.gradle | 49 ++++++++++++++++++- .../test/neoforge/MLExampleNeoForge.java | 11 +++++ .../resources/META-INF/neoforge.mods.toml | 34 +++++++++++++ settings.gradle | 2 - test-fabric/build.gradle | 32 ------------ .../fabric/example/MLExampleFabric.java | 11 ----- 16 files changed, 160 insertions(+), 56 deletions(-) rename {test-fabric/src/main/java/eu/midnightdust/fabric/example => common/src/test/java/eu/midnightdust/test}/MidnightLibExtras.java (99%) rename {test-fabric/src/main/java/eu/midnightdust/fabric/example => common/src/test/java/eu/midnightdust/test}/config/MidnightConfigExample.java (99%) rename {test-fabric/src/main => common/src/test}/resources/assets/modid/lang/en_us.json (100%) rename {test-fabric/src/main => common/src/test}/resources/assets/modid/lang/es_ar.json (100%) create mode 100644 fabric/src/test/java/eu/midnightdust/test/fabric/MLExampleFabric.java rename {test-fabric/src/main => fabric/src/test}/resources/fabric.mod.json (81%) create mode 100644 neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java create mode 100644 neoforge/src/test/resources/META-INF/neoforge.mods.toml delete mode 100644 test-fabric/build.gradle delete mode 100644 test-fabric/src/main/java/eu/midnightdust/fabric/example/MLExampleFabric.java diff --git a/build.gradle b/build.gradle index 7ecfc2e..b260287 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ import groovy.json.JsonOutput plugins { id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.10-SNAPSHOT" apply false + id "dev.architectury.loom" version "1.10.+" apply false id "me.shedaniel.unified-publishing" version "0.1.+" apply false id 'com.github.johnrengelman.shadow' version '8.1.1' apply false } diff --git a/common/build.gradle b/common/build.gradle index ceedbf7..115233a 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -1,3 +1,7 @@ +plugins { + id 'java' +} + architectury { common(rootProject.enabled_platforms.split(",")) } @@ -21,3 +25,16 @@ publishing { // 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/test-fabric/src/main/java/eu/midnightdust/fabric/example/MidnightLibExtras.java b/common/src/test/java/eu/midnightdust/test/MidnightLibExtras.java similarity index 99% rename from test-fabric/src/main/java/eu/midnightdust/fabric/example/MidnightLibExtras.java rename to common/src/test/java/eu/midnightdust/test/MidnightLibExtras.java index 12deb14..21d4538 100644 --- a/test-fabric/src/main/java/eu/midnightdust/fabric/example/MidnightLibExtras.java +++ b/common/src/test/java/eu/midnightdust/test/MidnightLibExtras.java @@ -1,4 +1,4 @@ -package eu.midnightdust.fabric.example; +package eu.midnightdust.test; import com.google.common.collect.Lists; import eu.midnightdust.lib.config.MidnightConfig; diff --git a/test-fabric/src/main/java/eu/midnightdust/fabric/example/config/MidnightConfigExample.java b/common/src/test/java/eu/midnightdust/test/config/MidnightConfigExample.java similarity index 99% rename from test-fabric/src/main/java/eu/midnightdust/fabric/example/config/MidnightConfigExample.java rename to common/src/test/java/eu/midnightdust/test/config/MidnightConfigExample.java index 095581b..26ac97e 100644 --- a/test-fabric/src/main/java/eu/midnightdust/fabric/example/config/MidnightConfigExample.java +++ b/common/src/test/java/eu/midnightdust/test/config/MidnightConfigExample.java @@ -1,7 +1,7 @@ -package eu.midnightdust.fabric.example.config; +package eu.midnightdust.test.config; import com.google.common.collect.Lists; -import eu.midnightdust.fabric.example.MidnightLibExtras; +import eu.midnightdust.test.MidnightLibExtras; import eu.midnightdust.lib.config.MidnightConfig; import net.minecraft.text.MutableText; import net.minecraft.text.Text; diff --git a/test-fabric/src/main/resources/assets/modid/lang/en_us.json b/common/src/test/resources/assets/modid/lang/en_us.json similarity index 100% rename from test-fabric/src/main/resources/assets/modid/lang/en_us.json rename to common/src/test/resources/assets/modid/lang/en_us.json diff --git a/test-fabric/src/main/resources/assets/modid/lang/es_ar.json b/common/src/test/resources/assets/modid/lang/es_ar.json similarity index 100% rename from test-fabric/src/main/resources/assets/modid/lang/es_ar.json rename to common/src/test/resources/assets/modid/lang/es_ar.json diff --git a/fabric/build.gradle b/fabric/build.gradle index 9da74e4..a96efdb 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -11,7 +11,27 @@ architectury { 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 + } + } } configurations { @@ -27,10 +47,12 @@ configurations { 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}") + 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 { @@ -41,6 +63,14 @@ processResources { } } +processTestResources { + inputs.property "version", rootProject.version + + filesMatching("fabric.mod.json") { + expand "version": rootProject.version + } +} + shadowJar { exclude "architectury.common.json" @@ -71,7 +101,7 @@ unifiedPublishing { releaseType = "$project.release_type" changelog = releaseChangelog() gameVersions = [] - gameLoaders = ["fabric","quilt"] + gameLoaders = ["fabric", "quilt"] mainPublication remapJar relations { depends { diff --git a/fabric/src/test/java/eu/midnightdust/test/fabric/MLExampleFabric.java b/fabric/src/test/java/eu/midnightdust/test/fabric/MLExampleFabric.java new file mode 100644 index 0000000..4af42a1 --- /dev/null +++ b/fabric/src/test/java/eu/midnightdust/test/fabric/MLExampleFabric.java @@ -0,0 +1,12 @@ +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/test-fabric/src/main/resources/fabric.mod.json b/fabric/src/test/resources/fabric.mod.json similarity index 81% rename from test-fabric/src/main/resources/fabric.mod.json rename to fabric/src/test/resources/fabric.mod.json index f82ee29..5cca87f 100644 --- a/test-fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/test/resources/fabric.mod.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "id": "midnightlib-example", + "id": "testmod", "version": "${version}", "name": "MidnightLib Example", @@ -13,7 +13,7 @@ "environment": "*", "entrypoints": { "main": [ - "eu.midnightdust.fabric.example.MLExampleFabric" + "eu.midnightdust.test.fabric.MLExampleFabric" ] }, "depends": { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2733ed5..6f64321 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https://mirrors.aliyun.com/gradle/distributions/v8.14.3/gradle-8.14.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 48ebf4f..7b384fe 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -13,11 +13,44 @@ repositories { architectury { platformSetupLoomIde() - neoForge() + 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('testmod') { + sourceSet sourceSets.test + } + } + source sourceSets.test + } + } + } configurations { @@ -44,6 +77,10 @@ dependencies { 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 { @@ -54,6 +91,14 @@ processResources { } } +processTestResources { + inputs.property 'version', rootProject.version + + filesMatching('META-INF/neoforge.mods.toml') { + expand version: rootProject.version + } +} + shadowJar { configurations = [project.configurations.shadowBundle] archiveClassifier = 'dev-shadow' @@ -105,4 +150,4 @@ unifiedPublishing { } } } -} +} \ No newline at end of file diff --git a/neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java b/neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java new file mode 100644 index 0000000..7c96c46 --- /dev/null +++ b/neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java @@ -0,0 +1,11 @@ +package eu.midnightdust.test.neoforge; + +import eu.midnightdust.test.config.MidnightConfigExample; +import net.neoforged.fml.common.Mod; + +@Mod("testmod") +public class MLExampleNeoForge { + public MLExampleNeoForge() { + MidnightConfigExample.init("modid", MidnightConfigExample.class); + } +} \ No newline at end of file diff --git a/neoforge/src/test/resources/META-INF/neoforge.mods.toml b/neoforge/src/test/resources/META-INF/neoforge.mods.toml new file mode 100644 index 0000000..ab4c786 --- /dev/null +++ b/neoforge/src/test/resources/META-INF/neoforge.mods.toml @@ -0,0 +1,34 @@ +modLoader = "javafml" +loaderVersion = "[2,)" +#issueTrackerURL = "" +license = "MIT License" + +[[mods]] +modId = "testmod" +version = "${version}" +displayName = "Example Mod" +authors = "TeamMidnightDust, Motschen" +description = ''' +Example Mod for Team MidnightDust's mods. +''' + +[[dependencies.testmod]] +modId = "neoforge" +mandatory = true +versionRange = "[20.5,)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.testmod]] +modId = "minecraft" +mandatory = true +versionRange = "[1.20.5,)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.testmod]] +modId = "midnightlib" +mandatory = true +versionRange = "[1.0,)" +ordering = "NONE" +side = "BOTH" diff --git a/settings.gradle b/settings.gradle index 6f5c32b..29d5af7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,9 +9,7 @@ pluginManagement { include("common") include("fabric") -include("test-fabric") include("neoforge") -include("test-neoforge") //include("quilt") rootProject.name = "midnightlib" diff --git a/test-fabric/build.gradle b/test-fabric/build.gradle deleted file mode 100644 index 1d35a52..0000000 --- a/test-fabric/build.gradle +++ /dev/null @@ -1,32 +0,0 @@ -plugins { - id 'com.github.johnrengelman.shadow' - id "me.shedaniel.unified-publishing" -} -repositories { - maven { url "https://maven.terraformersmc.com/releases" } -} - -architectury { - platformSetupLoomIde() - fabric() -} - -loom { -} - -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 + "-fabric" -} - -dependencies { - modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" - modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" - - implementation project(path: ":fabric", configuration: "namedElements") - common(project(path: ":common", configuration: "namedElements")) { transitive false } -} \ No newline at end of file diff --git a/test-fabric/src/main/java/eu/midnightdust/fabric/example/MLExampleFabric.java b/test-fabric/src/main/java/eu/midnightdust/fabric/example/MLExampleFabric.java deleted file mode 100644 index e873330..0000000 --- a/test-fabric/src/main/java/eu/midnightdust/fabric/example/MLExampleFabric.java +++ /dev/null @@ -1,11 +0,0 @@ -package eu.midnightdust.fabric.example; - -import eu.midnightdust.fabric.example.config.MidnightConfigExample; -import net.fabricmc.api.ModInitializer; - -public class MLExampleFabric implements ModInitializer { - @Override - public void onInitialize() { - MidnightConfigExample.init("modid", MidnightConfigExample.class); - } -} From 0d2c952a540f82535875b0ad78905e6ef97da116 Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Thu, 14 Aug 2025 18:41:43 +0800 Subject: [PATCH 3/3] Unify the test mod ID --- .../midnightdust/lib/util/MidnightColorUtil.java | 14 -------------- fabric/src/test/resources/fabric.mod.json | 6 +++--- neoforge/build.gradle | 2 +- .../test/neoforge/MLExampleNeoForge.java | 5 +++-- .../src/test/resources/META-INF/neoforge.mods.toml | 10 +++++----- 5 files changed, 12 insertions(+), 25 deletions(-) delete mode 100755 common/src/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java diff --git a/common/src/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java b/common/src/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java deleted file mode 100755 index 210ebc3..0000000 --- a/common/src/main/java/eu/midnightdust/lib/util/MidnightColorUtil.java +++ /dev/null @@ -1,14 +0,0 @@ -package eu.midnightdust.lib.util; - -import java.awt.Color; - -public class MidnightColorUtil { - /** - * @param colorStr e.g. "FFFFFF" or "#FFFFFF" - * @return Color as RGB - */ - public static Color hex2Rgb(String colorStr) { - try { return Color.decode("#" + colorStr.replace("#", "")); - } catch (Exception ignored) { return Color.BLACK; } - } -} diff --git a/fabric/src/test/resources/fabric.mod.json b/fabric/src/test/resources/fabric.mod.json index 5cca87f..3f9c64d 100644 --- a/fabric/src/test/resources/fabric.mod.json +++ b/fabric/src/test/resources/fabric.mod.json @@ -1,10 +1,10 @@ { "schemaVersion": 1, - "id": "testmod", + "id": "modid", "version": "${version}", - "name": "MidnightLib Example", - "description": "Wow, you can do so much.", + "name": "MidnightLib Test Mod", + "description": "Example Mod for Team MidnightDust's mods.", "authors": [ "MidnightDust" ], "license": "CC0", diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 7b384fe..3184821 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -43,7 +43,7 @@ loom { create('midnightlib') { sourceSet sourceSets.main } - create('testmod') { + create('modid') { // test mod sourceSet sourceSets.test } } diff --git a/neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java b/neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java index 7c96c46..d2d82ac 100644 --- a/neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java +++ b/neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java @@ -3,9 +3,10 @@ package eu.midnightdust.test.neoforge; import eu.midnightdust.test.config.MidnightConfigExample; import net.neoforged.fml.common.Mod; -@Mod("testmod") +@Mod(MLExampleNeoForge.MODID) public class MLExampleNeoForge { + public static final String MODID = "modid"; public MLExampleNeoForge() { - MidnightConfigExample.init("modid", MidnightConfigExample.class); + MidnightConfigExample.init(MODID, MidnightConfigExample.class); } } \ No newline at end of file diff --git a/neoforge/src/test/resources/META-INF/neoforge.mods.toml b/neoforge/src/test/resources/META-INF/neoforge.mods.toml index ab4c786..790a479 100644 --- a/neoforge/src/test/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/test/resources/META-INF/neoforge.mods.toml @@ -4,29 +4,29 @@ loaderVersion = "[2,)" license = "MIT License" [[mods]] -modId = "testmod" +modId = "modid" version = "${version}" -displayName = "Example Mod" +displayName = "MidnightLib Test Mod" authors = "TeamMidnightDust, Motschen" description = ''' Example Mod for Team MidnightDust's mods. ''' -[[dependencies.testmod]] +[[dependencies.modid]] modId = "neoforge" mandatory = true versionRange = "[20.5,)" ordering = "NONE" side = "BOTH" -[[dependencies.testmod]] +[[dependencies.modid]] modId = "minecraft" mandatory = true versionRange = "[1.20.5,)" ordering = "NONE" side = "BOTH" -[[dependencies.testmod]] +[[dependencies.modid]] modId = "midnightlib" mandatory = true versionRange = "[1.0,)"