Guard against corrupted config files on 1.14
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package com.replaymod.core;
|
package com.replaymod.core;
|
||||||
|
|
||||||
import com.replaymod.core.events.SettingsChangedCallback;
|
import com.replaymod.core.events.SettingsChangedCallback;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
@@ -30,6 +32,7 @@ import java.nio.file.Path;
|
|||||||
import static com.replaymod.core.versions.MCVer.*;
|
import static com.replaymod.core.versions.MCVer.*;
|
||||||
|
|
||||||
public class SettingsRegistry {
|
public class SettingsRegistry {
|
||||||
|
private static Logger LOGGER = LogManager.getLogger();
|
||||||
private Map<SettingKey<?>, Object> settings = Collections.synchronizedMap(new LinkedHashMap<>());
|
private Map<SettingKey<?>, Object> settings = Collections.synchronizedMap(new LinkedHashMap<>());
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
private final Path configFile = getMinecraft().runDirectory.toPath().resolve("config/replaymod.json");
|
private final Path configFile = getMinecraft().runDirectory.toPath().resolve("config/replaymod.json");
|
||||||
@@ -59,6 +62,11 @@ public class SettingsRegistry {
|
|||||||
}
|
}
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
JsonObject root = gson.fromJson(config, JsonObject.class);
|
JsonObject root = gson.fromJson(config, JsonObject.class);
|
||||||
|
if (root == null) {
|
||||||
|
LOGGER.error("Config file {} appears corrupted: {}", configFile, config);
|
||||||
|
save();
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (Map.Entry<SettingKey<?>, Object> entry : settings.entrySet()) {
|
for (Map.Entry<SettingKey<?>, Object> entry : settings.entrySet()) {
|
||||||
SettingKey<?> key = entry.getKey();
|
SettingKey<?> key = entry.getKey();
|
||||||
JsonElement category = root.get(key.getCategory());
|
JsonElement category = root.get(key.getCategory());
|
||||||
|
|||||||
Reference in New Issue
Block a user