Config reload after write and hash-debug

This commit is contained in:
Frank 2021-08-14 15:05:41 +02:00
parent 7e36ac4159
commit f28c3e0594
7 changed files with 76 additions and 5 deletions

View file

@ -3,6 +3,7 @@ package ru.bclib.config;
import org.jetbrains.annotations.Nullable;
import ru.bclib.BCLib;
import ru.bclib.api.dataexchange.DataExchangeAPI;
import ru.bclib.api.dataexchange.handler.DataExchange;
import ru.bclib.config.ConfigKeeper.BooleanEntry;
import ru.bclib.config.ConfigKeeper.Entry;
import ru.bclib.config.ConfigKeeper.FloatEntry;
@ -10,7 +11,12 @@ import ru.bclib.config.ConfigKeeper.IntegerEntry;
import ru.bclib.config.ConfigKeeper.RangeEntry;
import ru.bclib.config.ConfigKeeper.StringEntry;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public abstract class Config {
protected final static Map<DataExchange.AutoSyncID, Config> autoSyncConfigs = new HashMap<>();
protected final ConfigKeeper keeper;
protected final boolean autoSync;
protected abstract void registerEntries();
@ -26,13 +32,26 @@ public abstract class Config {
this.autoSync = autoSync;
if (autoSync) {
DataExchangeAPI.addAutoSyncFile(BCLib.MOD_ID, "CONFIG_" + modID + "_" + group, keeper.getConfigFile());
final String uid = "CONFIG_" + modID + "_" + group;
DataExchangeAPI.addAutoSyncFile(BCLib.MOD_ID, uid, keeper.getConfigFile());
autoSyncConfigs.put(new DataExchange.AutoSyncID(modID, uid), this);
}
}
public void saveChanges() {
this.keeper.save();
}
public static void reloadSyncedConfig(DataExchange.AutoSyncID aid, File file){
Config cfg = autoSyncConfigs.get(aid);
if (cfg!=null) {
cfg.reload();
}
}
public void reload() {
this.keeper.reload();
BCLib.LOGGER.info("Did Reload " + keeper.getConfigFile());
}
@Nullable
public <T, E extends Entry<T>> E getEntry(ConfigKey key, Class<E> type) {
@ -165,4 +184,6 @@ public abstract class Config {
}
return false;
}
}

View file

@ -6,6 +6,7 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.minecraft.util.GsonHelper;
import org.jetbrains.annotations.Nullable;
import ru.bclib.api.dataexchange.handler.DataExchange;
import ru.bclib.util.JsonFactory;
import java.io.File;
@ -16,7 +17,7 @@ import java.util.function.Supplier;
public final class ConfigKeeper {
private final Map<ConfigKey, Entry<?>> configEntries = Maps.newHashMap();
private final JsonObject configObject;
private JsonObject configObject;
private final ConfigWriter writer;
private boolean changed = false;
@ -35,6 +36,11 @@ public final class ConfigKeeper {
this.writer.save();
this.changed = false;
}
void reload() {
this.configObject = this.writer.reload();
this.changed = false;
}
private <T, E extends Entry<T>> void initializeEntry(ConfigKey key, E entry) {
if (configObject == null) {

View file

@ -37,6 +37,11 @@ public class ConfigWriter {
}
save(configFile, configObject);
}
JsonObject reload() {
configObject = load(configFile);
return configObject;
}
public JsonObject load() {
if (configObject == null) {