From e0a850fb698ca51662ab40d23e26774d715aa434 Mon Sep 17 00:00:00 2001 From: Aleksey-Terzi Date: Mon, 18 Apr 2016 19:06:44 +0300 Subject: [PATCH] Clear cache if config was updated since previous server start --- pom.xml | 2 +- .../com/lishid/orebfuscator/Orebfuscator.java | 56 +++++++++++-------- .../orebfuscator/OrebfuscatorConfig.java | 3 +- .../lishid/orebfuscator/utils/FileHelper.java | 39 +++++++++++++ src/main/resources/plugin.yml | 2 +- 5 files changed, 75 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/lishid/orebfuscator/utils/FileHelper.java diff --git a/pom.xml b/pom.xml index 3d9ac19b..ce181978 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.lishid orebfuscator - 4.0.1-SNAPSHOT + 4.0.2-SNAPSHOT jar Orebfuscator4 diff --git a/src/main/java/com/lishid/orebfuscator/Orebfuscator.java b/src/main/java/com/lishid/orebfuscator/Orebfuscator.java index 7a39796f..aa4ccef2 100644 --- a/src/main/java/com/lishid/orebfuscator/Orebfuscator.java +++ b/src/main/java/com/lishid/orebfuscator/Orebfuscator.java @@ -16,10 +16,12 @@ package com.lishid.orebfuscator; +import java.io.File; +import java.io.IOException; +import java.util.Objects; import java.util.logging.Logger; import org.bukkit.ChatColor; -import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.plugin.PluginManager; @@ -29,10 +31,10 @@ import com.lishid.orebfuscator.commands.OrebfuscatorCommandExecutor; import com.lishid.orebfuscator.hithack.BlockHitManager; import com.lishid.orebfuscator.hook.ProtocolLibHook; -import com.lishid.orebfuscator.internal.MinecraftInternals; import com.lishid.orebfuscator.listeners.OrebfuscatorBlockListener; import com.lishid.orebfuscator.listeners.OrebfuscatorEntityListener; import com.lishid.orebfuscator.listeners.OrebfuscatorPlayerListener; +import com.lishid.orebfuscator.utils.FileHelper; /** * Orebfuscator Anti X-RAY @@ -54,6 +56,9 @@ public void onEnable() { instance = this; // Load configurations OrebfuscatorConfig.load(); + + //Make sure cache is cleared if config was changed since last start + checkCacheAndConfigSynchronized(); // Orebfuscator events pm.registerEvents(new OrebfuscatorPlayerListener(), this); @@ -65,28 +70,31 @@ public void onEnable() { (new ProtocolLibHook()).register(this); usePL = true; } - - /* NoLagg is deprecated now - if (pm.getPlugin("NoLagg") != null && !usePL) { - getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { - @Override - public void run() { - Orebfuscator.log("WARNING! NoLagg Absolutely NEED ProtocolLib to work with Orebfuscator!"); - } - }, 0, 60 * 1000);// Warn every minute - } - */ - - // Disable spigot's built-in orebfuscator since it has limited functionality - try { - Class.forName("org.spigotmc.AntiXray"); - Orebfuscator.log("Spigot found! Automatically disabling built-in AntiXray."); - for (World world : getServer().getWorlds()) { - MinecraftInternals.tryDisableSpigotAntiXray(world); - } - } catch (Exception e) { - // Spigot not found - } + } + + private void checkCacheAndConfigSynchronized() { + String configContent = getConfig().saveToString(); + + File cacheFolder = OrebfuscatorConfig.getCacheFolder(); + File cacheConfigFile = new File(cacheFolder, "cache_config.yml"); + + try { + String cacheConfigContent = FileHelper.readFile(cacheConfigFile); + + if(Objects.equals(configContent, cacheConfigContent)) return; + + Orebfuscator.log("Clear cache."); + + if(cacheFolder.exists()) { + FileHelper.delete(cacheFolder); + } + + cacheFolder.mkdirs(); + + getConfig().save(cacheConfigFile); + } catch (IOException e) { + e.printStackTrace(); + } } @Override diff --git a/src/main/java/com/lishid/orebfuscator/OrebfuscatorConfig.java b/src/main/java/com/lishid/orebfuscator/OrebfuscatorConfig.java index 33c42f6c..f325a0ec 100644 --- a/src/main/java/com/lishid/orebfuscator/OrebfuscatorConfig.java +++ b/src/main/java/com/lishid/orebfuscator/OrebfuscatorConfig.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -547,7 +548,7 @@ private static FileConfiguration getConfig() { return Orebfuscator.instance.getConfig(); } - public static int clamp(int value, int min, int max) { + private static int clamp(int value, int min, int max) { if (value < min) value = min; if (value > max) diff --git a/src/main/java/com/lishid/orebfuscator/utils/FileHelper.java b/src/main/java/com/lishid/orebfuscator/utils/FileHelper.java new file mode 100644 index 00000000..af2c74fc --- /dev/null +++ b/src/main/java/com/lishid/orebfuscator/utils/FileHelper.java @@ -0,0 +1,39 @@ +package com.lishid.orebfuscator.utils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +public class FileHelper { + public static String readFile(File file) throws IOException { + if(!file.exists()) return null; + + StringBuilder text = new StringBuilder(""); + + BufferedReader reader = new BufferedReader(new FileReader(file)); + + try { + String line; + + while ((line = reader.readLine()) != null) { + text.append(line); + text.append("\n"); + } + } + finally { + reader.close(); + } + + return text.toString(); + } + + public static void delete(File file) { + if (file.isDirectory()) { + for (File child : file.listFiles()) + delete(child); + } + + file.delete(); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index bd2ebc36..90c7563b 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,4 +1,4 @@ -name: {project.name} +name: ${project.name} main: com.lishid.orebfuscator.Orebfuscator version: ${project.version} author: lishid