Преглед изворни кода

Try to get a better config saver

Unknown пре 6 година
родитељ
комит
4e1c5cc9e1

+ 1 - 1
build.gradle

@@ -6,7 +6,7 @@ sourceCompatibility = 1.8
 targetCompatibility = 1.8
 
 archivesBaseName = "RoughlyEnoughItems"
-version = "1.5-13"
+version = "1.5-14"
 
 minecraft {
 }

+ 22 - 14
src/main/java/me/shedaniel/Core.java

@@ -11,8 +11,13 @@ import net.fabricmc.fabric.events.client.ClientTickEvent;
 import net.fabricmc.loader.FabricLoader;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.item.ItemStack;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
-import java.io.*;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.LinkedList;
@@ -28,6 +33,7 @@ public class Core implements ClientModInitializer {
     public static REIConfig config;
     public static ClientListener clientListener;
     public static boolean centreSearchBox;
+    public static Logger LOGGER = LogManager.getFormatterLogger("REI");
     
     @Override
     public void onInitializeClient() {
@@ -73,33 +79,35 @@ public class Core implements ClientModInitializer {
     }
     
     public static void loadConfig() throws IOException {
-        if (!configFile.exists())
-            loadDefaultConfig();
+        if (!configFile.exists() || !configFile.canRead()) {
+            config = new REIConfig();
+            saveConfig();
+            return;
+        }
         boolean failed = false;
         try {
-            InputStream in = Files.newInputStream(configFile.toPath());
-            config = REIConfig.GSON.fromJson(new InputStreamReader(in), REIConfig.class);
+            config = REIConfig.GSON.fromJson(new InputStreamReader(Files.newInputStream(configFile.toPath())), REIConfig.class);
         } catch (Exception e) {
             failed = true;
         }
         if (failed || config == null) {
-            System.out.println("[REI] Failed to load config! Overwriting with default config.");
+            Core.LOGGER.error("Failed to load config! Overwriting with default config.");
             config = new REIConfig();
         }
         saveConfig();
     }
     
-    public static void loadDefaultConfig() throws IOException {
-        config = new REIConfig();
-        saveConfig();
-    }
-    
     public static void saveConfig() throws IOException {
         configFile.getParentFile().mkdirs();
-        if (configFile.exists())
-            configFile.delete();
-        try (PrintWriter writer = new PrintWriter(configFile)) {
+        if (!configFile.exists() && !configFile.createNewFile()) {
+            Core.LOGGER.error("Failed to save config! Overwriting with default config.");
+            config = new REIConfig();
+            return;
+        }
+        FileWriter writer = new FileWriter(configFile, false);
+        try {
             REIConfig.GSON.toJson(config, writer);
+        } finally {
             writer.close();
         }
     }

+ 5 - 1
src/main/java/me/shedaniel/config/REIConfig.java

@@ -7,7 +7,11 @@ import java.awt.event.KeyEvent;
 
 public class REIConfig {
     
-    public static Gson GSON = new GsonBuilder().setPrettyPrinting().create();
+    public static Gson GSON = new GsonBuilder()
+            .setPrettyPrinting()
+            .serializeNulls()
+            .disableHtmlEscaping()
+            .create();
     
     public int recipeKeyBind = KeyEvent.VK_R;
     public int usageKeyBind = KeyEvent.VK_U;

+ 1 - 1
src/main/java/me/shedaniel/impl/REIRecipeManager.java

@@ -40,7 +40,7 @@ public class REIRecipeManager implements IRecipeManager {
     
     public static REIRecipeManager instance() {
         if (myInstance == null) {
-            System.out.println("Newing me up.");
+            Core.LOGGER.info("Newing me up.");
             myInstance = new REIRecipeManager();
         }
         return myInstance;

+ 1 - 1
src/main/java/me/shedaniel/mixins/MixinDoneLoading.java

@@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
 public class MixinDoneLoading {
     @Inject(method = "initialize", at = @At("RETURN"))
     private static void onBootstrapRegister(CallbackInfo ci) {
-        System.out.println("Done Loading");
+        Core.LOGGER.info("Done Loading");
         Core.getListeners(DoneLoading.class).forEach(DoneLoading::onDoneLoading);
     }
 }