Added possibility to store configs at costum locations
This commit is contained in:
parent
8d5f235684
commit
fee7cbc93a
3 changed files with 39 additions and 16 deletions
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue