diff --git a/.classpath b/.classpath deleted file mode 100644 index 658fc2e..0000000 --- a/.classpath +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 38ddd53..0000000 --- a/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - PlayerVaults - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 60105c1..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,5 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f..0000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/src/main/java/com/drtshock/playervaults/Main.java b/src/main/java/com/drtshock/playervaults/Main.java index f3d7655..a074047 100644 --- a/src/main/java/com/drtshock/playervaults/Main.java +++ b/src/main/java/com/drtshock/playervaults/Main.java @@ -71,7 +71,7 @@ public class Main extends JavaPlugin { dropOnDeath = true; inventoriesToDrop = getConfig().getInt("drop-on-death.inventories"); } - + new File(directory + File.separator + "backups").mkdirs(); config = getConfig(); @@ -112,56 +112,19 @@ public class Main extends JavaPlugin { if (getServer().getPluginManager().getPlugin("Vault") == null) { return false; } - RegisteredServiceProvider rsp = getServer().getServicesManager().getRegistration(Economy.class); if (rsp == null) { return false; } - econ = rsp.getProvider(); useVault = true; - return econ != null; } - public void updateConfig() { - if(getConfig().get("check-update") == null) { - getConfig().set("check-update", true); - } - - if(getConfig().get("economy.enabled") == null) { - getConfig().set("economy.enabled", false); - } - - if(getConfig().get("economy.cost-to-create") == null) { - getConfig().set("economy.cost-to-create", 100); - } - - if(getConfig().get("economy.cost-to-open") == null) { - getConfig().set("economy.cost-to-create", 10); - } - - if(getConfig().get("economy.refund-on-delete") == null) { - getConfig().set("economy.refund-on-delete", 50); - } - - if(getConfig().get("drop-on-death.enabled") == null) { - getConfig().set("drop-on-death.enabled", false); - } - - if(getConfig().get("drop-on-death.inventories") == null) { - getConfig().set("drop-on-death.inventories", 1); - } - - saveConfig(); - } - public void loadConfig() { File config = new File(getDataFolder() + File.separator + "config.yml"); if(!config.exists()) { saveDefaultConfig(); - } else { - updateConfig(); } } @@ -195,7 +158,7 @@ public class Main extends JavaPlugin { public YamlConfiguration getLang() { return lang; } - + public File getLangFile() { return langFile; } diff --git a/src/main/java/com/drtshock/playervaults/util/BackwardsCompatibility.java b/src/main/java/com/drtshock/playervaults/util/BackwardsCompatibility.java index 0343766..9580b61 100644 --- a/src/main/java/com/drtshock/playervaults/util/BackwardsCompatibility.java +++ b/src/main/java/com/drtshock/playervaults/util/BackwardsCompatibility.java @@ -83,7 +83,6 @@ public class BackwardsCompatibility { return inventory; } - @SuppressWarnings("unused") private static CraftItemStack getCraftVersion(org.bukkit.inventory.ItemStack stack) { if ((stack instanceof CraftItemStack)) return (CraftItemStack) stack; diff --git a/src/main/java/com/drtshock/playervaults/util/EconomyOperations.java b/src/main/java/com/drtshock/playervaults/util/EconomyOperations.java index 596d271..aa9f66b 100644 --- a/src/main/java/com/drtshock/playervaults/util/EconomyOperations.java +++ b/src/main/java/com/drtshock/playervaults/util/EconomyOperations.java @@ -19,7 +19,7 @@ public class EconomyOperations { private static YamlConfiguration bukkitConfig = new YamlConfiguration(); public static Main plugin; - + public EconomyOperations(Main instance) throws FileNotFoundException, IOException, InvalidConfigurationException { plugin = instance; configFile = new File(plugin.getDataFolder(), "config.yml"); diff --git a/src/main/java/com/drtshock/playervaults/util/Metrics.java b/src/main/java/com/drtshock/playervaults/util/Metrics.java index 45b9708..0733408 100644 --- a/src/main/java/com/drtshock/playervaults/util/Metrics.java +++ b/src/main/java/com/drtshock/playervaults/util/Metrics.java @@ -67,568 +67,568 @@ import java.util.logging.Level; */ public class Metrics { - /** - * The current revision number - */ - private final static int REVISION = 5; + /** + * The current revision number + */ + private final static int REVISION = 5; - /** - * The base url of the metrics domain - */ - private static final String BASE_URL = "http://mcstats.org"; + /** + * The base url of the metrics domain + */ + private static final String BASE_URL = "http://mcstats.org"; - /** - * The url used to report a server's status - */ - private static final String REPORT_URL = "/report/%s"; + /** + * The url used to report a server's status + */ + private static final String REPORT_URL = "/report/%s"; - /** - * The separator to use for custom data. This MUST NOT change unless you are hosting your own - * version of metrics and want to change it. - */ - private static final String CUSTOM_DATA_SEPARATOR = "~~"; + /** + * The separator to use for custom data. This MUST NOT change unless you are hosting your own + * version of metrics and want to change it. + */ + private static final String CUSTOM_DATA_SEPARATOR = "~~"; - /** - * Interval of time to ping (in minutes) - */ - private static final int PING_INTERVAL = 10; + /** + * Interval of time to ping (in minutes) + */ + private static final int PING_INTERVAL = 10; - /** - * The plugin this metrics submits for - */ - private final Plugin plugin; + /** + * The plugin this metrics submits for + */ + private final Plugin plugin; - /** - * All of the custom graphs to submit to metrics - */ - private final Set graphs = Collections.synchronizedSet(new HashSet()); + /** + * All of the custom graphs to submit to metrics + */ + private final Set graphs = Collections.synchronizedSet(new HashSet()); - /** - * The default graph, used for addCustomData when you don't want a specific graph - */ - private final Graph defaultGraph = new Graph("Default"); + /** + * The default graph, used for addCustomData when you don't want a specific graph + */ + private final Graph defaultGraph = new Graph("Default"); - /** - * The plugin configuration file - */ - private final YamlConfiguration configuration; + /** + * The plugin configuration file + */ + private final YamlConfiguration configuration; + + /** + * The plugin configuration file + */ + private final File configurationFile; - /** - * The plugin configuration file - */ - private final File configurationFile; + /** + * Unique server id + */ + private final String guid; - /** - * Unique server id - */ - private final String guid; + /** + * Lock for synchronization + */ + private final Object optOutLock = new Object(); - /** - * Lock for synchronization - */ - private final Object optOutLock = new Object(); + /** + * Id of the scheduled task + */ + private volatile int taskId = -1; - /** - * Id of the scheduled task - */ - private volatile int taskId = -1; + public Metrics(final Plugin plugin) throws IOException { + if (plugin == null) { + throw new IllegalArgumentException("Plugin cannot be null"); + } - public Metrics(final Plugin plugin) throws IOException { - if (plugin == null) { - throw new IllegalArgumentException("Plugin cannot be null"); - } + this.plugin = plugin; - this.plugin = plugin; + // load the config + configurationFile = getConfigFile(); + configuration = YamlConfiguration.loadConfiguration(configurationFile); - // load the config - configurationFile = getConfigFile(); - configuration = YamlConfiguration.loadConfiguration(configurationFile); + // add some defaults + configuration.addDefault("opt-out", false); + configuration.addDefault("guid", UUID.randomUUID().toString()); - // add some defaults - configuration.addDefault("opt-out", false); - configuration.addDefault("guid", UUID.randomUUID().toString()); + // Do we need to create the file? + if (configuration.get("guid", null) == null) { + configuration.options().header("http://mcstats.org").copyDefaults(true); + configuration.save(configurationFile); + } - // Do we need to create the file? - if (configuration.get("guid", null) == null) { - configuration.options().header("http://mcstats.org").copyDefaults(true); - configuration.save(configurationFile); - } + // Load the guid then + guid = configuration.getString("guid"); + } - // Load the guid then - guid = configuration.getString("guid"); - } + /** + * Construct and create a Graph that can be used to separate specific plotters to their own graphs + * on the metrics website. Plotters can be added to the graph object returned. + * + * @param name The name of the graph + * @return Graph object created. Will never return NULL under normal circumstances unless bad parameters are given + */ + public Graph createGraph(final String name) { + if (name == null) { + throw new IllegalArgumentException("Graph name cannot be null"); + } - /** - * Construct and create a Graph that can be used to separate specific plotters to their own graphs - * on the metrics website. Plotters can be added to the graph object returned. - * - * @param name The name of the graph - * @return Graph object created. Will never return NULL under normal circumstances unless bad parameters are given - */ - public Graph createGraph(final String name) { - if (name == null) { - throw new IllegalArgumentException("Graph name cannot be null"); - } + // Construct the graph object + final Graph graph = new Graph(name); - // Construct the graph object - final Graph graph = new Graph(name); + // Now we can add our graph + graphs.add(graph); - // Now we can add our graph - graphs.add(graph); + // and return back + return graph; + } - // and return back - return graph; - } + /** + * Add a Graph object to Metrics that represents data for the plugin that should be sent to the backend + * + * @param graph The name of the graph + */ + public void addGraph(final Graph graph) { + if (graph == null) { + throw new IllegalArgumentException("Graph cannot be null"); + } - /** - * Add a Graph object to Metrics that represents data for the plugin that should be sent to the backend - * - * @param graph The name of the graph - */ - public void addGraph(final Graph graph) { - if (graph == null) { - throw new IllegalArgumentException("Graph cannot be null"); - } + graphs.add(graph); + } - graphs.add(graph); - } + /** + * Adds a custom data plotter to the default graph + * + * @param plotter The plotter to use to plot custom data + */ + public void addCustomData(final Plotter plotter) { + if (plotter == null) { + throw new IllegalArgumentException("Plotter cannot be null"); + } - /** - * Adds a custom data plotter to the default graph - * - * @param plotter The plotter to use to plot custom data - */ - public void addCustomData(final Plotter plotter) { - if (plotter == null) { - throw new IllegalArgumentException("Plotter cannot be null"); - } + // Add the plotter to the graph o/ + defaultGraph.addPlotter(plotter); - // Add the plotter to the graph o/ - defaultGraph.addPlotter(plotter); + // Ensure the default graph is included in the submitted graphs + graphs.add(defaultGraph); + } - // Ensure the default graph is included in the submitted graphs - graphs.add(defaultGraph); - } - - /** - * Start measuring statistics. This will immediately create an async repeating task as the plugin and send - * the initial data to the metrics backend, and then after that it will post in increments of - * PING_INTERVAL * 1200 ticks. - * - * @return True if statistics measuring is running, otherwise false. - */ - @SuppressWarnings("deprecation") + /** + * Start measuring statistics. This will immediately create an async repeating task as the plugin and send + * the initial data to the metrics backend, and then after that it will post in increments of + * PING_INTERVAL * 1200 ticks. + * + * @return True if statistics measuring is running, otherwise false. + */ + @SuppressWarnings("deprecation") public boolean start() { - synchronized (optOutLock) { - // Did we opt out? - if (isOptOut()) { - return false; - } + synchronized (optOutLock) { + // Did we opt out? + if (isOptOut()) { + return false; + } - // Is metrics already running? - if (taskId >= 0) { - return true; - } + // Is metrics already running? + if (taskId >= 0) { + return true; + } - // Begin hitting the server with glorious data - taskId = plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() { + // Begin hitting the server with glorious data + taskId = plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() { - private boolean firstPost = true; + private boolean firstPost = true; - public void run() { - try { - // This has to be synchronized or it can collide with the disable method. - synchronized (optOutLock) { - // Disable Task, if it is running and the server owner decided to opt-out - if (isOptOut() && taskId > 0) { - plugin.getServer().getScheduler().cancelTask(taskId); - taskId = -1; - // Tell all plotters to stop gathering information. - for (Graph graph : graphs){ - graph.onOptOut(); - } - } - } + public void run() { + try { + // This has to be synchronized or it can collide with the disable method. + synchronized (optOutLock) { + // Disable Task, if it is running and the server owner decided to opt-out + if (isOptOut() && taskId > 0) { + plugin.getServer().getScheduler().cancelTask(taskId); + taskId = -1; + // Tell all plotters to stop gathering information. + for (Graph graph : graphs){ + graph.onOptOut(); + } + } + } - // We use the inverse of firstPost because if it is the first time we are posting, - // it is not a interval ping, so it evaluates to FALSE - // Each time thereafter it will evaluate to TRUE, i.e PING! - postPlugin(!firstPost); + // We use the inverse of firstPost because if it is the first time we are posting, + // it is not a interval ping, so it evaluates to FALSE + // Each time thereafter it will evaluate to TRUE, i.e PING! + postPlugin(!firstPost); - // After the first post we set firstPost to false - // Each post thereafter will be a ping - firstPost = false; - } catch (IOException e) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage()); - } - } - }, 0, PING_INTERVAL * 1200); + // After the first post we set firstPost to false + // Each post thereafter will be a ping + firstPost = false; + } catch (IOException e) { + Bukkit.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage()); + } + } + }, 0, PING_INTERVAL * 1200); - return true; - } - } + return true; + } + } - /** - * Has the server owner denied plugin metrics? - * - * @return true if metrics should be opted out of it - */ - public boolean isOptOut() { - synchronized(optOutLock) { - try { - // Reload the metrics file - configuration.load(getConfigFile()); - } catch (IOException ex) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage()); - return true; - } catch (InvalidConfigurationException ex) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage()); - return true; - } - return configuration.getBoolean("opt-out", false); - } - } + /** + * Has the server owner denied plugin metrics? + * + * @return true if metrics should be opted out of it + */ + public boolean isOptOut() { + synchronized(optOutLock) { + try { + // Reload the metrics file + configuration.load(getConfigFile()); + } catch (IOException ex) { + Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage()); + return true; + } catch (InvalidConfigurationException ex) { + Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage()); + return true; + } + return configuration.getBoolean("opt-out", false); + } + } - /** - * Enables metrics for the server by setting "opt-out" to false in the config file and starting the metrics task. - * - * @throws IOException - */ - public void enable() throws IOException { - // This has to be synchronized or it can collide with the check in the task. - synchronized (optOutLock) { - // Check if the server owner has already set opt-out, if not, set it. - if (isOptOut()) { - configuration.set("opt-out", false); - configuration.save(configurationFile); - } + /** + * Enables metrics for the server by setting "opt-out" to false in the config file and starting the metrics task. + * + * @throws IOException + */ + public void enable() throws IOException { + // This has to be synchronized or it can collide with the check in the task. + synchronized (optOutLock) { + // Check if the server owner has already set opt-out, if not, set it. + if (isOptOut()) { + configuration.set("opt-out", false); + configuration.save(configurationFile); + } - // Enable Task, if it is not running - if (taskId < 0) { - start(); - } - } - } + // Enable Task, if it is not running + if (taskId < 0) { + start(); + } + } + } - /** - * Disables metrics for the server by setting "opt-out" to true in the config file and canceling the metrics task. - * - * @throws IOException - */ - public void disable() throws IOException { - // This has to be synchronized or it can collide with the check in the task. - synchronized (optOutLock) { - // Check if the server owner has already set opt-out, if not, set it. - if (!isOptOut()) { - configuration.set("opt-out", true); - configuration.save(configurationFile); - } + /** + * Disables metrics for the server by setting "opt-out" to true in the config file and canceling the metrics task. + * + * @throws IOException + */ + public void disable() throws IOException { + // This has to be synchronized or it can collide with the check in the task. + synchronized (optOutLock) { + // Check if the server owner has already set opt-out, if not, set it. + if (!isOptOut()) { + configuration.set("opt-out", true); + configuration.save(configurationFile); + } - // Disable Task, if it is running - if (taskId > 0) { - this.plugin.getServer().getScheduler().cancelTask(taskId); - taskId = -1; - } - } - } + // Disable Task, if it is running + if (taskId > 0) { + this.plugin.getServer().getScheduler().cancelTask(taskId); + taskId = -1; + } + } + } - /** - * Gets the File object of the config file that should be used to store data such as the GUID and opt-out status - * - * @return the File object for the config file - */ - public File getConfigFile() { - // I believe the easiest way to get the base folder (e.g craftbukkit set via -P) for plugins to use - // is to abuse the plugin object we already have - // plugin.getDataFolder() => base/plugins/PluginA/ - // pluginsFolder => base/plugins/ - // The base is not necessarily relative to the startup directory. - File pluginsFolder = plugin.getDataFolder().getParentFile(); + /** + * Gets the File object of the config file that should be used to store data such as the GUID and opt-out status + * + * @return the File object for the config file + */ + public File getConfigFile() { + // I believe the easiest way to get the base folder (e.g craftbukkit set via -P) for plugins to use + // is to abuse the plugin object we already have + // plugin.getDataFolder() => base/plugins/PluginA/ + // pluginsFolder => base/plugins/ + // The base is not necessarily relative to the startup directory. + File pluginsFolder = plugin.getDataFolder().getParentFile(); - // return => base/plugins/PluginMetrics/config.yml - return new File(new File(pluginsFolder, "PluginMetrics"), "config.yml"); - } + // return => base/plugins/PluginMetrics/config.yml + return new File(new File(pluginsFolder, "PluginMetrics"), "config.yml"); + } - /** - * Generic method that posts a plugin to the metrics website - */ - private void postPlugin(final boolean isPing) throws IOException { - // The plugin's description file containg all of the plugin data such as name, version, author, etc - final PluginDescriptionFile description = plugin.getDescription(); + /** + * Generic method that posts a plugin to the metrics website + */ + private void postPlugin(final boolean isPing) throws IOException { + // The plugin's description file containg all of the plugin data such as name, version, author, etc + final PluginDescriptionFile description = plugin.getDescription(); - // Construct the post data - final StringBuilder data = new StringBuilder(); - data.append(encode("guid")).append('=').append(encode(guid)); - encodeDataPair(data, "version", description.getVersion()); - encodeDataPair(data, "server", Bukkit.getVersion()); - encodeDataPair(data, "players", Integer.toString(Bukkit.getServer().getOnlinePlayers().length)); - encodeDataPair(data, "revision", String.valueOf(REVISION)); + // Construct the post data + final StringBuilder data = new StringBuilder(); + data.append(encode("guid")).append('=').append(encode(guid)); + encodeDataPair(data, "version", description.getVersion()); + encodeDataPair(data, "server", Bukkit.getVersion()); + encodeDataPair(data, "players", Integer.toString(Bukkit.getServer().getOnlinePlayers().length)); + encodeDataPair(data, "revision", String.valueOf(REVISION)); - // If we're pinging, append it - if (isPing) { - encodeDataPair(data, "ping", "true"); - } + // If we're pinging, append it + if (isPing) { + encodeDataPair(data, "ping", "true"); + } - // Acquire a lock on the graphs, which lets us make the assumption we also lock everything - // inside of the graph (e.g plotters) - synchronized (graphs) { - final Iterator iter = graphs.iterator(); + // Acquire a lock on the graphs, which lets us make the assumption we also lock everything + // inside of the graph (e.g plotters) + synchronized (graphs) { + final Iterator iter = graphs.iterator(); - while (iter.hasNext()) { - final Graph graph = iter.next(); + while (iter.hasNext()) { + final Graph graph = iter.next(); - for (Plotter plotter : graph.getPlotters()) { - // The key name to send to the metrics server - // The format is C-GRAPHNAME-PLOTTERNAME where separator - is defined at the top - // Legacy (R4) submitters use the format Custom%s, or CustomPLOTTERNAME - final String key = String.format("C%s%s%s%s", CUSTOM_DATA_SEPARATOR, graph.getName(), CUSTOM_DATA_SEPARATOR, plotter.getColumnName()); + for (Plotter plotter : graph.getPlotters()) { + // The key name to send to the metrics server + // The format is C-GRAPHNAME-PLOTTERNAME where separator - is defined at the top + // Legacy (R4) submitters use the format Custom%s, or CustomPLOTTERNAME + final String key = String.format("C%s%s%s%s", CUSTOM_DATA_SEPARATOR, graph.getName(), CUSTOM_DATA_SEPARATOR, plotter.getColumnName()); - // The value to send, which for the foreseeable future is just the string - // value of plotter.getValue() - final String value = Integer.toString(plotter.getValue()); + // The value to send, which for the foreseeable future is just the string + // value of plotter.getValue() + final String value = Integer.toString(plotter.getValue()); - // Add it to the http post data :) - encodeDataPair(data, key, value); - } - } - } + // Add it to the http post data :) + encodeDataPair(data, key, value); + } + } + } - // Create the url - URL url = new URL(BASE_URL + String.format(REPORT_URL, encode(plugin.getDescription().getName()))); + // Create the url + URL url = new URL(BASE_URL + String.format(REPORT_URL, encode(plugin.getDescription().getName()))); - // Connect to the website - URLConnection connection; + // Connect to the website + URLConnection connection; - // Mineshafter creates a socks proxy, so we can safely bypass it - // It does not reroute POST requests so we need to go around it - if (isMineshafterPresent()) { - connection = url.openConnection(Proxy.NO_PROXY); - } else { - connection = url.openConnection(); - } + // Mineshafter creates a socks proxy, so we can safely bypass it + // It does not reroute POST requests so we need to go around it + if (isMineshafterPresent()) { + connection = url.openConnection(Proxy.NO_PROXY); + } else { + connection = url.openConnection(); + } - connection.setDoOutput(true); + connection.setDoOutput(true); - // Write the data - final OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); - writer.write(data.toString()); - writer.flush(); + // Write the data + final OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); + writer.write(data.toString()); + writer.flush(); - // Now read the response - final BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - final String response = reader.readLine(); + // Now read the response + final BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + final String response = reader.readLine(); - // close resources - writer.close(); - reader.close(); + // close resources + writer.close(); + reader.close(); - if (response == null || response.startsWith("ERR")) { - throw new IOException(response); //Throw the exception - } else { - // Is this the first update this hour? - if (response.contains("OK This is your first update this hour")) { - synchronized (graphs) { - final Iterator iter = graphs.iterator(); + if (response == null || response.startsWith("ERR")) { + throw new IOException(response); //Throw the exception + } else { + // Is this the first update this hour? + if (response.contains("OK This is your first update this hour")) { + synchronized (graphs) { + final Iterator iter = graphs.iterator(); - while (iter.hasNext()) { - final Graph graph = iter.next(); + while (iter.hasNext()) { + final Graph graph = iter.next(); - for (Plotter plotter : graph.getPlotters()) { - plotter.reset(); - } - } - } - } - } - } + for (Plotter plotter : graph.getPlotters()) { + plotter.reset(); + } + } + } + } + } + } - /** - * Check if mineshafter is present. If it is, we need to bypass it to send POST requests - * - * @return true if mineshafter is installed on the server - */ - private boolean isMineshafterPresent() { - try { - Class.forName("mineshafter.MineServer"); - return true; - } catch (Exception e) { - return false; - } - } + /** + * Check if mineshafter is present. If it is, we need to bypass it to send POST requests + * + * @return true if mineshafter is installed on the server + */ + private boolean isMineshafterPresent() { + try { + Class.forName("mineshafter.MineServer"); + return true; + } catch (Exception e) { + return false; + } + } - /** - *

Encode a key/value data pair to be used in a HTTP post request. This INCLUDES a & so the first - * key/value pair MUST be included manually, e.g:

- * - * StringBuffer data = new StringBuffer(); - * data.append(encode("guid")).append('=').append(encode(guid)); - * encodeDataPair(data, "version", description.getVersion()); - * - * - * @param buffer the stringbuilder to append the data pair onto - * @param key the key value - * @param value the value - */ - private static void encodeDataPair(final StringBuilder buffer, final String key, final String value) throws UnsupportedEncodingException { - buffer.append('&').append(encode(key)).append('=').append(encode(value)); - } + /** + *

Encode a key/value data pair to be used in a HTTP post request. This INCLUDES a & so the first + * key/value pair MUST be included manually, e.g:

+ * + * StringBuffer data = new StringBuffer(); + * data.append(encode("guid")).append('=').append(encode(guid)); + * encodeDataPair(data, "version", description.getVersion()); + * + * + * @param buffer the stringbuilder to append the data pair onto + * @param key the key value + * @param value the value + */ + private static void encodeDataPair(final StringBuilder buffer, final String key, final String value) throws UnsupportedEncodingException { + buffer.append('&').append(encode(key)).append('=').append(encode(value)); + } - /** - * Encode text as UTF-8 - * - * @param text the text to encode - * @return the encoded text, as UTF-8 - */ - private static String encode(final String text) throws UnsupportedEncodingException { - return URLEncoder.encode(text, "UTF-8"); - } + /** + * Encode text as UTF-8 + * + * @param text the text to encode + * @return the encoded text, as UTF-8 + */ + private static String encode(final String text) throws UnsupportedEncodingException { + return URLEncoder.encode(text, "UTF-8"); + } - /** - * Represents a custom graph on the website - */ - public static class Graph { + /** + * Represents a custom graph on the website + */ + public static class Graph { - /** - * The graph's name, alphanumeric and spaces only :) - * If it does not comply to the above when submitted, it is rejected - */ - private final String name; + /** + * The graph's name, alphanumeric and spaces only :) + * If it does not comply to the above when submitted, it is rejected + */ + private final String name; - /** - * The set of plotters that are contained within this graph - */ - private final Set plotters = new LinkedHashSet(); + /** + * The set of plotters that are contained within this graph + */ + private final Set plotters = new LinkedHashSet(); - private Graph(final String name) { - this.name = name; - } + private Graph(final String name) { + this.name = name; + } - /** - * Gets the graph's name - * - * @return the Graph's name - */ - public String getName() { - return name; - } + /** + * Gets the graph's name + * + * @return the Graph's name + */ + public String getName() { + return name; + } - /** - * Add a plotter to the graph, which will be used to plot entries - * - * @param plotter the plotter to add to the graph - */ - public void addPlotter(final Plotter plotter) { - plotters.add(plotter); - } + /** + * Add a plotter to the graph, which will be used to plot entries + * + * @param plotter the plotter to add to the graph + */ + public void addPlotter(final Plotter plotter) { + plotters.add(plotter); + } - /** - * Remove a plotter from the graph - * - * @param plotter the plotter to remove from the graph - */ - public void removePlotter(final Plotter plotter) { - plotters.remove(plotter); - } + /** + * Remove a plotter from the graph + * + * @param plotter the plotter to remove from the graph + */ + public void removePlotter(final Plotter plotter) { + plotters.remove(plotter); + } - /** - * Gets an unmodifiable set of the plotter objects in the graph - * - * @return an unmodifiable {@link Set} of the plotter objects - */ - public Set getPlotters() { - return Collections.unmodifiableSet(plotters); - } + /** + * Gets an unmodifiable set of the plotter objects in the graph + * + * @return an unmodifiable {@link Set} of the plotter objects + */ + public Set getPlotters() { + return Collections.unmodifiableSet(plotters); + } - @Override - public int hashCode() { - return name.hashCode(); - } + @Override + public int hashCode() { + return name.hashCode(); + } - @Override - public boolean equals(final Object object) { - if (!(object instanceof Graph)) { - return false; - } + @Override + public boolean equals(final Object object) { + if (!(object instanceof Graph)) { + return false; + } - final Graph graph = (Graph) object; - return graph.name.equals(name); - } + final Graph graph = (Graph) object; + return graph.name.equals(name); + } - /** - * Called when the server owner decides to opt-out of Metrics while the server is running. - */ - protected void onOptOut() { - } + /** + * Called when the server owner decides to opt-out of Metrics while the server is running. + */ + protected void onOptOut() { + } - } + } - /** - * Interface used to collect custom data for a plugin - */ - public static abstract class Plotter { + /** + * Interface used to collect custom data for a plugin + */ + public static abstract class Plotter { - /** - * The plot's name - */ - private final String name; + /** + * The plot's name + */ + private final String name; - /** - * Construct a plotter with the default plot name - */ - public Plotter() { - this("Default"); - } + /** + * Construct a plotter with the default plot name + */ + public Plotter() { + this("Default"); + } - /** - * Construct a plotter with a specific plot name - * - * @param name the name of the plotter to use, which will show up on the website - */ - public Plotter(final String name) { - this.name = name; - } + /** + * Construct a plotter with a specific plot name + * + * @param name the name of the plotter to use, which will show up on the website + */ + public Plotter(final String name) { + this.name = name; + } - /** - * Get the current value for the plotted point. Since this function defers to an external function - * it may or may not return immediately thus cannot be guaranteed to be thread friendly or safe. - * This function can be called from any thread so care should be taken when accessing resources - * that need to be synchronized. - * - * @return the current value for the point to be plotted. - */ - public abstract int getValue(); + /** + * Get the current value for the plotted point. Since this function defers to an external function + * it may or may not return immediately thus cannot be guaranteed to be thread friendly or safe. + * This function can be called from any thread so care should be taken when accessing resources + * that need to be synchronized. + * + * @return the current value for the point to be plotted. + */ + public abstract int getValue(); - /** - * Get the column name for the plotted point - * - * @return the plotted point's column name - */ - public String getColumnName() { - return name; - } + /** + * Get the column name for the plotted point + * + * @return the plotted point's column name + */ + public String getColumnName() { + return name; + } - /** - * Called after the website graphs have been updated - */ - public void reset() { - } + /** + * Called after the website graphs have been updated + */ + public void reset() { + } - @Override - public int hashCode() { - return getColumnName().hashCode(); - } + @Override + public int hashCode() { + return getColumnName().hashCode(); + } - @Override - public boolean equals(final Object object) { - if (!(object instanceof Plotter)) { - return false; - } + @Override + public boolean equals(final Object object) { + if (!(object instanceof Plotter)) { + return false; + } - final Plotter plotter = (Plotter) object; - return plotter.name.equals(name) && plotter.getValue() == getValue(); - } + final Plotter plotter = (Plotter) object; + return plotter.name.equals(name) && plotter.getValue() == getValue(); + } - } + } } diff --git a/src/main/java/com/drtshock/playervaults/util/Serialization.java b/src/main/java/com/drtshock/playervaults/util/Serialization.java index 9c5c6a8..4f5da3d 100644 --- a/src/main/java/com/drtshock/playervaults/util/Serialization.java +++ b/src/main/java/com/drtshock/playervaults/util/Serialization.java @@ -22,37 +22,37 @@ public class Serialization { /* * All normal functions */ - + @SuppressWarnings("unchecked") public static Map toMap(JSONObject object) throws JSONException { - Map map = new HashMap(); - Iterator keys = object.keys(); - while (keys.hasNext()) { - String key = (String) keys.next(); - map.put(key, fromJson(object.get(key))); - } - return map; - } + Map map = new HashMap(); + Iterator keys = object.keys(); + while (keys.hasNext()) { + String key = (String) keys.next(); + map.put(key, fromJson(object.get(key))); + } + return map; + } private static Object fromJson(Object json) throws JSONException { - if (json == JSONObject.NULL) { - return null; - } else if (json instanceof JSONObject) { - return toMap((JSONObject) json); - } else if (json instanceof JSONArray) { - return toList((JSONArray) json); - } else { - return json; - } - } - + if (json == JSONObject.NULL) { + return null; + } else if (json instanceof JSONObject) { + return toMap((JSONObject) json); + } else if (json instanceof JSONArray) { + return toList((JSONArray) json); + } else { + return json; + } + } + public static List toList(JSONArray array) throws JSONException { - List list = new ArrayList(); - for (int i = 0; i < array.length(); i++) { - list.add(fromJson(array.get(i))); - } - return list; - } - + List list = new ArrayList(); + for (int i = 0; i < array.length(); i++) { + list.add(fromJson(array.get(i))); + } + return list; + } + public static List toString(Inventory inv) { List result = new ArrayList(); List items = new ArrayList(); @@ -69,7 +69,7 @@ public class Serialization { } return result; } - + public static Inventory toInventory(List stringItems, int number) { Inventory inv = Bukkit.createInventory(null, 54, ChatColor.RED + "Vault #" + number); List contents = new ArrayList(); @@ -93,37 +93,37 @@ public class Serialization { return inv; } - public static Map serialize(ConfigurationSerializable cs) { - Map serialized = recreateMap(cs.serialize()); - for (Entry entry : serialized.entrySet()) { - if (entry.getValue() instanceof ConfigurationSerializable) { - entry.setValue(serialize((ConfigurationSerializable)entry.getValue())); - } - } - serialized.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(cs.getClass())); - return serialized; - } - public static Map recreateMap(Map original) { - Map map = new HashMap(); - for (Entry entry : original.entrySet()) { - map.put(entry.getKey(), entry.getValue()); - } - return map; - } + public static Map serialize(ConfigurationSerializable cs) { + Map serialized = recreateMap(cs.serialize()); + for (Entry entry : serialized.entrySet()) { + if (entry.getValue() instanceof ConfigurationSerializable) { + entry.setValue(serialize((ConfigurationSerializable)entry.getValue())); + } + } + serialized.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(cs.getClass())); + return serialized; + } + public static Map recreateMap(Map original) { + Map map = new HashMap(); + for (Entry entry : original.entrySet()) { + map.put(entry.getKey(), entry.getValue()); + } + return map; + } - @SuppressWarnings({ "unchecked", "rawtypes" }) - public static ConfigurationSerializable deserialize(Map map) { - for (Entry entry : map.entrySet()) { - // Check if any of its sub-maps are ConfigurationSerializable. They need to be done first. - if (entry.getValue() instanceof Map && ((Map)entry.getValue()).containsKey(ConfigurationSerialization.SERIALIZED_TYPE_KEY)) { - entry.setValue(deserialize((Map)entry.getValue())); - } - } - return ConfigurationSerialization.deserializeObject(map); - } - - /* - * All old methods for transferring - */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static ConfigurationSerializable deserialize(Map map) { + for (Entry entry : map.entrySet()) { + // Check if any of its sub-maps are ConfigurationSerializable. They need to be done first. + if (entry.getValue() instanceof Map && ((Map)entry.getValue()).containsKey(ConfigurationSerialization.SERIALIZED_TYPE_KEY)) { + entry.setValue(deserialize((Map)entry.getValue())); + } + } + return ConfigurationSerialization.deserializeObject(map); + } + + /* + * All old methods for transferring + */ } diff --git a/src/main/java/com/drtshock/playervaults/util/Updater.java b/src/main/java/com/drtshock/playervaults/util/Updater.java index 7a3f369..dc2677b 100644 --- a/src/main/java/com/drtshock/playervaults/util/Updater.java +++ b/src/main/java/com/drtshock/playervaults/util/Updater.java @@ -14,9 +14,9 @@ import org.bukkit.configuration.file.YamlConfiguration; import com.drtshock.playervaults.Main; public class Updater extends Main { - + SortedMap lang = new TreeMap(); - + public Updater() { lang.put("title-name", "&4[&fPlayerVaults&4]:"); lang.put("open-vault", "&fOpening vault &a%v"); @@ -31,7 +31,7 @@ public class Updater extends Main { lang.put("refund-amount", "&fYou were refunded &a%price &ffor deleting that vault."); lang.put("cost-to-create", "&fYou were charged &c%price &ffor creating that vault."); lang.put("cost-to-open", "&fYou were charged &c%price &ffor opening that vault."); - + YamlConfiguration langConf = super.getLang(); for(Entry e:lang.entrySet()) { if(langConf.getString(e.getKey()) == null) { @@ -44,9 +44,9 @@ public class Updater extends Main { e.printStackTrace(); } } - + String newVersion = ""; - + public String getNewVersion() { return this.newVersion; } @@ -77,7 +77,7 @@ public class Updater extends Main { return false; //They are using a FUTURE version! } else { - return false; //They are up to date! + return false; //They are up to date! } } lineNum = lineNum + 1; diff --git a/target/classes/com/drtshock/playervaults/Listeners.class b/target/classes/com/drtshock/playervaults/Listeners.class deleted file mode 100644 index 3d31800..0000000 Binary files a/target/classes/com/drtshock/playervaults/Listeners.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/Main.class b/target/classes/com/drtshock/playervaults/Main.class deleted file mode 100644 index 3c4db16..0000000 Binary files a/target/classes/com/drtshock/playervaults/Main.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/commands/Commands.class b/target/classes/com/drtshock/playervaults/commands/Commands.class deleted file mode 100644 index 25a34fa..0000000 Binary files a/target/classes/com/drtshock/playervaults/commands/Commands.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/commands/Feedback$Type.class b/target/classes/com/drtshock/playervaults/commands/Feedback$Type.class deleted file mode 100644 index 68eae22..0000000 Binary files a/target/classes/com/drtshock/playervaults/commands/Feedback$Type.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/commands/Feedback.class b/target/classes/com/drtshock/playervaults/commands/Feedback.class deleted file mode 100644 index a02aae2..0000000 Binary files a/target/classes/com/drtshock/playervaults/commands/Feedback.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/commands/VaultOperations.class b/target/classes/com/drtshock/playervaults/commands/VaultOperations.class deleted file mode 100644 index 5ac0d9f..0000000 Binary files a/target/classes/com/drtshock/playervaults/commands/VaultOperations.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/commands/VaultViewInfo.class b/target/classes/com/drtshock/playervaults/commands/VaultViewInfo.class deleted file mode 100644 index 49e3d13..0000000 Binary files a/target/classes/com/drtshock/playervaults/commands/VaultViewInfo.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/BackwardsCompatibility.class b/target/classes/com/drtshock/playervaults/util/BackwardsCompatibility.class deleted file mode 100644 index f877ee8..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/BackwardsCompatibility.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/DropOnDeath.class b/target/classes/com/drtshock/playervaults/util/DropOnDeath.class deleted file mode 100644 index b8d12dc..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/DropOnDeath.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/EconomyOperations.class b/target/classes/com/drtshock/playervaults/util/EconomyOperations.class deleted file mode 100644 index c276575..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/EconomyOperations.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/Lang.class b/target/classes/com/drtshock/playervaults/util/Lang.class deleted file mode 100644 index 97f38d2..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/Lang.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/Metrics$1.class b/target/classes/com/drtshock/playervaults/util/Metrics$1.class deleted file mode 100644 index 2d868c8..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/Metrics$1.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/Metrics$Graph.class b/target/classes/com/drtshock/playervaults/util/Metrics$Graph.class deleted file mode 100644 index 80dad49..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/Metrics$Graph.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/Metrics$Plotter.class b/target/classes/com/drtshock/playervaults/util/Metrics$Plotter.class deleted file mode 100644 index f44e49c..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/Metrics$Plotter.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/Metrics.class b/target/classes/com/drtshock/playervaults/util/Metrics.class deleted file mode 100644 index 5da0d59..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/Metrics.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/Serialization.class b/target/classes/com/drtshock/playervaults/util/Serialization.class deleted file mode 100644 index c91a3ad..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/Serialization.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/Updater.class b/target/classes/com/drtshock/playervaults/util/Updater.class deleted file mode 100644 index faf714c..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/Updater.class and /dev/null differ diff --git a/target/classes/com/drtshock/playervaults/util/VaultManager.class b/target/classes/com/drtshock/playervaults/util/VaultManager.class deleted file mode 100644 index 999a170..0000000 Binary files a/target/classes/com/drtshock/playervaults/util/VaultManager.class and /dev/null differ diff --git a/target/classes/config.yml b/target/classes/config.yml deleted file mode 100644 index 52319eb..0000000 --- a/target/classes/config.yml +++ /dev/null @@ -1,26 +0,0 @@ -# PlayerVaults by drsthock and gomeow! -# http://dev.bukkit.org/server-mods/playervaults -# Made with love :3 - -# Whether or not you want to check for updates. -# Will not download an update, that is your job :) -check-update: true - -# Settings here are for economy integration. playervaults.free bypasses it. -economy: - enabled: false - -# Cost to create a vault. You can give players playervaults.free to bypass this. - cost-to-create: 100 - cost-to-open: 10 - refund-on-delete: 50 - -# Configuration for dropping inventories on death. -# Bypass with playervaults.ignore.drop -drop-on-death: - enabled: false - -# Max amount of inventories you want to be dropped. -# Set to 99 (or highest amount you give people) if you want all inventories to be dropped. -# WARNING: This can cause a lot of items to be dropped on the ground. Use caution :3 - inventories: 1 \ No newline at end of file diff --git a/target/classes/lang.yml b/target/classes/lang.yml deleted file mode 100644 index 16e0897..0000000 --- a/target/classes/lang.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Use & for color codes. -# %p is where the player name will get inserted. -# %v is where the vault number will get inserted. -# %price is the price. -# Made with love :) -title-name: "&4[&fPlayerVaults&4]:" -open-vault: "&fOpening vault &a%v" -open-other-vault: "&fOpening vault &a%v &fof &a%p" -delete-vault: "&fDeleted vault &a%v" -delete-other-vault: "&fDeleted vault &a%v &fof &a%p" -player-only: "Sorry but that can only be run by a player!" -must-be-number: "&cYou need to specify a number between 1-99" -invalid-args: "&cInvalid args!" -delete-vault-error: "&cError deleting vault :(" -no-permissions: "&cYou don't have permission for that!" -insufficient-funds: "&cYou don't have enough money for that!" -refund-amount: "&fYou were refunded &a%price &ffor deleting that vault." -cost-to-create: "&fYou were charged &c%price &ffor creating that vault." -cost-to-open: "&fYou were charged &c%price &ffor opening that vault." diff --git a/target/classes/org/json/CDL.class b/target/classes/org/json/CDL.class deleted file mode 100644 index e2edeea..0000000 Binary files a/target/classes/org/json/CDL.class and /dev/null differ diff --git a/target/classes/org/json/Cookie.class b/target/classes/org/json/Cookie.class deleted file mode 100644 index 94acb88..0000000 Binary files a/target/classes/org/json/Cookie.class and /dev/null differ diff --git a/target/classes/org/json/CookieList.class b/target/classes/org/json/CookieList.class deleted file mode 100644 index cadfa08..0000000 Binary files a/target/classes/org/json/CookieList.class and /dev/null differ diff --git a/target/classes/org/json/HTTP.class b/target/classes/org/json/HTTP.class deleted file mode 100644 index 1925f10..0000000 Binary files a/target/classes/org/json/HTTP.class and /dev/null differ diff --git a/target/classes/org/json/HTTPTokener.class b/target/classes/org/json/HTTPTokener.class deleted file mode 100644 index 33a83dc..0000000 Binary files a/target/classes/org/json/HTTPTokener.class and /dev/null differ diff --git a/target/classes/org/json/JSONArray.class b/target/classes/org/json/JSONArray.class deleted file mode 100644 index 58fb22b..0000000 Binary files a/target/classes/org/json/JSONArray.class and /dev/null differ diff --git a/target/classes/org/json/JSONException.class b/target/classes/org/json/JSONException.class deleted file mode 100644 index 5ca8e46..0000000 Binary files a/target/classes/org/json/JSONException.class and /dev/null differ diff --git a/target/classes/org/json/JSONObject$Null.class b/target/classes/org/json/JSONObject$Null.class deleted file mode 100644 index ac4c8b3..0000000 Binary files a/target/classes/org/json/JSONObject$Null.class and /dev/null differ diff --git a/target/classes/org/json/JSONObject.class b/target/classes/org/json/JSONObject.class deleted file mode 100644 index ab7733c..0000000 Binary files a/target/classes/org/json/JSONObject.class and /dev/null differ diff --git a/target/classes/org/json/JSONString.class b/target/classes/org/json/JSONString.class deleted file mode 100644 index 592bd20..0000000 Binary files a/target/classes/org/json/JSONString.class and /dev/null differ diff --git a/target/classes/org/json/JSONStringer.class b/target/classes/org/json/JSONStringer.class deleted file mode 100644 index 6da6ae2..0000000 Binary files a/target/classes/org/json/JSONStringer.class and /dev/null differ diff --git a/target/classes/org/json/JSONTokener.class b/target/classes/org/json/JSONTokener.class deleted file mode 100644 index 5c289d6..0000000 Binary files a/target/classes/org/json/JSONTokener.class and /dev/null differ diff --git a/target/classes/org/json/JSONWriter.class b/target/classes/org/json/JSONWriter.class deleted file mode 100644 index 646bf02..0000000 Binary files a/target/classes/org/json/JSONWriter.class and /dev/null differ diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml deleted file mode 100644 index 4c20fb8..0000000 --- a/target/classes/plugin.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: PlayerVaults -main: com.drtshock.playervaults.Main -authors: [drtshock, gomeow, Chester] -version: 3.0.0 -website: http://dev.bukkit.org/server-mods/PlayerVaults -softdepend: [Vault] -commands: - pv: - description: Open a vault with /vault - aliases: [vault] - pvdel: - description: Delete a vault. - aliases: [vaultdel] \ No newline at end of file