aboutsummaryrefslogtreecommitdiff
path: root/src
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 /src
parentfc6f881f9ca78c9f81e5a40291f9bd292789219a (diff)
create config class, start working on config screen
Diffstat (limited to 'src')
-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
5 files changed, 107 insertions, 3 deletions
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"
}
}