aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinyourwalls <inyourwalls@tutanota.com>2024-02-19 17:46:42 -0500
committerinyourwalls <inyourwalls@tutanota.com>2024-02-19 17:46:42 -0500
commit327be47178bebb323f618c6a6d36a12d3b15dbe4 (patch)
tree3332675ceb9d438428bdc2b89a3f05e95c057cf2
parentfc6f881f9ca78c9f81e5a40291f9bd292789219a (diff)
create config class, start working on config screen
-rw-r--r--build.gradle.kts11
-rw-r--r--flake.lock6
-rw-r--r--src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java27
-rw-r--r--src/main/java/net/inyourwalls/customlevelcolour/CustomLevelColour.java30
-rw-r--r--src/main/java/net/inyourwalls/customlevelcolour/CustomLevelColourConfig.java26
-rw-r--r--src/main/java/net/inyourwalls/customlevelcolour/ModMenuIntegration.java13
-rw-r--r--src/main/resources/fabric.mod.json14
7 files changed, 118 insertions, 9 deletions
diff --git a/build.gradle.kts b/build.gradle.kts
index 34112f6..4404f53 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -6,14 +6,19 @@ plugins {
version = "0.1.0"
group = "net.inyourwalls"
+repositories {
+ maven("https://maven.terraformersmc.com/")
+}
+
dependencies {
- val minecraftVersion = "1.20.4"
- val yarnBuild = "3"
- val fabricLoaderVersion = "0.15.0"
+ val minecraftVersion = "1.20.1"
+ val yarnBuild = "10"
+ val fabricLoaderVersion = "0.14.22"
minecraft("com.mojang:minecraft:$minecraftVersion")
mappings("net.fabricmc:yarn:$minecraftVersion+build.$yarnBuild:v2")
modImplementation("net.fabricmc:fabric-loader:$fabricLoaderVersion")
+ modImplementation("com.terraformersmc:modmenu:9.0.0")
}
tasks.processResources {
diff --git a/flake.lock b/flake.lock
index 0716ea3..a73a958 100644
--- a/flake.lock
+++ b/flake.lock
@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
- "lastModified": 1705856552,
- "narHash": "sha256-JXfnuEf5Yd6bhMs/uvM67/joxYKoysyE3M2k6T3eWbg=",
+ "lastModified": 1708296515,
+ "narHash": "sha256-FyF489fYNAUy7b6dkYV6rGPyzp+4tThhr80KNAaF/yY=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "612f97239e2cc474c13c9dafa0df378058c5ad8d",
+ "rev": "b98a4e1746acceb92c509bc496ef3d0e5ad8d4aa",
"type": "github"
},
"original": {
diff --git a/src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java b/src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java
new file mode 100644
index 0000000..a901b50
--- /dev/null
+++ b/src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java
@@ -0,0 +1,27 @@
+package net.inyourwalls.customlevelcolour;
+
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.text.Text;
+
+public class ConfigScreen extends Screen {
+ private static final Text TITLE = Text.translatable("gui.customlevelcolour.title");
+ private final Screen previous;
+
+ public ConfigScreen() {
+ super(TITLE);
+ this.previous = null;
+ }
+
+ public ConfigScreen(Screen previous) {
+ super(TITLE);
+ this.previous = previous;
+ }
+
+ @Override
+ public void render(DrawContext context, int mouseX, int mouseY, float delta) {
+ super.renderBackground(context);
+ super.render(context, mouseX, mouseY, delta);
+ context.drawCenteredTextWithShadow(this.textRenderer, TITLE, this.width / 2, 5, 0xffffff);
+ }
+}
diff --git a/src/main/java/net/inyourwalls/customlevelcolour/CustomLevelColour.java b/src/main/java/net/inyourwalls/customlevelcolour/CustomLevelColour.java
new file mode 100644
index 0000000..f80e0f4
--- /dev/null
+++ b/src/main/java/net/inyourwalls/customlevelcolour/CustomLevelColour.java
@@ -0,0 +1,30 @@
+package net.inyourwalls.customlevelcolour;
+
+import net.fabricmc.api.ClientModInitializer;
+import net.fabricmc.loader.api.FabricLoader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.nio.file.Path;
+
+public class CustomLevelColour implements ClientModInitializer {
+ public static final Logger LOGGER = LoggerFactory.getLogger(CustomLevelColour.class);
+ private static final Path CONFIG_PATH = FabricLoader.getInstance().getConfigDir().resolve("customlevelcolour.json");
+ private static CustomLevelColourConfig config;
+
+ @Override
+ public void onInitializeClient() {
+ try {
+ config = CustomLevelColourConfig.load(CONFIG_PATH);
+ } catch (IOException ex) {
+ LOGGER.debug("Failed to load config", ex);
+ config = new CustomLevelColourConfig();
+ }
+ }
+
+ public static CustomLevelColourConfig getConfig() {
+ if (config == null) throw new IllegalStateException("Attempted to get the configuration before it was loaded");
+ return config;
+ }
+}
diff --git a/src/main/java/net/inyourwalls/customlevelcolour/CustomLevelColourConfig.java b/src/main/java/net/inyourwalls/customlevelcolour/CustomLevelColourConfig.java
new file mode 100644
index 0000000..b963f02
--- /dev/null
+++ b/src/main/java/net/inyourwalls/customlevelcolour/CustomLevelColourConfig.java
@@ -0,0 +1,26 @@
+package net.inyourwalls.customlevelcolour;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.Path;
+
+public class CustomLevelColourConfig {
+ private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
+ public int outlineColour = 0x000000;
+ public int textColour = 0x80ff20;
+
+ public static CustomLevelColourConfig load(Path path) throws IOException {
+ FileReader reader = new FileReader(path.toFile());
+ return GSON.fromJson(reader, CustomLevelColourConfig.class);
+ }
+
+ public static void save(Path path) throws IOException {
+ FileWriter writer = new FileWriter(path.toFile());
+ GSON.toJson(writer);
+ writer.close();
+ }
+}
diff --git a/src/main/java/net/inyourwalls/customlevelcolour/ModMenuIntegration.java b/src/main/java/net/inyourwalls/customlevelcolour/ModMenuIntegration.java
new file mode 100644
index 0000000..f1270c2
--- /dev/null
+++ b/src/main/java/net/inyourwalls/customlevelcolour/ModMenuIntegration.java
@@ -0,0 +1,13 @@
+package net.inyourwalls.customlevelcolour;
+
+import com.terraformersmc.modmenu.api.ConfigScreenFactory;
+import com.terraformersmc.modmenu.api.ModMenuApi;
+
+public class ModMenuIntegration implements ModMenuApi {
+ @Override
+ public ConfigScreenFactory<?> getModConfigScreenFactory() {
+ return parent -> {
+ return new ConfigScreen(parent);
+ };
+ }
+}
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index 13347a3..64444f6 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -3,7 +3,7 @@
"id": "customlevelcolour",
"name": "Custom Level Colour",
"version": "${version}",
- "description": "One-shot mod that changes the level colour on the XP bar.",
+ "description": "Allows customizing the colour of the level text above the XP bar.",
"authors": [
"InYourWalls"
],
@@ -13,12 +13,20 @@
"license": "Unlicense",
"icon": "assets/customlevelcolour/icon.png",
"environment": "client",
+ "entrypoints": {
+ "client": [
+ "net.inyourwalls.customlevelcolour.CustomLevelColour"
+ ],
+ "modmenu": [
+ "net.inyourwalls.customlevelcolour.ModMenuIntegration"
+ ]
+ },
"mixins": [
"customlevelcolour.mixins.json"
],
"depends": {
- "minecraft": "1.20.4",
+ "fabricloader": ">=0.14.22",
"java": ">=17",
- "fabricloader": ">=0.15.0"
+ "minecraft": "~1.20.1"
}
}