From 4541d60bd06dbd1dddafe478f9e3fdf90ccf9f2c Mon Sep 17 00:00:00 2001 From: ProSavage Date: Mon, 15 Apr 2019 12:58:21 -0500 Subject: [PATCH] Removed massivestats as its dead lol. --- .../massivecraft/factions/MassiveStats.java | 497 ------------------ .../massivecraft/factions/SavageFactions.java | 6 - src/main/resources/config.yml | 3 - 3 files changed, 506 deletions(-) delete mode 100644 src/main/java/com/massivecraft/factions/MassiveStats.java diff --git a/src/main/java/com/massivecraft/factions/MassiveStats.java b/src/main/java/com/massivecraft/factions/MassiveStats.java deleted file mode 100644 index a1f01e56..00000000 --- a/src/main/java/com/massivecraft/factions/MassiveStats.java +++ /dev/null @@ -1,497 +0,0 @@ -package com.massivecraft.factions; - -/* - * Copyright 2018 (c) Massive Statistics LLC - All Rights Reserved - * This file may only be used in conjunction with the 'MassiveStats' service. - */ - - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitRunnable; - -import javax.net.ssl.HttpsURLConnection; -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URL; - -/** - * MassiveStats collects plugin and server information for plugin authors. - * You can learn more at our website: https://www.massivestats.com/ - * - * @author Sam Jakob Harker, Brianna Hazel O'Keefe - * @version 3.0 - */ -@SuppressWarnings("all") -public class MassiveStats implements Listener { - - /* START: MASSIVESTATS SETTINGS */ - public static final int CLIENT_VERSION = 0; // v3.0 - public static final String API_URL = "https://report.massivestats.com/v2/"; - - public static final String MASSIVE_UPDATE_PERMISSION = "massivestats.update"; - /* END: MASSIVESTATS SETTINGS */ - private final JavaPlugin plugin; - private MassiveStatsUpdateTask task = null; - private int pingInterval; - private MassiveStatsDataResponse lastResponse; - private boolean listenerDisabled; - private Class jsonElement; - private Class jsonParser; - private Class jsonObject; - private Class jsonPrimitive; - - /** - * @param plugin The plugin you wish to collect data for. - * @author Sam Jakob Harker - */ - public MassiveStats(JavaPlugin plugin) { - this(plugin, 900); // default value: 900 seconds (= 15 minutes) - } - - /** - * @param plugin The plugin you wish to collect data for. - * @param pingInterval Duration between requests. - * @author Sam Jakob Harker - */ - public MassiveStats(JavaPlugin plugin, int pingInterval) { - try { - jsonElement = Class.forName("com.google.gson.JsonElement"); - jsonParser = Class.forName("com.google.gson.JsonParser"); - jsonObject = Class.forName("com.google.gson.JsonObject"); - jsonPrimitive = Class.forName("com.google.gson.JsonPrimitive"); - } catch (ClassNotFoundException ex) { - // Gson not included in classpath (so use NMS version) - try { - jsonElement = Class.forName("net.minecraft.util.com.google.gson.JsonElement"); - jsonParser = Class.forName("net.minecraft.util.com.google.gson.JsonParser"); - jsonObject = Class.forName("net.minecraft.util.com.google.gson.JsonObject"); - jsonPrimitive = Class.forName("net.minecraft.util.com.google.gson.JsonPrimitive"); - } catch (ClassNotFoundException ignored) { - Bukkit.getLogger().severe("MassiveStats could not find an instance/version of Gson to use."); - this.plugin = null; - return; - } - } - - // Ensure the pingInterval that is set is reasonable. - if (pingInterval < 10 || pingInterval > 86400) { - pingInterval = 900; - } - - // Ensure that a plugin instance has been provided. - if (plugin == null) { - throw new IllegalArgumentException("You must provide a plugin for MassiveStats to collect data for!"); - } - - // Set the ping interval. - this.pingInterval = pingInterval; - // Set the plugin reference. - this.plugin = plugin; - // and start sending data to the MassiveStats server immediately. - start(); - - // Register join/leave events for the plugin - Bukkit.getServer().getPluginManager().registerEvents(this, plugin); - } - - /** - * Gets whether or not the built-in MassiveStats {@link org.bukkit.event.player.PlayerJoinEvent} listener is enabled. - * - * @return Whether or not the MassiveStats listener is enabled. - */ - public boolean isListenerDisabled() { - return listenerDisabled; - } - - /** - * Sets whether or not the built-in MassiveStats {@link org.bukkit.event.player.PlayerJoinEvent} listener is enabled. - * - * @param listenerDisabled Whether or not the MassiveStats listener is enabled. - */ - public void setListenerDisabled(boolean listenerDisabled) { - this.listenerDisabled = listenerDisabled; - } - - /** - * Start the MassiveStats reporting timer. - * If the timer is already running, this method will do nothing. - * - * @author Sam Jakob Harker - */ - public void start() { - if (this.plugin == null) { - Bukkit.getLogger().severe("MassiveStats could not find an instance/version of Gson to use and thus cannot start."); - return; - } - - if (task == null) { - // If the API endpoint URL is invalid, don't start a new task to prevent the user from being spammed. - try { - new URL(MassiveStats.API_URL); - } catch (MalformedURLException ex) { - getPlugin() - .getLogger().warning("You have specified an invalid API endpoint for MassiveStats."); - return; - } - - task = new MassiveStatsUpdateTask(this); - task.runTaskTimerAsynchronously(plugin, 0L, pingInterval * 20L); - } - } - - /** - * Stop the MassiveStats reporting timer. - * Requests will no longer be sent to the server - or until {@link #start()} is invoked. - * - * @author Sam Jakob Harker - */ - public void stop() { - if (task == null) { - return; - } - - task.cancel(); - task = null; - } - - /** - * Returns the duration, in seconds, that MassiveStats will wait before sending another request to the server. - * - * @return Duration between requests. - * @author Sam Jakob Harker - */ - public int getPingInterval() { - return pingInterval; - } - - /** - * Sets the duration, in seconds, that MassiveStats should wait before sending another request to the server. - * - * @param pingInterval Duration between requests. - * @author Sam Jakob Harker - */ - public void setPingInterval(int pingInterval) { - this.pingInterval = pingInterval; - - stop(); - start(); - } - - /** - * Returns the plugin that this MassiveStats instance is collecting data for. - * - * @return MassiveStats instance plugin. - * @author Sam Jakob Harker - */ - public JavaPlugin getPlugin() { - return plugin; - } - - /** - * Returns the contents of the last response from the MassiveStats server. - * - * @return MassiveStats server response. - * @author Sam Jakob Harker - */ - public MassiveStatsDataResponse getLastResponse() { - return lastResponse; - } - - void setLastResponse(MassiveStatsDataResponse lastResponse) { - this.lastResponse = lastResponse; - } - - @EventHandler - public void onPlayerJoin(PlayerJoinEvent event) { - // Ensure the listener should be active - if (lastResponse == null || listenerDisabled) { - return; - } - - // Of course, only notify the user if the plugin is not up to date. - if (lastResponse.isUpToDate()) { - return; - } - - // and only notify operators - or players with the correct permission. - if (!event.getPlayer().isOp() && !event.getPlayer().hasPermission(MassiveStats.MASSIVE_UPDATE_PERMISSION)) { - return; - } - - event.getPlayer().sendMessage(lastResponse.getUpdateMessage()); - } - - Class getJsonElement() { - return jsonElement; - } - - Class getJsonParser() { - return jsonParser; - } - - Class getJsonObject() { - return jsonObject; - } - - Class getJsonPrimitive() { - return jsonPrimitive; - } - -} - -class MassiveStatsUpdateTask extends BukkitRunnable { - - private final MassiveStats instance; - - MassiveStatsUpdateTask(MassiveStats requester) { - instance = requester; - } - - @Override - @SuppressWarnings("all") - public void run() { - try { - // Generate the request payload and serialize it as JSON. - String payload = new MassiveStatsDataRequest(instance).serialize(); - - // Then create a new HttpsUrlConnection to the API server and open it. - HttpsURLConnection connection = (HttpsURLConnection) new URL(MassiveStats.API_URL).openConnection(); - - // Ensure that we don't hang the server with our 'dang shenanigans'. - connection.setConnectTimeout(2500); - connection.setReadTimeout(3500); - - // Set the all-important request headers before we begin POSTing... - connection.setRequestMethod("POST"); - connection.setRequestProperty("Accept", "application/json"); - connection.setRequestProperty("Content-Type", "application/json; charset=utf-8"); - connection.setRequestProperty("User-Agent", "Massive/" + MassiveStats.CLIENT_VERSION); - - // Open the output stream, write the payload, and then close the stream. - connection.setDoOutput(true); - DataOutputStream output = new DataOutputStream(connection.getOutputStream()); - output.writeBytes(payload); - output.flush(); - output.close(); - - // Ensure that the server was happy with our data. - int responseCode = connection.getResponseCode(); - if (responseCode != 200) { - throw new IOException(); - } - - // Now, read the server's response to our payload... - BufferedReader input = new BufferedReader(new InputStreamReader(connection.getInputStream())); - StringBuilder response = new StringBuilder(); - - // ...line by line. - String line; - while ((line = input.readLine()) != null) { - response.append(line); - } - input.close(); - - // Now, we parse the JSON object. - try { - if (response.toString().contains("ERR_DATA_MISSING")) { - Bukkit.getLogger().severe("MassiveStats has encountered an error for the following plugin: " - + instance.getPlugin().getName()); - instance.stop(); - return; - } - - Object parser = instance.getJsonParser().newInstance(); - - // JsonElement - Object serverResponseRaw = - parser.getClass().getMethod("parse", String.class).invoke(parser, response.toString()); - - // JsonObject - Object serverResponse = serverResponseRaw.getClass().getMethod("getAsJsonObject", null) - .invoke(serverResponseRaw, null); - - Method serverResponseGet = instance.getJsonObject().getMethod("get", String.class); - - Method getAsBoolean = - instance.getJsonPrimitive().getMethod("getAsBoolean", null); - Method getAsString = - instance.getJsonPrimitive().getMethod("getAsString", null); - - if (serverResponseGet.invoke(serverResponse, "upToDate") == null) { - Bukkit.getLogger().severe("MassiveStats has encountered an error for the following plugin: " - + instance.getPlugin().getName()); - instance.stop(); - return; - } - - if (serverResponseGet.invoke(serverResponse, "notice") != null) { - Bukkit.getLogger().severe( - (String) getAsString.invoke(serverResponseGet.invoke(serverResponse, "notice")) - ); - instance.stop(); - return; - } - - boolean upToDate = (boolean) getAsBoolean.invoke(serverResponseGet.invoke(serverResponse, "upToDate"), null); - String latestVersion = (String) getAsString.invoke(serverResponseGet.invoke(serverResponse, "latestVersion"), null); - String updateMessage = ChatColor.translateAlternateColorCodes( - '&', (String) getAsString.invoke(serverResponseGet.invoke(serverResponse, "updateMessage"), null) - ); - - instance.setLastResponse(new MassiveStatsDataResponse( - upToDate, latestVersion, updateMessage - )); - - } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { - instance.getPlugin() - .getLogger().warning("MassiveStats returned an invalid response for this plugin."); - } - - // Finally, call an event to mark the update. - } catch (MalformedURLException ex) { - instance.getPlugin() - .getLogger().warning("You have specified an invalid API endpoint for MassiveStats."); - } catch (IOException ex) { - instance.getPlugin() - .getLogger().warning("MassiveStats was unable to communicate with its API endpoint."); - } - } - -} - -class MassiveStatsDataRequest { - - private Object jsonObject; - - MassiveStatsDataRequest(MassiveStats requester) { - try { - jsonObject = requester.getJsonObject().newInstance(); - - Method add = - requester.getJsonObject().newInstance().getClass().getMethod("add", String.class, requester.getJsonElement()); - Method addPropertyString = - requester.getJsonObject().newInstance().getClass().getMethod("addProperty", String.class, String.class); - Method addPropertyNumber = - requester.getJsonObject().newInstance().getClass().getMethod("addProperty", String.class, Number.class); - Method addPropertyBoolean = - requester.getJsonObject().newInstance().getClass().getMethod("addProperty", String.class, Boolean.class); - - addPropertyNumber.invoke(jsonObject, "now", System.currentTimeMillis()); - - /* PLUGIN DATA */ - Object pluginObject = jsonObject.getClass().newInstance(); - addPropertyString.invoke(pluginObject, "name", requester.getPlugin().getDescription().getName()); - addPropertyString.invoke(pluginObject, "version", requester.getPlugin().getDescription().getVersion()); - add.invoke(jsonObject, "plugin", pluginObject); - - /* SERVER DATA */ - Object minecraftServerObject = jsonObject.getClass().newInstance(); - addPropertyNumber.invoke(minecraftServerObject, "players", Bukkit.getServer().getOnlinePlayers().size()); - addPropertyBoolean.invoke(minecraftServerObject, "onlineMode", Bukkit.getServer().getOnlineMode()); - addPropertyString.invoke(minecraftServerObject, "version", Bukkit.getServer().getVersion()); - - Object javaServerObject = jsonObject.getClass().newInstance(); - addPropertyString.invoke(javaServerObject, "version", System.getProperty("java.version")); - - Object osServerObject = jsonObject.getClass().newInstance(); - addPropertyString.invoke(osServerObject, "name", System.getProperty("os.name")); - addPropertyString.invoke(osServerObject, "arch", System.getProperty("os.arch")); - addPropertyString.invoke(osServerObject, "version", System.getProperty("os.version")); - - Object hardwareServerObject = jsonObject.getClass().newInstance(); - addPropertyNumber.invoke(hardwareServerObject, "cores", Runtime.getRuntime().availableProcessors()); - - Object serverObject = jsonObject.getClass().newInstance(); - add.invoke(serverObject, "minecraft", minecraftServerObject); - add.invoke(serverObject, "java", javaServerObject); - add.invoke(serverObject, "os", osServerObject); - add.invoke(serverObject, "hardware", hardwareServerObject); - - add.invoke(jsonObject, "server", serverObject); - - /* MASSIVE DATA */ - Object massiveObject = jsonObject.getClass().newInstance(); - addPropertyNumber.invoke(massiveObject, "version", MassiveStats.CLIENT_VERSION); - addPropertyNumber.invoke(massiveObject, "pingInterval", requester.getPingInterval()); - - //object.add("Massive", massiveObject); - add.invoke(jsonObject, "Massive", massiveObject); - } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { - e.printStackTrace(); - } - } - - @SuppressWarnings("all") - public String serialize() { - //return object.toString(); - try { - Method toString = jsonObject.getClass().getMethod("toString", null); - return (String) toString.invoke(jsonObject); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - e.printStackTrace(); - } - - return null; - } - -} - -final class MassiveStatsDataResponse { - - private final boolean isUpToDate; - private final String newVersion; - private final String updateMessage; - - MassiveStatsDataResponse(boolean isUpToDate, String newVersion, String updateMessage) { - this.isUpToDate = isUpToDate; - - if (!isUpToDate) { - this.newVersion = newVersion; - this.updateMessage = updateMessage; - return; - } - - this.newVersion = null; - this.updateMessage = null; - } - - /** - * Indicates whether or not this version of the plugin is the latest. - * True = This is the latest version of the plugin. - * False = There is an update available. - * - * @return Whether or not there is an update available. - */ - public boolean isUpToDate() { - return isUpToDate; - } - - /** - * Gets the name of the latest version. If this is the latest version, it returns null. - * - * @return The name of the latest version. - */ - public String getLatestVersion() { - return newVersion; - } - - /** - * Gets the message to display, convincing the user to update to the new version of the plugin. - * - * @return The update message to display. - */ - public String getUpdateMessage() { - return updateMessage; - } - -} \ No newline at end of file diff --git a/src/main/java/com/massivecraft/factions/SavageFactions.java b/src/main/java/com/massivecraft/factions/SavageFactions.java index 5c94ee74..49bab1b7 100644 --- a/src/main/java/com/massivecraft/factions/SavageFactions.java +++ b/src/main/java/com/massivecraft/factions/SavageFactions.java @@ -2,7 +2,6 @@ package com.massivecraft.factions; import ch.njol.skript.Skript; import ch.njol.skript.SkriptAddon; -import com.earth2me.essentials.Essentials; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.massivecraft.factions.cmd.CmdAutoHelp; @@ -202,11 +201,6 @@ public class SavageFactions extends MPlugin { // start up task which runs the autoLeaveAfterDaysOfInactivity routine startAutoLeaveTask(false); - if (getConfig().getBoolean("MassiveStats")) { - // massive stats - new MassiveStats(this); - } - if (version > 8) { useNonPacketParticles = true; log("Minecraft Version 1.9 or higher found, using non packet based particle API"); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 58b5846d..1710b514 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1016,9 +1016,6 @@ Tntfill: max-radius: 32 max-amount: 64 -# Statistics Engine. -MassiveStats: true - ############################################################ # +------------------------------------------------------+ # # | Big List of variables | #