Created classes for holding override data. Updated config to generate the list of override items.
This commit is contained in:
@ -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<List<String>> BLOCK_BREAK_OVERRIDES;
|
||||
public static ForgeConfigSpec.BooleanValue blockBreakDefaultNoXp;
|
||||
private static ForgeConfigSpec.ConfigValue<List<? extends String>> blockBreakOverridesRaw;
|
||||
public static List<OverrideItem> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
43
src/main/java/dev/micle/xptools/config/OverrideItem.java
Normal file
43
src/main/java/dev/micle/xptools/config/OverrideItem.java
Normal 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;
|
||||
}
|
||||
}
|
16
src/main/java/dev/micle/xptools/config/OverrideType.java
Normal file
16
src/main/java/dev/micle/xptools/config/OverrideType.java
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user