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/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/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/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 65% rename from test-fabric/src/main/resources/fabric.mod.json rename to fabric/src/test/resources/fabric.mod.json index f82ee29..3f9c64d 100644 --- a/test-fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/test/resources/fabric.mod.json @@ -1,10 +1,10 @@ { "schemaVersion": 1, - "id": "midnightlib-example", + "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", @@ -13,7 +13,7 @@ "environment": "*", "entrypoints": { "main": [ - "eu.midnightdust.fabric.example.MLExampleFabric" + "eu.midnightdust.test.fabric.MLExampleFabric" ] }, "depends": { 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 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..3184821 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('modid') { // test mod + 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..d2d82ac --- /dev/null +++ b/neoforge/src/test/java/eu/midnightdust/test/neoforge/MLExampleNeoForge.java @@ -0,0 +1,12 @@ +package eu.midnightdust.test.neoforge; + +import eu.midnightdust.test.config.MidnightConfigExample; +import net.neoforged.fml.common.Mod; + +@Mod(MLExampleNeoForge.MODID) +public class MLExampleNeoForge { + public static final String MODID = "modid"; + 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..790a479 --- /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 = "modid" +version = "${version}" +displayName = "MidnightLib Test Mod" +authors = "TeamMidnightDust, Motschen" +description = ''' +Example Mod for Team MidnightDust's mods. +''' + +[[dependencies.modid]] +modId = "neoforge" +mandatory = true +versionRange = "[20.5,)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.modid]] +modId = "minecraft" +mandatory = true +versionRange = "[1.20.5,)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.modid]] +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); - } -}