completed setting parser

This commit is contained in:
Bryson Steck 2021-08-19 21:12:47 -06:00
parent 4cf58d64b5
commit 4af9e11bf4
5 changed files with 96 additions and 7 deletions

View file

@ -1,3 +1,5 @@
# This is the default settings file. All lines starting with a '#' are treated as comments and will be ignored. # 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' is the amount of time in milliseconds Resurrection will force the player to wait. Default value is 8640000 milliseconds (24 hours).
resurrection_time=8640000 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

View file

@ -1,12 +1,94 @@
package net.brysonsteck.Resurrection; 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.Hashtable;
import java.util.Locale;
public class ParseSettings { public class ParseSettings {
Hashtable<String, String> settings = new Hashtable<>(); Hashtable<String, String> settings = new Hashtable<>();
public ParseSettings() { // <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) { public String getSetting(String setting) {

View file

@ -82,7 +82,6 @@ public class Resurrection extends JavaPlugin implements Listener {
System.out.println("[Resurrection] An error has occurred creating the player data file!"); System.out.println("[Resurrection] An error has occurred creating the player data file!");
e.printStackTrace(); 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.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 { } else {
System.out.println("[Resurrection] The player data file has been found!"); 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()) { 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..."); 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 { try {
playerFile.createNewFile(); settingsFile.createNewFile();
System.out.println("[Resurrection] Settings file created successfully."); System.out.println("[Resurrection] Settings file created successfully.");
} catch (IOException e) { } catch (IOException e) {
System.out.println("[Resurrection] An error has occurred creating the settings file!"); System.out.println("[Resurrection] An error has occurred creating the settings file!");
e.printStackTrace(); 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.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 { } else {
System.out.println("[Resurrection] The settings file has also been found!"); 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()); // TimeCheck timeCheck = new TimeCheck((System.currentTimeMillis() + 86212345) - System.currentTimeMillis());
// System.out.println(timeCheck.formatTime()); // System.out.println(timeCheck.formatTime());
} }
} }

View file

@ -1,6 +1,10 @@
package net.brysonsteck.Resurrection.player; 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.io.*;
import java.util.Hashtable; import java.util.Hashtable;
@ -38,7 +42,10 @@ public class PlayerData {
this.playerData.put(playerData[0], playerHash); this.playerData.put(playerData[0], playerHash);
} }
} catch (IOException e) { } catch (IOException e) {
System.out.println("[Resurrection] There was an issue reading the player data file.");
e.printStackTrace(); 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));
} }
} }

View file

@ -1,7 +1,7 @@
main: net.brysonsteck.Resurrection.Resurrection main: net.brysonsteck.Resurrection.Resurrection
name: Resurrection name: Resurrection
author: 'Bryson Steck' author: 'Bryson Steck'
version: '0.1 beta' version: '0.2 beta'
commands: commands:
about: about:
description: Displays information about Resurrection. description: Displays information about Resurrection.