Created classes for holding override data. Updated config to generate the list of override items.

This commit is contained in:
2025-05-24 17:44:24 +01:00
parent 802321e9a2
commit ec5f9a7dae
3 changed files with 76 additions and 4 deletions

View File

@ -2,8 +2,10 @@ package dev.micle.xptools.config;
import dev.micle.xptools.XpTools; import dev.micle.xptools.XpTools;
import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.config.ModConfigEvent;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList; import java.util.ArrayList;
@ -47,16 +49,17 @@ public final class Config {
} }
public static class Server { public static class Server {
public static ForgeConfigSpec.BooleanValue BLOCK_BREAK_DEFAULT_NO_XP; public static ForgeConfigSpec.BooleanValue blockBreakDefaultNoXp;
public static ForgeConfigSpec.ConfigValue<List<String>> BLOCK_BREAK_OVERRIDES; private static ForgeConfigSpec.ConfigValue<List<? extends String>> blockBreakOverridesRaw;
public static List<OverrideItem> blockBreakOverrideItems;
Server(ForgeConfigSpec.Builder builder) { Server(ForgeConfigSpec.Builder builder) {
builder.comment("Settings for block breaking").push("block_breaking"); 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("Should all blocks drop 0 XP by default?")
.comment("(This makes multipliers not have any effect)") .comment("(This makes multipliers not have any effect)")
.define("blockBreakXpDisabled", false); .define("blockBreakXpDisabled", false);
BLOCK_BREAK_OVERRIDES = builder blockBreakOverridesRaw = builder
.comment("List of all overrides. Format: '[block_id/tag],[multi/val],[min],[max]'") .comment("List of all overrides. Format: '[block_id/tag],[multi/val],[min],[max]'")
.comment("Examples:") .comment("Examples:")
.comment("'minecraft:dirt,val,2,2' - Makes minecraft's dirt blocks drop 2 XP") .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<>()); .define("blockBreakOverrides", new ArrayList<>());
builder.pop(); 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));
}
}
}
} }
} }

View File

@ -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;
}
}

View File

@ -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;
}
}