From 3cd21b8a7882f3c6cf27aa65742b25f635b3426d Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Fri, 19 Jul 2019 14:48:00 +0200 Subject: [PATCH] Guard against corrupted config files on 1.14 --- src/main/java/com/replaymod/core/SettingsRegistry.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/replaymod/core/SettingsRegistry.java b/src/main/java/com/replaymod/core/SettingsRegistry.java index 80a3147e..83b843d9 100644 --- a/src/main/java/com/replaymod/core/SettingsRegistry.java +++ b/src/main/java/com/replaymod/core/SettingsRegistry.java @@ -1,6 +1,8 @@ package com.replaymod.core; 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.Modifier; @@ -30,6 +32,7 @@ import java.nio.file.Path; import static com.replaymod.core.versions.MCVer.*; public class SettingsRegistry { + private static Logger LOGGER = LogManager.getLogger(); private Map, Object> settings = Collections.synchronizedMap(new LinkedHashMap<>()); //#if MC>=11400 private final Path configFile = getMinecraft().runDirectory.toPath().resolve("config/replaymod.json"); @@ -59,6 +62,11 @@ public class SettingsRegistry { } Gson gson = new Gson(); JsonObject root = gson.fromJson(config, JsonObject.class); + if (root == null) { + LOGGER.error("Config file {} appears corrupted: {}", configFile, config); + save(); + return; + } for (Map.Entry, Object> entry : settings.entrySet()) { SettingKey key = entry.getKey(); JsonElement category = root.get(key.getCategory());