From 8a50c27ebc2a95cc398bda8a51d624a8666336d7 Mon Sep 17 00:00:00 2001 From: Jesse Boyd Date: Wed, 16 Aug 2017 00:04:45 +1000 Subject: [PATCH] * --- .../com/boydti/fawe/bukkit/FaweBukkit.java | 4 ++- .../boydti/fawe/object/brush/SpikeBrush.java | 2 +- .../com/boydti/fawe/util/metrics/BStats.java | 27 +++++++++++++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java index d3343212..0f61b788 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java @@ -128,7 +128,9 @@ public class FaweBukkit implements IFawe, Listener { @Override public String getPlatformVersion() { - return Bukkit.getVersion(); + String bukkitVersion = Bukkit.getVersion(); + int index = bukkitVersion.indexOf("MC: "); + return index == -1 ? bukkitVersion : bukkitVersion.substring(index + 4, bukkitVersion.length() - 1); } public void setupInjector() { diff --git a/core/src/main/java/com/boydti/fawe/object/brush/SpikeBrush.java b/core/src/main/java/com/boydti/fawe/object/brush/SpikeBrush.java index 00d7de6c..eaf6bf14 100644 --- a/core/src/main/java/com/boydti/fawe/object/brush/SpikeBrush.java +++ b/core/src/main/java/com/boydti/fawe/object/brush/SpikeBrush.java @@ -11,4 +11,4 @@ public class SpikeBrush implements Brush { public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException { } -} +} \ No newline at end of file diff --git a/core/src/main/java/com/boydti/fawe/util/metrics/BStats.java b/core/src/main/java/com/boydti/fawe/util/metrics/BStats.java index 280fe5cb..ab2169c6 100644 --- a/core/src/main/java/com/boydti/fawe/util/metrics/BStats.java +++ b/core/src/main/java/com/boydti/fawe/util/metrics/BStats.java @@ -3,8 +3,10 @@ package com.boydti.fawe.util.metrics; import com.boydti.fawe.Fawe; import com.boydti.fawe.configuration.file.YamlConfiguration; import com.boydti.fawe.object.io.PGZIPOutputStream; +import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; +import com.google.gson.JsonSyntaxException; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; @@ -45,6 +47,7 @@ public class BStats implements Closeable { private final String serverVersion; private final String pluginVersion; private Thread task; + private Gson gson = new Gson(); // Is bStats enabled on this server? private boolean enabled; @@ -62,6 +65,10 @@ public class BStats implements Closeable { this("FastAsyncWorldEdit", Fawe.get().getVersion().toString(), Fawe.imp().getPlatformVersion(), Fawe.imp().getPlatform(), Fawe.imp().isOnlineMode()); } + public int getPlayerCount() { + return Fawe.imp() == null ? 1 : Fawe.imp().getPlayerCount(); + } + private BStats(String plugin, String pluginVersion, String serverVersion, String platform, boolean online) { this.url = "https://bStats.org/submitData/" + platform; this.plugin = plugin; @@ -70,8 +77,6 @@ public class BStats implements Closeable { this.platform = platform; this.online = online; - StringBuilder data = new StringBuilder(); - File configFile = new File(getJarFile().getParentFile(), "bStats" + File.separator + "config.yml"); YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile); @@ -161,9 +166,10 @@ public class BStats implements Closeable { try { if (enabled) Thread.sleep(TimeUnit.MINUTES.toMillis(30)); } catch (InterruptedException e) { - return; + break; } } + submitData(); } }); this.task.start(); @@ -178,6 +184,14 @@ public class BStats implements Closeable { @Override public void close() { enabled = false; + if (task != null) { + task.interrupt(); + try { + task.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } /** @@ -186,7 +200,7 @@ public class BStats implements Closeable { * @return The server specific data. */ private JsonObject getServerData() { - int playerAmount = Fawe.imp() != null ? Fawe.imp().getPlayerCount() : 1; + int playerAmount = getPlayerCount(); int onlineMode = online ? 1 : 0; int managedServers = 1; @@ -229,8 +243,11 @@ public class BStats implements Closeable { Object plugin = metrics.getClass().getMethod("getPluginData").invoke(metrics); if (plugin instanceof JsonObject) { pluginData.add((JsonObject) plugin); + } else { + pluginData.add(gson.fromJson(plugin.toString(), JsonObject.class)); } - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } + + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | NullPointerException | JsonSyntaxException ignored) { } } data.add("plugins", pluginData);