diff --git a/lobbybalancer.iml b/lobbybalancer.iml
index 51d0f38..24d4073 100644
--- a/lobbybalancer.iml
+++ b/lobbybalancer.iml
@@ -116,6 +116,7 @@
+
diff --git a/pom.xml b/pom.xml
index a3493f4..a4b16d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.jaimemartz
lobbybalancer
- 2.0.9.2
+ 2.0.9.3
LobbyBalancer
@@ -30,6 +30,10 @@
xephi-repo
http://ci.xephi.fr/plugin/repository/everything/
+
+ bstats-repo
+ https://repo.bstats.org/content/groups/public/
+
clean install
@@ -47,15 +51,21 @@
org.apache.maven.plugins
maven-shade-plugin
2.4.3
+
+ true
+
+
+ org.bstats
+ me.jaimemartz.lobbybalancer
+
+
+
package
shade
-
- true
-
@@ -98,6 +108,12 @@
2.8.0
compile
+
+ org.bstats
+ bstats-bungeecord
+ LATEST
+ compile
+
junit
junit
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/LobbyBalancer.java b/src/main/java/me/jaimemartz/lobbybalancer/LobbyBalancer.java
index 1563c43..671eac8 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/LobbyBalancer.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/LobbyBalancer.java
@@ -14,11 +14,11 @@ import me.jaimemartz.lobbybalancer.manager.PlayerLocker;
import me.jaimemartz.lobbybalancer.ping.PingManager;
import me.jaimemartz.lobbybalancer.section.SectionManager;
import me.jaimemartz.lobbybalancer.utils.DigitUtils;
-import me.jaimemartz.lobbybalancer.utils.Metrics;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.config.Configuration;
+import org.bstats.Metrics;
import org.inventivetalent.update.bungee.BungeeUpdater;
import java.io.IOException;
@@ -53,16 +53,14 @@ public class LobbyBalancer extends Plugin {
this.enable();
- if (ConfigEntries.SUBMIT_STATS.get()) {
- //Metrics (https://bstats.org/)
- Metrics metrics = new Metrics(this);
- metrics.addCustomChart(new Metrics.SingleLineChart("configured_sections") {
- @Override
- public int getValue() {
- return sectionManager.getSections().size();
- }
- });
- }
+ //Metrics (https://bstats.org/)
+ Metrics metrics = new Metrics(this);
+ metrics.addCustomChart(new Metrics.SingleLineChart("configured_sections") {
+ @Override
+ public int getValue() {
+ return sectionManager.getSections().size();
+ }
+ });
}
private void enable() {
@@ -113,7 +111,6 @@ public class LobbyBalancer extends Plugin {
if (ConfigEntries.SERVER_CHECK_ENABLED.get()) {
pingManager = new PingManager(this);
- pingManager.start();
}
if (ConfigEntries.FALLBACK_COMMAND_ENABLED.get()) {
@@ -174,6 +171,7 @@ public class LobbyBalancer extends Plugin {
if (ConfigEntries.SERVER_CHECK_ENABLED.get()) {
pingManager.stop();
+ pingManager = null;
}
if (ConfigEntries.FALLBACK_COMMAND_ENABLED.get()) {
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/commands/FallbackCommand.java b/src/main/java/me/jaimemartz/lobbybalancer/commands/FallbackCommand.java
index 6bf7d2a..767a13d 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/commands/FallbackCommand.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/commands/FallbackCommand.java
@@ -62,7 +62,7 @@ public class FallbackCommand extends Command {
try {
ServerSection section = callable.call();
if (section != null) {
- ConnectionIntent.simple(plugin, player, section);
+ ConnectionIntent.connect(plugin, player, section);
} else {
msgr.send(ConfigEntries.UNAVAILABLE_MESSAGE.get());
}
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/commands/ManageCommand.java b/src/main/java/me/jaimemartz/lobbybalancer/commands/ManageCommand.java
index 5049bbc..483735d 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/commands/ManageCommand.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/commands/ManageCommand.java
@@ -42,13 +42,13 @@ public class ManageCommand extends Command {
if (args.length == 3) {
ProxiedPlayer player = plugin.getProxy().getPlayer(args[2]);
if (player != null) {
- ConnectionIntent.simple(plugin, player, section);
+ ConnectionIntent.connect(plugin, player, section);
} else {
msgr.send("&cThere is no player with that name connected to this proxy");
}
} else {
if (sender instanceof ProxiedPlayer) {
- ConnectionIntent.simple(plugin, (ProxiedPlayer) sender, section);
+ ConnectionIntent.connect(plugin, (ProxiedPlayer) sender, section);
} else {
msgr.send("&cThis command can only be executed by a player");
}
@@ -110,7 +110,6 @@ public class ManageCommand extends Command {
msgr.send("&7Valid: &b{status}",
new Replacement("{status}", section.isValid() ? ChatColor.GREEN + "yes" : ChatColor.RED + "no"));
-
if (!section.getServers().isEmpty()) {
msgr.send("&7Section Servers: ");
section.getServers().forEach(server -> {
@@ -164,7 +163,6 @@ public class ManageCommand extends Command {
message.addExtra(extra);
}
-
sender.sendMessage(message);
break;
}
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/configuration/ConfigEntries.java b/src/main/java/me/jaimemartz/lobbybalancer/configuration/ConfigEntries.java
index 7a19d79..8b5111b 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/configuration/ConfigEntries.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/configuration/ConfigEntries.java
@@ -11,7 +11,6 @@ public class ConfigEntries implements ConfigEntryHolder {
public static final ConfigEntry PLUGIN_ENABLED = new ConfigEntry<>(0, "settings.enabled", false);
public static final ConfigEntry SILENT_STARTUP = new ConfigEntry<>(0, "settings.silent-startup", false);
public static final ConfigEntry CHECK_UPDATES_ENABLED = new ConfigEntry<>(0, "settings.check-updates", true);
- public static final ConfigEntry SUBMIT_STATS = new ConfigEntry<>(0, "settings.submit-stats", true);
public static final ConfigEntry SERVER_CHECK_ENABLED = new ConfigEntry<>(0, "settings.server-check.enabled", true);
public static final ConfigEntry SERVER_CHECK_MODE = new ConfigEntry<>(0, "settings.server-check.tactic", "CUSTOM");
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/connection/ConnectionIntent.java b/src/main/java/me/jaimemartz/lobbybalancer/connection/ConnectionIntent.java
index 4f6a940..4331452 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/connection/ConnectionIntent.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/connection/ConnectionIntent.java
@@ -52,7 +52,7 @@ public abstract class ConnectionIntent {
}
}
- final ServerInfo fetchServer(LobbyBalancer plugin, ProxiedPlayer player, ServerSection section, ProviderType provider, List servers) {
+ private ServerInfo fetchServer(LobbyBalancer plugin, ProxiedPlayer player, ServerSection section, ProviderType provider, List servers) {
if (ConfigEntries.ASSIGN_TARGETS_ENABLED.get()) {
if (ServerAssignRegistry.hasAssignedServer(player, section)) {
ServerInfo target = ServerAssignRegistry.getAssignedServer(player, section);
@@ -66,7 +66,7 @@ public abstract class ConnectionIntent {
}
int intents = ConfigEntries.SERVER_CHECK_ATTEMPTS.get();
- while (intents-- >= 1) {
+ for (int intent = 1; intent <= intents; intent++) {
if (servers.size() == 0) return null;
if (servers.size() == 1) return servers.get(0);
@@ -80,6 +80,7 @@ public abstract class ConnectionIntent {
servers.remove(target);
}
}
+
return null;
}
@@ -89,7 +90,7 @@ public abstract class ConnectionIntent {
//Nothing to do
}
- public static void simple(LobbyBalancer plugin, ProxiedPlayer player, ServerSection section) {
+ public static void connect(LobbyBalancer plugin, ProxiedPlayer player, ServerSection section) {
new ConnectionIntent(plugin, player, section) {
@Override
public void connect(ServerInfo server) {
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/listener/PluginMessageListener.java b/src/main/java/me/jaimemartz/lobbybalancer/listener/PluginMessageListener.java
index 668debe..24db395 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/listener/PluginMessageListener.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/listener/PluginMessageListener.java
@@ -39,7 +39,7 @@ public class PluginMessageListener implements Listener {
return;
}
- ConnectionIntent.simple(plugin, player, section);
+ ConnectionIntent.connect(plugin, player, section);
}
break;
}
@@ -55,7 +55,7 @@ public class PluginMessageListener implements Listener {
return;
}
- ConnectionIntent.simple(plugin, player, section);
+ ConnectionIntent.connect(plugin, player, section);
break;
}
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/listener/ServerConnectListener.java b/src/main/java/me/jaimemartz/lobbybalancer/listener/ServerConnectListener.java
index ab0dacc..395f454 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/listener/ServerConnectListener.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/listener/ServerConnectListener.java
@@ -25,9 +25,9 @@ public class ServerConnectListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onConnect(ServerConnectEvent event) {
ProxiedPlayer player = event.getPlayer();
-
ServerInfo target = event.getTarget();
Messager msgr = new Messager(player);
+
ServerSection section = plugin.getSectionManager().getByServer(target);
if (section == null) {
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/listener/ServerKickListener.java b/src/main/java/me/jaimemartz/lobbybalancer/listener/ServerKickListener.java
index eeff0ef..383c3d1 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/listener/ServerKickListener.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/listener/ServerKickListener.java
@@ -111,7 +111,7 @@ public class ServerKickListener implements Listener {
event.setCancelServer(server);
plugin.getProxy().getScheduler().schedule(plugin, () -> {
PlayerLocker.unlock(player);
- }, 2, TimeUnit.SECONDS);
+ }, 5, TimeUnit.SECONDS);
}
};
}
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/ping/PingManager.java b/src/main/java/me/jaimemartz/lobbybalancer/ping/PingManager.java
index 083b65b..62ecae4 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/ping/PingManager.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/ping/PingManager.java
@@ -11,17 +11,12 @@ import java.util.Map;
import java.util.concurrent.TimeUnit;
public class PingManager {
- private final LobbyBalancer plugin;
private boolean stopped = true;
private PingTactic tactic;
private ScheduledTask task;
private final Map storage = new HashMap<>();
public PingManager(LobbyBalancer plugin) {
- this.plugin = plugin;
- }
-
- public void start() {
if (task != null) {
stop();
}
@@ -41,7 +36,7 @@ public class PingManager {
continue;
}
- track(server);
+ track(plugin, server);
}
}
}, 0L, ConfigEntries.SERVER_CHECK_INTERVAL.get(), TimeUnit.MILLISECONDS);
@@ -55,17 +50,15 @@ public class PingManager {
}
}
- private void track(ServerInfo server) {
+ private void track(LobbyBalancer plugin, ServerInfo server) {
tactic.ping(server, (status, throwable) -> {
if (status == null) {
status = new ServerStatus("Server Unreachable", 0, 0);
}
if (ConfigEntries.SERVER_CHECK_PRINT_INFO.get()) {
- plugin.getLogger().info(String.format(
- "Tracking server %s, status: [Description: \"%s\", Online Players: %s, Maximum Players: %s, Accessible: %s]",
- server.getName(), status.getDescription(), status.getOnlinePlayers(), status.getMaximumPlayers(), status.isAccessible()
- ));
+ plugin.getLogger().info(String.format("Tracking server %s, status: [Description: \"%s\", Online Players: %s, Maximum Players: %s, Accessible: %s]",
+ server.getName(), status.getDescription(), status.getOnlinePlayers(), status.getMaximumPlayers(), status.isAccessible()));
}
storage.put(server, status);
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/section/SectionCommand.java b/src/main/java/me/jaimemartz/lobbybalancer/section/SectionCommand.java
index f87fe7e..439117b 100644
--- a/src/main/java/me/jaimemartz/lobbybalancer/section/SectionCommand.java
+++ b/src/main/java/me/jaimemartz/lobbybalancer/section/SectionCommand.java
@@ -26,7 +26,7 @@ public class SectionCommand extends Command {
Messager msgr = new Messager(sender);
if (sender instanceof ProxiedPlayer) {
ProxiedPlayer player = (ProxiedPlayer) sender;
- ConnectionIntent.simple(plugin, player, section);
+ ConnectionIntent.connect(plugin, player, section);
} else {
msgr.send(ChatColor.RED + "This command can only be executed by a player");
}
diff --git a/src/main/java/me/jaimemartz/lobbybalancer/utils/Metrics.java b/src/main/java/me/jaimemartz/lobbybalancer/utils/Metrics.java
deleted file mode 100644
index fac190f..0000000
--- a/src/main/java/me/jaimemartz/lobbybalancer/utils/Metrics.java
+++ /dev/null
@@ -1,999 +0,0 @@
-package me.jaimemartz.lobbybalancer.utils;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import net.md_5.bungee.api.plugin.Plugin;
-import net.md_5.bungee.api.scheduler.TaskScheduler;
-import net.md_5.bungee.config.Configuration;
-import net.md_5.bungee.config.ConfigurationProvider;
-import net.md_5.bungee.config.YamlConfiguration;
-
-import javax.net.ssl.HttpsURLConnection;
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URL;
-import java.nio.file.Path;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.zip.GZIPOutputStream;
-
-/**
- * bStats collects some data for plugin authors.
- *
- * Check out https://bStats.org/ to learn more about bStats!
- */
-public class Metrics {
-
- // The version of this bStats class
- public static final int B_STATS_VERSION = 1;
-
- // The url to which the data is sent
- private static final String URL = "https://bStats.org/submitData/bungeecord";
-
- // The plugin
- private final Plugin plugin;
-
- // Is bStats enabled on this server?
- private boolean enabled;
-
- // The uuid of the server
- private String serverUUID;
-
- // Should failed requests be logged?
- private boolean logFailedRequests = false;
-
- // A list with all known metrics class objects including this one
- private static final List