Added possibility to store configs at costum locations

This commit is contained in:
Frank Bauer 2021-07-19 19:54:16 +02:00
parent 8d5f235684
commit fee7cbc93a
3 changed files with 39 additions and 16 deletions

View file

@ -1,5 +1,7 @@
package ru.bclib.config;
import java.io.File;
import org.jetbrains.annotations.Nullable;
import ru.bclib.BCLib;
import ru.bclib.config.ConfigKeeper.BooleanEntry;
@ -15,7 +17,11 @@ public abstract class Config {
protected abstract void registerEntries();
public Config(String modID, String group){
this.keeper = new ConfigKeeper(modID, group);
this(modID, group, null);
}
protected Config(String modID, String group, File path) {
this.keeper = new ConfigKeeper(modID, group, path);
this.registerEntries();
}

View file

@ -1,17 +1,20 @@
package ru.bclib.config;
import java.io.File;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Supplier;
import org.jetbrains.annotations.Nullable;
import com.google.common.collect.Maps;
import com.google.common.reflect.TypeToken;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.minecraft.util.GsonHelper;
import org.jetbrains.annotations.Nullable;
import ru.bclib.util.JsonFactory;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Supplier;
import net.minecraft.util.GsonHelper;
import ru.bclib.util.JsonFactory;
public final class ConfigKeeper {
private final Map<ConfigKey, Entry<?>> configEntries = Maps.newHashMap();
@ -21,7 +24,11 @@ public final class ConfigKeeper {
private boolean changed = false;
public ConfigKeeper(String modID, String group) {
this.writer = new ConfigWriter(modID, group);
this(modID, group, null);
}
protected ConfigKeeper(String modID, String group, File path) {
this.writer = new ConfigWriter(modID, group, path);
this.configObject = writer.load();
}

View file

@ -1,13 +1,14 @@
package ru.bclib.config;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.fabricmc.loader.api.FabricLoader;
import ru.bclib.util.JsonFactory;
import java.io.File;
import java.nio.file.Path;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.fabricmc.loader.api.FabricLoader;
import ru.bclib.util.JsonFactory;
public class ConfigWriter {
private final static Path GAME_CONFIG_DIR = FabricLoader.getInstance().getConfigDir();
@ -15,7 +16,16 @@ public class ConfigWriter {
private JsonObject configObject;
public ConfigWriter(String modID, String configFile) {
this.configFile = new File(new File(GAME_CONFIG_DIR.toFile(), modID), configFile + ".json");
this(modID, configFile, null);
}
public ConfigWriter(String modID, String configFile, File configFolder) {
this.configFile = new File(
(configFolder==null
? GAME_CONFIG_DIR.resolve(modID).toFile()
: new File(configFolder, modID)),
configFile + ".json"
);
File parent = this.configFile.getParentFile();
if (!parent.exists()) {
parent.mkdirs();