From 711658fe38d6ad95e70177dae8853e184ef503a2 Mon Sep 17 00:00:00 2001 From: coolGi2007 Date: Sat, 26 Feb 2022 04:48:43 +0000 Subject: [PATCH] Finished file handling (all that is needed to fix it is to fix line 80 in core/config/file/ConfigFileHandling.java) --- .../seibel/lod/core/config/ConfigBase.java | 4 +- .../seibel/lod/core/config/ConfigEntry.java | 4 ++ .../core/config/file/ConfigFileHandling.java | 39 ++++++++++++++++++- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/seibel/lod/core/config/ConfigBase.java b/src/main/java/com/seibel/lod/core/config/ConfigBase.java index fd8aecbe0..4f2d229e2 100644 --- a/src/main/java/com/seibel/lod/core/config/ConfigBase.java +++ b/src/main/java/com/seibel/lod/core/config/ConfigBase.java @@ -43,8 +43,8 @@ public class ConfigBase { } catch (IllegalAccessException exception) { exception.printStackTrace(); } - entries.get(entries.size() - 1).category = (category.isEmpty() ? "" : category + "."); - entries.get(entries.size() - 1).category = field.getName(); + entries.get(entries.size() - 1).category = category; + entries.get(entries.size() - 1).name = field.getName(); } if (field.isAnnotationPresent(ConfigAnnotations.Category.class)) { // If it's a category then init the stuff inside it and put it in the category list diff --git a/src/main/java/com/seibel/lod/core/config/ConfigEntry.java b/src/main/java/com/seibel/lod/core/config/ConfigEntry.java index 6d93e5e4a..b5bf8c3a6 100644 --- a/src/main/java/com/seibel/lod/core/config/ConfigEntry.java +++ b/src/main/java/com/seibel/lod/core/config/ConfigEntry.java @@ -35,6 +35,10 @@ public class ConfigEntry { this.value = new_value; save(); } + /** Sets the value without saving */ + public void setWTSave(T new_value) { + this.value = new_value; + } /** Gets the min value */ public T getMin() { diff --git a/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java b/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java index 16b6bc509..63dd0cced 100644 --- a/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java +++ b/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java @@ -2,6 +2,7 @@ package com.seibel.lod.core.config.file; import com.electronwill.nightconfig.core.file.CommentedFileConfig; import com.seibel.lod.core.ModInfo; +import com.seibel.lod.core.config.ConfigBase; import com.seibel.lod.core.config.ConfigEntry; import com.seibel.lod.core.util.SingletonHandler; import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftWrapper; @@ -29,17 +30,33 @@ public class ConfigFileHandling { } loadConfig(config); + for (ConfigEntry entry : ConfigBase.entries) { + createComment(entry, config); + saveEntry(entry, config); + } + config.close(); } public static void loadFromFile() { try { - config.load(); + if (Files.exists(ConfigPath)) + config.load(); + else { + saveToFile(); + return; + } } catch (Exception e) { saveToFile(); return; } + for (ConfigEntry entry : ConfigBase.entries) { + createComment(entry, config); + loadEntry(entry, config); + System.out.println(entry.get()); + } + config.close(); } @@ -49,7 +66,7 @@ public class ConfigFileHandling { config.close(); } public static void saveEntry(ConfigEntry entry, CommentedFileConfig workConfig) { - + workConfig.set(entry.getNameWCategory(), entry.get()); } public static void loadEntry(ConfigEntry entry) { loadConfig(config); @@ -58,7 +75,25 @@ public class ConfigFileHandling { } public static void loadEntry(ConfigEntry entry, CommentedFileConfig workConfig) { + if (workConfig.contains(entry.getNameWCategory())) { + if (entry.get().getClass().isEnum()) + entry.setWTSave(workConfig.getEnum(entry.getNameWCategory(), entry.get().getClass())); + else + entry.setWTSave(workConfig.get(entry.getNameWCategory())); + System.out.println(workConfig.get(entry.getNameWCategory()).getClass().toString()); +// entry.setWTSave(workConfig.get(entry.getNameWCategory())); + } else { + saveEntry(entry, workConfig); + } + } + public static void createComment(ConfigEntry entry) { + loadConfig(config); + createComment(entry, config); + config.close(); + } + public static void createComment(ConfigEntry entry, CommentedFileConfig workConfig) { + workConfig.setComment(entry.getNameWCategory(), entry.getComment()); } public static void loadConfig(CommentedFileConfig config) {