From fee7cbc93ad0ff6522abc3b768c7f3300d5ecb9e Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Mon, 19 Jul 2021 19:54:16 +0200 Subject: [PATCH] Added possibility to store configs at costum locations --- src/main/java/ru/bclib/config/Config.java | 10 ++++++-- .../java/ru/bclib/config/ConfigKeeper.java | 23 ++++++++++++------- .../java/ru/bclib/config/ConfigWriter.java | 22 +++++++++++++----- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/main/java/ru/bclib/config/Config.java b/src/main/java/ru/bclib/config/Config.java index a1df5824..9219589a 100644 --- a/src/main/java/ru/bclib/config/Config.java +++ b/src/main/java/ru/bclib/config/Config.java @@ -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; @@ -13,9 +15,13 @@ public abstract class Config { protected final ConfigKeeper keeper; protected abstract void registerEntries(); + + public Config(String modID, String group){ + this(modID, group, null); + } - public Config(String modID, String group) { - this.keeper = new ConfigKeeper(modID, group); + protected Config(String modID, String group, File path) { + this.keeper = new ConfigKeeper(modID, group, path); this.registerEntries(); } diff --git a/src/main/java/ru/bclib/config/ConfigKeeper.java b/src/main/java/ru/bclib/config/ConfigKeeper.java index 841e7d27..0b5daf62 100644 --- a/src/main/java/ru/bclib/config/ConfigKeeper.java +++ b/src/main/java/ru/bclib/config/ConfigKeeper.java @@ -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> 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(); } diff --git a/src/main/java/ru/bclib/config/ConfigWriter.java b/src/main/java/ru/bclib/config/ConfigWriter.java index 5884641d..98f70826 100644 --- a/src/main/java/ru/bclib/config/ConfigWriter.java +++ b/src/main/java/ru/bclib/config/ConfigWriter.java @@ -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();