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; package ru.bclib.config;
import java.io.File;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import ru.bclib.BCLib; import ru.bclib.BCLib;
import ru.bclib.config.ConfigKeeper.BooleanEntry; import ru.bclib.config.ConfigKeeper.BooleanEntry;
@ -13,9 +15,13 @@ public abstract class Config {
protected final ConfigKeeper keeper; protected final ConfigKeeper keeper;
protected abstract void registerEntries(); protected abstract void registerEntries();
public Config(String modID, String group){
this(modID, group, null);
}
public Config(String modID, String group) { protected Config(String modID, String group, File path) {
this.keeper = new ConfigKeeper(modID, group); this.keeper = new ConfigKeeper(modID, group, path);
this.registerEntries(); this.registerEntries();
} }

View file

@ -1,17 +1,20 @@
package ru.bclib.config; 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.collect.Maps;
import com.google.common.reflect.TypeToken; import com.google.common.reflect.TypeToken;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; 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 net.minecraft.util.GsonHelper;
import java.util.Map; import ru.bclib.util.JsonFactory;
import java.util.function.Consumer;
import java.util.function.Supplier;
public final class ConfigKeeper { public final class ConfigKeeper {
private final Map<ConfigKey, Entry<?>> configEntries = Maps.newHashMap(); private final Map<ConfigKey, Entry<?>> configEntries = Maps.newHashMap();
@ -21,7 +24,11 @@ public final class ConfigKeeper {
private boolean changed = false; private boolean changed = false;
public ConfigKeeper(String modID, String group) { 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(); this.configObject = writer.load();
} }

View file

@ -1,13 +1,14 @@
package ru.bclib.config; 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.io.File;
import java.nio.file.Path; 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 { public class ConfigWriter {
private final static Path GAME_CONFIG_DIR = FabricLoader.getInstance().getConfigDir(); private final static Path GAME_CONFIG_DIR = FabricLoader.getInstance().getConfigDir();
@ -15,7 +16,16 @@ public class ConfigWriter {
private JsonObject configObject; private JsonObject configObject;
public ConfigWriter(String modID, String configFile) { 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(); File parent = this.configFile.getParentFile();
if (!parent.exists()) { if (!parent.exists()) {
parent.mkdirs(); parent.mkdirs();