浏览代码

Add test mod

Lortseam 4 年之前
父节点
当前提交
d1805354a4

+ 17 - 0
build.gradle

@@ -11,13 +11,25 @@ archivesBaseName = project.archives_base_name
 version = project.mod_version
 group = project.maven_group
 
+sourceSets {
+	testMod {
+		compileClasspath += main.compileClasspath
+		runtimeClasspath += main.runtimeClasspath
+		annotationProcessorPath += main.annotationProcessorPath
+	}
+}
+
 repositories {
 	maven {
 		url "https://maven.shedaniel.me/"
 	}
+	maven {
+		url "https://maven.terraformersmc.com/"
+	}
 }
 
 dependencies {
+	// --- Main ---
 	minecraft("com.mojang:minecraft:${project.minecraft_version}")
 	mappings("net.fabricmc:yarn:${project.yarn_mappings}:v2")
 	modImplementation("net.fabricmc:fabric-loader:${project.loader_version}")
@@ -33,12 +45,17 @@ dependencies {
 	compileOnly("org.projectlombok:lombok:${project.lombok_version}")
 	annotationProcessor("org.projectlombok:lombok:${project.lombok_version}")
 
+	// --- Test ---
 	testImplementation("org.junit.jupiter:junit-jupiter:${project.junit_version}")
 	testImplementation("org.assertj:assertj-core:${project.assertj_version}")
 	testImplementation("org.mockito:mockito-inline:${project.mockito_version}")
 	testImplementation("org.mockito:mockito-junit-jupiter:${project.mockito_junit_version}")
 	testImplementation("io.github.hakky54:logcaptor:${project.logcaptor_version}")
 	testImplementation("com.google.jimfs:jimfs:${project.jimfs_version}")
+
+	// --- Test Mod ---
+	testModImplementation(sourceSets.main.output)
+	modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}")
 }
 
 processResources {

+ 1 - 0
gradle.properties

@@ -21,3 +21,4 @@ org.gradle.jvmargs=-Xmx1G
 	assertj_version=3.19.0
 	mockito_junit_version=3.7.7
 	jimfs_version=1.2
+	modmenu_version=1.16.8

+ 17 - 0
src/testMod/java/me/lortseam/completeconfig/testmod/ModMenuIntegration.java

@@ -0,0 +1,17 @@
+package me.lortseam.completeconfig.testmod;
+
+import com.terraformersmc.modmenu.api.ConfigScreenFactory;
+import com.terraformersmc.modmenu.api.ModMenuApi;
+import me.lortseam.completeconfig.gui.ConfigScreenBuilder;
+import me.lortseam.completeconfig.gui.cloth.ClothConfigScreenBuilder;
+
+public final class ModMenuIntegration implements ModMenuApi {
+
+    private final ConfigScreenBuilder screenBuilder = new ClothConfigScreenBuilder();
+
+    @Override
+    public ConfigScreenFactory<?> getModConfigScreenFactory() {
+        return parent -> screenBuilder.build(parent, TestMod.getConfig());
+    }
+
+}

+ 54 - 0
src/testMod/java/me/lortseam/completeconfig/testmod/Settings.java

@@ -0,0 +1,54 @@
+package me.lortseam.completeconfig.testmod;
+
+import me.lortseam.completeconfig.api.ConfigContainer;
+import me.lortseam.completeconfig.api.ConfigEntries;
+import me.lortseam.completeconfig.api.ConfigEntry;
+import me.lortseam.completeconfig.api.ConfigGroup;
+import net.minecraft.text.TextColor;
+import net.minecraft.util.Formatting;
+
+import java.util.Arrays;
+import java.util.List;
+
+public final class Settings implements ConfigContainer {
+
+    @Transitive
+    @ConfigEntries
+    public static class DataTypes implements ConfigGroup {
+
+        private boolean bool;
+        private int integer;
+        @ConfigEntry.BoundedInteger(min = 0, max = 10)
+        private int boundedInt;
+        private long aLong;
+        @ConfigEntry.BoundedLong(min = 0, max = 100)
+        private long boundedLong;
+        private float aFloat;
+        private double aDouble;
+        private String string = "";
+        private AnEnum anEnum = AnEnum.FOO;
+        private List<String> list = Arrays.asList("First entry", "Second entry");
+        private TextColor color = TextColor.fromFormatting(Formatting.BLUE);
+
+    }
+
+    public enum AnEnum {
+        FOO, BAR, BAZ
+    }
+
+    @Transitive
+    @ConfigEntries
+    public static class Tooltips implements ConfigGroup {
+
+        @ConfigEntry
+        private boolean defaultOneLine;
+
+        @ConfigEntry
+        private boolean defaultMultiLine;
+
+        @ConfigEntry(tooltipTranslationKeys = {"customTooltipLine1", "customTooltipLine2"})
+        private boolean custom;
+
+    }
+
+}

+ 20 - 0
src/testMod/java/me/lortseam/completeconfig/testmod/TestMod.java

@@ -0,0 +1,20 @@
+package me.lortseam.completeconfig.testmod;
+
+import lombok.Getter;
+import me.lortseam.completeconfig.data.Config;
+import net.fabricmc.api.ModInitializer;
+
+public class TestMod implements ModInitializer {
+
+    public static final String MOD_ID = "testmod";
+    @Getter
+    private static Config config;
+
+    @Override
+    public void onInitialize() {
+        config = Config.builder(MOD_ID)
+                .add(new Settings())
+                .build();
+    }
+
+}

+ 23 - 0
src/testMod/resources/assets/completeconfig-testmod/lang/en_us.json

@@ -0,0 +1,23 @@
+{
+  "config.testmod.dataTypes": "Data types",
+  "config.testmod.dataTypes.bool": "Boolean",
+  "config.testmod.dataTypes.integer": "Integer",
+  "config.testmod.dataTypes.boundedInt": "Bounded Integer",
+  "config.testmod.dataTypes.aLong": "Long",
+  "config.testmod.dataTypes.boundedLong": "Bounded Long",
+  "config.testmod.dataTypes.aFloat": "Float",
+  "config.testmod.dataTypes.aDouble": "Double",
+  "config.testmod.dataTypes.string": "String",
+  "config.testmod.dataTypes.anEnum": "Enum",
+  "config.testmod.dataTypes.anEnum.foo": "Foo",
+  "config.testmod.dataTypes.anEnum.bar": "Bar",
+  "config.testmod.dataTypes.anEnum.baz": "Baz",
+  "config.testmod.dataTypes.list": "List",
+  "config.testmod.dataTypes.color": "Color",
+  "config.testmod.tooltips": "Tooltips",
+  "config.testmod.tooltips.defaultOneLine.tooltip": "A tooltip with a single line",
+  "config.testmod.tooltips.defaultMultiLine.tooltip.0": "A tooltip with multiple lines, this is the first line...",
+  "config.testmod.tooltips.defaultMultiLine.tooltip.1": "... and this is the second one",
+  "config.testmod.customTooltipLine1": "A tooltip specified with custom keys, line 1...",
+  "config.testmod.customTooltipLine2": "... and line 2"
+}

+ 22 - 0
src/testMod/resources/fabric.mod.json

@@ -0,0 +1,22 @@
+{
+  "schemaVersion": 1,
+  "id": "testmod",
+  "version": "${version}",
+  "name": "CompleteConfig Test Mod",
+  "authors": [
+    "Lortseam"
+  ],
+  "license": "Apache-2.0",
+  "environment": "*",
+  "entrypoints": {
+    "main": [
+      "me.lortseam.completeconfig.testmod.TestMod"
+    ],
+    "modmenu": [
+      "me.lortseam.completeconfig.testmod.ModMenuIntegration"
+    ]
+  },
+  "depends": {
+    "fabricloader": ">=0.7.4"
+  }
+}