diff options
author | Bryson Steck <steck.bryson@gmail.com> | 2021-08-19 21:12:47 -0600 |
---|---|---|
committer | Bryson Steck <steck.bryson@gmail.com> | 2021-08-19 21:12:47 -0600 |
commit | 4af9e11bf4abae7f866b62af0877b4ce8bd94365 (patch) | |
tree | 8349a50f8c97f9cc634cf68fbcb66f4cf0f10090 | |
parent | 4cf58d64b58506334da594405f81d6e936aa6c3b (diff) | |
download | resurrection-4af9e11bf4abae7f866b62af0877b4ce8bd94365.tar resurrection-4af9e11bf4abae7f866b62af0877b4ce8bd94365.tar.gz resurrection-4af9e11bf4abae7f866b62af0877b4ce8bd94365.tar.bz2 |
completed setting parser
-rw-r--r-- | data/settings.resurrection | 4 | ||||
-rw-r--r-- | src/net/brysonsteck/Resurrection/ParseSettings.java | 82 | ||||
-rw-r--r-- | src/net/brysonsteck/Resurrection/Resurrection.java | 6 | ||||
-rw-r--r-- | src/net/brysonsteck/Resurrection/player/PlayerData.java | 7 | ||||
-rw-r--r-- | src/net/brysonsteck/Resurrection/plugin.yml | 2 |
5 files changed, 95 insertions, 6 deletions
diff --git a/data/settings.resurrection b/data/settings.resurrection index 3f24b3f..e3ef96e 100644 --- a/data/settings.resurrection +++ b/data/settings.resurrection @@ -1,3 +1,5 @@ # This is the default settings file. All lines starting with a '#' are treated as comments and will be ignored. # 'resurrection_time' is the amount of time in milliseconds Resurrection will force the player to wait. Default value is 8640000 milliseconds (24 hours). -resurrection_time=8640000
\ No newline at end of file +resurrection_time=8640000 +# 'debug' enables debug messages in the console and players' chat as the plugin runs. The only valid values are 'true' and 'false'. Default value is false. +debug=false
\ No newline at end of file diff --git a/src/net/brysonsteck/Resurrection/ParseSettings.java b/src/net/brysonsteck/Resurrection/ParseSettings.java index 03463e8..bd476e7 100644 --- a/src/net/brysonsteck/Resurrection/ParseSettings.java +++ b/src/net/brysonsteck/Resurrection/ParseSettings.java @@ -1,12 +1,94 @@ package net.brysonsteck.Resurrection; +import org.bukkit.Bukkit; +import org.bukkit.plugin.java.JavaPlugin; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; import java.util.Hashtable; +import java.util.Locale; public class ParseSettings { Hashtable<String, String> settings = new Hashtable<>(); + // <setting that failed / does it exist? (true = the value is wrong, false = the setting is missing)> + String failedSetting; + boolean settingsComplete; + boolean valuesComplete; + + public ParseSettings() { + try { + String rawData = ""; + BufferedReader reader = new BufferedReader(new FileReader("plugins/settings.resurrection")); + String line; + String[] setting; + while (true) { + line = reader.readLine(); + if (line == null) { + break; + } else if (!line.startsWith("#")) { + rawData = rawData + line; + setting = line.split("="); + settings.put(setting[0], setting[1]); + } + } + if (!verifySettings()) { + System.out.println("[Resurrection] There is a syntax issue inside the Settings file:"); + if (!settingsComplete) { + System.out.println("[Resurrection] The setting \"" + failedSetting + "\" is not present in the settings file.\n" + + "[Resurrection] Please double check the settings file to make sure the setting exists and a valid corresponding value is set.\n" + + "[Resurrection] Example: \"resurrection_time=8640000\"\n" + + "[Resurrection] Example: \"debug=false\""); + } else if (!valuesComplete) { + System.out.println("[Resurrection] The setting \"" + failedSetting + "\" contains an invalid or empty value.\n" + + "[Resurrection] Please double check the settings file to make sure that a valid value is set for this setting.\n" + + "[Resurrection] Example: \"resurrection_time=8640000\"\n" + + "[Resurrection] Example: \"debug=false\""); + } + System.out.println("[Resurrection] This file is crucial to Resurrection. Since the file is not complete, the plugin will now stop."); + System.exit(1); + } + } catch (IOException e) { + System.out.println("[Resurrection] There was an issue reading the Settings file."); + e.printStackTrace(); + } + } + + public boolean verifySettings() { + settingsComplete = false; + valuesComplete = false; + + if (!settings.containsKey("resurrection_time")) { + failedSetting = "resurrection_time"; + return false; + } else if (!settings.containsKey("debug")) { + failedSetting = "debug"; + return false; + } + settingsComplete = true; + + // is resurrection_time a long? + try { + long time = Long.parseLong(settings.get("resurrection_time")); + } catch (NumberFormatException | NullPointerException e) { + failedSetting = "resurrection_time"; + return false; + } + + // is debug a boolean? + if (settings.get("debug") == null) { + failedSetting = "debug"; + return false; + } + if (settings.get("debug").toLowerCase().contains("true") && settings.get("debug").toLowerCase().contains("false")) { + failedSetting = "debug"; + return false; + } + valuesComplete = true; + return true; } public String getSetting(String setting) { diff --git a/src/net/brysonsteck/Resurrection/Resurrection.java b/src/net/brysonsteck/Resurrection/Resurrection.java index 5879c0c..b487fdf 100644 --- a/src/net/brysonsteck/Resurrection/Resurrection.java +++ b/src/net/brysonsteck/Resurrection/Resurrection.java @@ -82,7 +82,6 @@ public class Resurrection extends JavaPlugin implements Listener { System.out.println("[Resurrection] An error has occurred creating the player data file!"); e.printStackTrace(); System.out.println("[Resurrection] This file is crucial to Resurrection. Since the file could not be created, the plugin will now stop."); - System.exit(1); } } else { System.out.println("[Resurrection] The player data file has been found!"); @@ -90,13 +89,13 @@ public class Resurrection extends JavaPlugin implements Listener { if (!settingsFile.exists()) { System.out.println("[Resurrection] Settings file does not exist. (This file is new with the 0.2 beta if you upgraded.) Creating now in the \"plugins\" directory..."); try { - playerFile.createNewFile(); + settingsFile.createNewFile(); System.out.println("[Resurrection] Settings file created successfully."); } catch (IOException e) { System.out.println("[Resurrection] An error has occurred creating the settings file!"); e.printStackTrace(); System.out.println("[Resurrection] This file is crucial to Resurrection. Since the file could not be created, the plugin will now stop."); - System.exit(1); + Bukkit.getPluginManager().disablePlugin(this); } } else { System.out.println("[Resurrection] The settings file has also been found!"); @@ -159,7 +158,6 @@ public class Resurrection extends JavaPlugin implements Listener { // TimeCheck timeCheck = new TimeCheck((System.currentTimeMillis() + 86212345) - System.currentTimeMillis()); // System.out.println(timeCheck.formatTime()); - } } diff --git a/src/net/brysonsteck/Resurrection/player/PlayerData.java b/src/net/brysonsteck/Resurrection/player/PlayerData.java index 582d940..eea7c3a 100644 --- a/src/net/brysonsteck/Resurrection/player/PlayerData.java +++ b/src/net/brysonsteck/Resurrection/player/PlayerData.java @@ -1,6 +1,10 @@ package net.brysonsteck.Resurrection.player; +import net.brysonsteck.Resurrection.Resurrection; +import org.bukkit.Bukkit; +import org.bukkit.plugin.java.JavaPlugin; + import java.io.*; import java.util.Hashtable; @@ -38,7 +42,10 @@ public class PlayerData { this.playerData.put(playerData[0], playerHash); } } catch (IOException e) { + System.out.println("[Resurrection] There was an issue reading the player data file."); e.printStackTrace(); + System.out.println("[Resurrection] This file is crucial to Resurrection. Since the file could not be read, the plugin will now stop."); + Bukkit.getPluginManager().disablePlugin(JavaPlugin.getProvidingPlugin(Resurrection.class)); } } diff --git a/src/net/brysonsteck/Resurrection/plugin.yml b/src/net/brysonsteck/Resurrection/plugin.yml index 8c6c6be..47d0e8e 100644 --- a/src/net/brysonsteck/Resurrection/plugin.yml +++ b/src/net/brysonsteck/Resurrection/plugin.yml @@ -1,7 +1,7 @@ main: net.brysonsteck.Resurrection.Resurrection name: Resurrection author: 'Bryson Steck' -version: '0.1 beta' +version: '0.2 beta' commands: about: description: Displays information about Resurrection. |