Configured

This commit is contained in:
skippyall
2026-01-31 15:46:40 +01:00
parent 1e430ef506
commit 0382798a5d
16 changed files with 131 additions and 39 deletions
@@ -0,0 +1,83 @@
package io.github.skippyall.minions;
import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.core.io.ParsingException;
import com.electronwill.nightconfig.core.io.WritingException;
import com.electronwill.nightconfig.core.io.WritingMode;
import com.electronwill.nightconfig.core.serde.ObjectDeserializer;
import com.electronwill.nightconfig.core.serde.ObjectSerializer;
import com.electronwill.nightconfig.core.serde.SerdeException;
import com.electronwill.nightconfig.core.serde.annotations.SerdeComment;
import com.electronwill.nightconfig.core.serde.annotations.SerdeSkipDeserializingIf;
import com.electronwill.nightconfig.toml.TomlFormat;
import com.electronwill.nightconfig.toml.TomlParser;
import net.fabricmc.loader.api.FabricLoader;
import java.nio.file.Path;
import static com.electronwill.nightconfig.core.serde.annotations.SerdeSkipDeserializingIf.SkipDeIf.IS_MISSING;
public class MinionsConfig {
private static MinionsConfig INSTANCE;
@SerdeSkipDeserializingIf(IS_MISSING)
public Minion minion = new Minion();
public static class Minion {
@SerdeComment("The prefix for all minion names")
@SerdeSkipDeserializingIf(IS_MISSING)
public String minionPrefix = "+";
@SerdeComment("Makes minions not raise the mob cap if they can't spawn mobs.")
@SerdeComment("Might cause incompatibilities.")
@SerdeSkipDeserializingIf(IS_MISSING)
public boolean enableMobCapHacks = true;
}
@SerdeSkipDeserializingIf(IS_MISSING)
public Compat compat = new Compat();
public static class Compat {
@SerdeComment("Enables compat with Universal Graves, which allows everyone to pick up graves from minions")
@SerdeSkipDeserializingIf(IS_MISSING)
public boolean enableGravesCompat = true;
}
private static Path getPath() {
return FabricLoader.getInstance().getConfigDir().resolve(Minions.MOD_ID + ".toml");
}
public static MinionsConfig get() {
if(INSTANCE == null) {
loadConfig();
}
return INSTANCE;
}
public static void loadConfig() {
System.out.println("loading");
try {
CommentedConfig config = new TomlParser().parse(getPath(), (file, configFormat) -> {
CommentedConfig defaultConfig = ObjectSerializer.standard().serializeFields(new MinionsConfig(), TomlFormat::newConfig);
configFormat.createWriter().write(defaultConfig, file, WritingMode.REPLACE);
return true;
});
INSTANCE = ObjectDeserializer.standard().deserializeFields(config, MinionsConfig::new);
} catch (SerdeException | ParsingException | WritingException e) {
System.out.println("[minions] Error while reading config");
e.printStackTrace();
INSTANCE = new MinionsConfig();
}
}
/*public static void saveConfig() {
try {
CommentedConfig config = ObjectSerializer.standard().serializeFields(INSTANCE, TomlFormat::newConfig);
new TomlWriter().write(config, getPath(), WritingMode.REPLACE);
} catch (SerdeException | ParsingException | WritingException e) {
System.out.println("[minions] Error while writing config");
e.printStackTrace();
}
}*/
}