From ec5f9a7daeb587b79d391d6fb182f7f4c92a2a7e Mon Sep 17 00:00:00 2001 From: Micle Date: Sat, 24 May 2025 17:44:24 +0100 Subject: [PATCH] Created classes for holding override data. Updated config to generate the list of override items. --- .../java/dev/micle/xptools/config/Config.java | 21 +++++++-- .../micle/xptools/config/OverrideItem.java | 43 +++++++++++++++++++ .../micle/xptools/config/OverrideType.java | 16 +++++++ 3 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 src/main/java/dev/micle/xptools/config/OverrideItem.java create mode 100644 src/main/java/dev/micle/xptools/config/OverrideType.java diff --git a/src/main/java/dev/micle/xptools/config/Config.java b/src/main/java/dev/micle/xptools/config/Config.java index ec91f22..12678c4 100644 --- a/src/main/java/dev/micle/xptools/config/Config.java +++ b/src/main/java/dev/micle/xptools/config/Config.java @@ -2,8 +2,10 @@ package dev.micle.xptools.config; import dev.micle.xptools.XpTools; import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; +import net.minecraftforge.fml.event.config.ModConfigEvent; import org.apache.commons.lang3.tuple.Pair; import java.util.ArrayList; @@ -47,16 +49,17 @@ public final class Config { } public static class Server { - public static ForgeConfigSpec.BooleanValue BLOCK_BREAK_DEFAULT_NO_XP; - public static ForgeConfigSpec.ConfigValue> BLOCK_BREAK_OVERRIDES; + public static ForgeConfigSpec.BooleanValue blockBreakDefaultNoXp; + private static ForgeConfigSpec.ConfigValue> blockBreakOverridesRaw; + public static List blockBreakOverrideItems; Server(ForgeConfigSpec.Builder builder) { builder.comment("Settings for block breaking").push("block_breaking"); - BLOCK_BREAK_DEFAULT_NO_XP = builder + blockBreakDefaultNoXp = builder .comment("Should all blocks drop 0 XP by default?") .comment("(This makes multipliers not have any effect)") .define("blockBreakXpDisabled", false); - BLOCK_BREAK_OVERRIDES = builder + blockBreakOverridesRaw = builder .comment("List of all overrides. Format: '[block_id/tag],[multi/val],[min],[max]'") .comment("Examples:") .comment("'minecraft:dirt,val,2,2' - Makes minecraft's dirt blocks drop 2 XP") @@ -64,5 +67,15 @@ public final class Config { .define("blockBreakOverrides", new ArrayList<>()); builder.pop(); } + + @SubscribeEvent + public static void onServerConfigReload(ModConfigEvent event) { + if (event.getConfig().getSpec() == SERVER_SPEC) { + blockBreakOverrideItems = new ArrayList<>(); + for (String s : blockBreakOverridesRaw.get()) { + blockBreakOverrideItems.add(new OverrideItem(s)); + } + } + } } } diff --git a/src/main/java/dev/micle/xptools/config/OverrideItem.java b/src/main/java/dev/micle/xptools/config/OverrideItem.java new file mode 100644 index 0000000..432d7f4 --- /dev/null +++ b/src/main/java/dev/micle/xptools/config/OverrideItem.java @@ -0,0 +1,43 @@ +package dev.micle.xptools.config; + +public class OverrideItem { + private boolean isTag = false; + private String id = ""; + private OverrideType type = OverrideType.MULTIPLIER; + private float min = 1; + private float max = 1; + + public OverrideItem(String configString) { + String[] splitString = configString.split(","); + + if (splitString.length == 4) { + isTag = splitString[0].startsWith("#"); + id = isTag ? splitString[0].substring(1) : splitString[0]; + + type = OverrideType.valueOf(splitString[1]); + + min = Float.parseFloat(splitString[2]); + max = Float.parseFloat(splitString[3]); + } + } + + public boolean isTag() { + return isTag; + } + + public String getId() { + return id; + } + + public OverrideType getType() { + return type; + } + + public float getMin() { + return min; + } + + public float getMax() { + return max; + } +} diff --git a/src/main/java/dev/micle/xptools/config/OverrideType.java b/src/main/java/dev/micle/xptools/config/OverrideType.java new file mode 100644 index 0000000..dae9267 --- /dev/null +++ b/src/main/java/dev/micle/xptools/config/OverrideType.java @@ -0,0 +1,16 @@ +package dev.micle.xptools.config; + +public enum OverrideType { + VALUE("val"), + MULTIPLIER("multi"); + + private final String name; + + OverrideType(String s) { + name = s; + } + + public String toString() { + return this.name; + } +}