Fix NPE 🐛 while loading mod data on fresh installs

This commit is contained in:
Surya 2021-06-03 14:06:01 +05:30
parent c301967d67
commit 4e6e68dcc5
3 changed files with 24 additions and 4 deletions

View File

@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G
loader_version=0.11.3 loader_version=0.11.3
# Mod Properties # Mod Properties
mod_version = 1.16.5-1.0.0 mod_version = 1.16.5-1.0.1
maven_group = me.bionicbeanie.mods.savecoords maven_group = me.bionicbeanie.mods.savecoords
archives_base_name = save-coordinates archives_base_name = save-coordinates

View File

@ -13,6 +13,7 @@ import org.apache.commons.lang3.StringUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.ibm.icu.impl.locale.LocaleDistance.Data;
import me.bionicbeanie.mods.savecoords.IFileStore; import me.bionicbeanie.mods.savecoords.IFileStore;
import me.bionicbeanie.mods.savecoords.model.ConfigData; import me.bionicbeanie.mods.savecoords.model.ConfigData;
@ -52,8 +53,7 @@ class FileStore implements IFileStore {
public ConfigData readConfigData() throws IOException { public ConfigData readConfigData() throws IOException {
ModData data = load(); ModData data = load();
ConfigData ret = data.getConfigData(); return data.getConfigData();
return ret != null ? ret : new ConfigData();
} }
@ -117,12 +117,32 @@ class FileStore implements IFileStore {
private ModData load() throws IOException { private ModData load() throws IOException {
List<String> lines = Files.readAllLines(saveFilePath); List<String> lines = Files.readAllLines(saveFilePath);
try { try {
return gson.fromJson(String.join("", lines), ModData.class); ModData data = gson.fromJson(String.join("", lines), ModData.class);
if(data == null) {
data = new ModData();
}
if(data.getDefaultWorldName() == null) {
data.setDefaultWorldName("");
}
if(data.getPositions() == null) {
data.setPositions(new PlayerPosition[] {});
}
if(data.getConfigData() == null) {
data.setConfigData(new ConfigData());
}
return data;
} catch (Exception e) { } catch (Exception e) {
// Fallback for old versions // Fallback for old versions
ModData data = new ModData(); ModData data = new ModData();
data.setDefaultWorldName(""); data.setDefaultWorldName("");
data.setPositions(gson.fromJson(String.join("", lines), PlayerPosition[].class)); data.setPositions(gson.fromJson(String.join("", lines), PlayerPosition[].class));
data.setConfigData(new ConfigData());
dump(data); dump(data);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB