diff --git a/addon/pom.xml b/addon/pom.xml
index d12be3f..f2582fd 100644
--- a/addon/pom.xml
+++ b/addon/pom.xml
@@ -7,7 +7,7 @@
com.jaimemartz
playerbalancer-parent
- 2.3.2-SNAPSHOT
+ 2.3.3
playerbalancer-addon
@@ -29,13 +29,13 @@
org.spigotmc
spigot-api
- 1.15.1-R0.1-SNAPSHOT
+ 1.18.2-R0.1-SNAPSHOT
provided
me.clip
placeholderapi
- 2.10.5
+ 2.11.1
provided
diff --git a/addon/src/main/java/com/jaimemartz/playerbalanceraddon/MainCommand.java b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/MainCommand.java
index 9b54e51..76b3d8b 100644
--- a/addon/src/main/java/com/jaimemartz/playerbalanceraddon/MainCommand.java
+++ b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/MainCommand.java
@@ -1,6 +1,7 @@
package com.jaimemartz.playerbalanceraddon;
import com.google.common.base.Strings;
+import com.jaimemartz.playerbalanceraddon.util.Color;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@@ -26,16 +27,16 @@ public class MainCommand implements CommandExecutor {
Player player = plugin.getServer().getPlayer(args[2]);
if (player != null) {
plugin.getManager().connectPlayer(player, input);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("NoPlayer")));
}
} else {
if (sender instanceof Player) {
plugin.getManager().connectPlayer((Player) sender, input);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("ConsoleError")));
}
}
} else {
@@ -49,16 +50,16 @@ public class MainCommand implements CommandExecutor {
Player player = plugin.getServer().getPlayer(args[1]);
if (player != null) {
plugin.getManager().fallbackPlayer((Player) sender);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("NoPlayer")));
}
} else {
if (sender instanceof Player) {
plugin.getManager().fallbackPlayer((Player) sender);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("ConsoleError")));
}
}
break;
@@ -71,16 +72,16 @@ public class MainCommand implements CommandExecutor {
Player player = plugin.getServer().getPlayer(args[2]);
if (player != null) {
plugin.getManager().bypassConnect(player, input);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("NoPlayer")));
}
} else {
if (sender instanceof Player) {
plugin.getManager().bypassConnect((Player) sender, input);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("ConsoleError")));
}
}
} else {
@@ -94,16 +95,16 @@ public class MainCommand implements CommandExecutor {
Player player = plugin.getServer().getPlayer(args[1]);
if (player != null) {
plugin.getManager().setPlayerBypass(player);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("NoPlayer")));
}
} else {
if (sender instanceof Player) {
plugin.getManager().setPlayerBypass((Player) sender);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("ConsoleError")));
}
}
break;
@@ -114,16 +115,16 @@ public class MainCommand implements CommandExecutor {
Player player = plugin.getServer().getPlayer(args[1]);
if (player != null) {
plugin.getManager().clearPlayerBypass((Player) sender);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "There is no player with that name connected to this server");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("NoPlayer")));
}
} else {
if (sender instanceof Player) {
plugin.getManager().clearPlayerBypass((Player) sender);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "This command variant can only be executed by a player");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("ConsoleError")));
}
}
break;
@@ -133,9 +134,9 @@ public class MainCommand implements CommandExecutor {
if (args.length >= 3) {
if (args[2].equals("false") || args[2].equals("true")) {
plugin.getManager().setStatusOverride(args[1], Boolean.valueOf(args[2]));
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
- sender.sendMessage(ChatColor.RED + "The status parameter of this command variant has to be a boolean type, either false or true");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("BooleanError")));
}
} else {
sender.sendMessage(ChatColor.RED + "Usage: /section overridestatus ");
@@ -146,7 +147,7 @@ public class MainCommand implements CommandExecutor {
case "clearoverride": {
if (args.length >= 2) {
plugin.getManager().clearStatusOverride(args[1]);
- sender.sendMessage(ChatColor.GREEN + "Successfully sent request to the plugin");
+ sender.sendMessage(Color.translate(plugin.getConfig().getString("RequestSent")));
} else {
sender.sendMessage(ChatColor.RED + "Usage: /section clearoverride ");
}
diff --git a/addon/src/main/java/com/jaimemartz/playerbalanceraddon/PlayerBalancerAddon.java b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/PlayerBalancerAddon.java
index c211d88..ae71c22 100644
--- a/addon/src/main/java/com/jaimemartz/playerbalanceraddon/PlayerBalancerAddon.java
+++ b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/PlayerBalancerAddon.java
@@ -1,22 +1,81 @@
package com.jaimemartz.playerbalanceraddon;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.jaimemartz.playerbalanceraddon.util.ConfigurationFile;
+import lombok.Getter;
import org.bukkit.plugin.java.JavaPlugin;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.logging.Level;
+
+@Getter
public class PlayerBalancerAddon extends JavaPlugin {
private PluginMessageManager manager;
private PlayerBalancerPlaceholderExpansion expansion;
+ private ConfigurationFile config;
@Override
public void onEnable() {
+ config = new ConfigurationFile(this, "config.yml");
manager = new PluginMessageManager(this);
getCommand("spb").setExecutor(new MainCommand(this));
-
+ updateCheck();
if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) {
expansion = new PlayerBalancerPlaceholderExpansion(this);
expansion.register();
}
}
+ public void updateCheck() {
+ try {
+ String urlString = "https://updatecheck.bghddevelopment.com";
+ URL url = new URL(urlString);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("GET");
+ connection.setRequestProperty("User-Agent", "Mozilla/5.0");
+ BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String input;
+ StringBuffer response = new StringBuffer();
+ while ((input = reader.readLine()) != null) {
+ response.append(input);
+ }
+ reader.close();
+ JsonObject object = new JsonParser().parse(response.toString()).getAsJsonObject();
+
+ if (object.has("plugins")) {
+ JsonObject plugins = object.get("plugins").getAsJsonObject();
+ JsonObject info = plugins.get("PlayerBalancer").getAsJsonObject();
+ String version = info.get("version").getAsString();
+ if (version.equals(getDescription().getVersion())) {
+ getLogger().log(Level.INFO, ("PlayerBalancerAddon is on the latest version."));
+ } else {
+ getLogger().log(Level.WARNING, (""));
+ getLogger().log(Level.WARNING, (""));
+ getLogger().log(Level.WARNING, ("Your PlayerBalancerAddon version is out of date!"));
+ getLogger().log(Level.WARNING, ("We recommend updating ASAP!"));
+ getLogger().log(Level.WARNING, (""));
+ getLogger().log(Level.WARNING, ("Your Version: &e" + getDescription().getVersion()));
+ getLogger().log(Level.WARNING, ("Newest Version: &e" + version));
+ getLogger().log(Level.WARNING, (""));
+ getLogger().log(Level.WARNING, (""));
+ return;
+ }
+ return;
+ } else {
+ getLogger().log(Level.SEVERE, ("&cWrong response from update API, contact plugin developer!"));
+ return;
+ }
+ } catch (
+ Exception ex) {
+ getLogger().log(Level.SEVERE, ("&cFailed to get updater check. (" + ex.getMessage() + ")"));
+ return;
+ }
+ }
+
@Override
public void onDisable() {
// Nothing to do...
diff --git a/addon/src/main/java/com/jaimemartz/playerbalanceraddon/PlayerBalancerPlaceholderExpansion.java b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/PlayerBalancerPlaceholderExpansion.java
index 8a332a6..92f32ae 100644
--- a/addon/src/main/java/com/jaimemartz/playerbalanceraddon/PlayerBalancerPlaceholderExpansion.java
+++ b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/PlayerBalancerPlaceholderExpansion.java
@@ -20,7 +20,7 @@ public class PlayerBalancerPlaceholderExpansion extends PlaceholderExpansion {
String section = identifier.split("pc_")[1];
if (section == null)
- return null;
+ return "Invalid Section";
// For the first call this placeholder will return 0
// For the next one, the result of the previous one
@@ -41,7 +41,7 @@ public class PlayerBalancerPlaceholderExpansion extends PlaceholderExpansion {
@Override
public String getAuthor() {
- return "Jamezrin ";
+ return "BGHDDevelopmentLLC";
}
@Override
diff --git a/addon/src/main/java/com/jaimemartz/playerbalanceraddon/util/Color.java b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/util/Color.java
new file mode 100644
index 0000000..6f61006
--- /dev/null
+++ b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/util/Color.java
@@ -0,0 +1,39 @@
+package com.jaimemartz.playerbalanceraddon.util;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+public class Color {
+
+ public static String translate(String message) {
+ if (isOnePointSixteenPlus()) {
+ Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}");
+ Matcher matcher = pattern.matcher(message);
+
+ while (matcher.find()) {
+ String color = message.substring(matcher.start(), matcher.end());
+ message = message.replace(color, net.md_5.bungee.api.ChatColor.of(color) + "");
+ matcher = pattern.matcher(message);
+ }
+ }
+
+ return ChatColor.translateAlternateColorCodes('&', message);
+ }
+
+ public static List translate(List source) {
+ return source.stream().map(Color::translate).collect(Collectors.toList());
+ }
+
+ public static boolean isOnePointSixteenPlus() {
+ if (Bukkit.getVersion().contains("1.16") || Bukkit.getVersion().contains("1.17") || Bukkit.getVersion().contains("1.18")) {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/addon/src/main/java/com/jaimemartz/playerbalanceraddon/util/ConfigurationFile.java b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/util/ConfigurationFile.java
new file mode 100644
index 0000000..0a3c18a
--- /dev/null
+++ b/addon/src/main/java/com/jaimemartz/playerbalanceraddon/util/ConfigurationFile.java
@@ -0,0 +1,97 @@
+package com.jaimemartz.playerbalanceraddon.util;
+
+import org.bukkit.configuration.InvalidConfigurationException;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ConfigurationFile extends YamlConfiguration {
+
+ private File file;
+ private JavaPlugin plugin;
+ private String name;
+
+ public ConfigurationFile(JavaPlugin plugin, String name) {
+ this.file = new File(plugin.getDataFolder(), name);
+ this.plugin = plugin;
+ this.name = name;
+
+ if (!this.file.exists()) {
+ plugin.saveResource(name, false);
+ }
+
+ try {
+ this.load(this.file);
+ } catch (IOException | InvalidConfigurationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void load() {
+ this.file = new File(plugin.getDataFolder(), name);
+
+ if (!this.file.exists()) {
+ plugin.saveResource(name, false);
+ }
+ try {
+ this.load(this.file);
+ } catch (IOException | InvalidConfigurationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void save() {
+ try {
+ this.save(this.file);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public int getInt(String path) {
+ return super.getInt(path, 0);
+ }
+
+ @Override
+ public double getDouble(String path) {
+ return super.getDouble(path, 0.0);
+ }
+
+ @Override
+ public boolean getBoolean(String path) {
+ return super.getBoolean(path, false);
+ }
+
+ public String getString(String path, boolean check) {
+ return super.getString(path, null);
+ }
+
+ @Override
+ public String getString(String path) {
+ if (super.getString(path) == "") {
+
+ } else {
+ return Color.translate(super.getString(path, "String at path '" + path + "' not found.")).replace("|", "\u2503");
+ }
+ return Color.translate(super.getString(path, "String at path '" + path + "' not found.")).replace("|", "\u2503");
+ }
+
+ @Override
+ public List getStringList(String path) {
+ return super.getStringList(path).stream().map(Color::translate).collect(Collectors.toList());
+ }
+
+ public List getStringList(String path, boolean check) {
+ if (!super.contains(path)) return null;
+ return super.getStringList(path).stream().map(Color::translate).collect(Collectors.toList());
+ }
+
+ public boolean getOption(String option) {
+ return this.getBoolean("options." + option);
+ }
+}
diff --git a/addon/src/main/resources/config.yml b/addon/src/main/resources/config.yml
new file mode 100644
index 0000000..d6cb8db
--- /dev/null
+++ b/addon/src/main/resources/config.yml
@@ -0,0 +1,4 @@
+RequestSent: "&aSuccessfully sent request to the plugin"
+NoPlayer: "&cThere is no player with that name connected to this server"
+ConsoleError: "&cThis command variant can only be executed by a player"
+BooleanError: "&cThe status parameter of this command variant has to be a boolean type, either false or true"
\ No newline at end of file
diff --git a/balancer/pom.xml b/balancer/pom.xml
index a666d41..0de94e3 100644
--- a/balancer/pom.xml
+++ b/balancer/pom.xml
@@ -6,7 +6,7 @@
com.jaimemartz
- 2.3.2-SNAPSHOT
+ 2.3.3
playerbalancer-parent
diff --git a/balancer/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java b/balancer/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java
index d792c13..af46985 100644
--- a/balancer/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java
+++ b/balancer/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java
@@ -1,6 +1,8 @@
package com.jaimemartz.playerbalancer;
import com.google.common.reflect.TypeToken;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
import com.jaimemartz.playerbalancer.commands.FallbackCommand;
import com.jaimemartz.playerbalancer.commands.MainCommand;
import com.jaimemartz.playerbalancer.commands.ManageCommand;
@@ -13,6 +15,7 @@ import com.jaimemartz.playerbalancer.ping.StatusManager;
import com.jaimemartz.playerbalancer.section.SectionManager;
import com.jaimemartz.playerbalancer.settings.SettingsHolder;
import com.jaimemartz.playerbalancer.utils.CustomFormatter;
+import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
@@ -23,6 +26,7 @@ import org.bstats.bungeecord.Metrics;
import org.bstats.bungeecord.Metrics.SingleLineChart;
import java.io.*;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.nio.file.Files;
@@ -67,24 +71,55 @@ public class PlayerBalancer extends Plugin {
}
}));
- if (!checkUpToDate()) {
- getLogger().info("You are using a version of PlayerBalancer that is not the latest on spigot");
- getLogger().info("You might want to update to benefit of new features, improvements and fixes");
- getLogger().info("Access the plugin page at https://www.spigotmc.org/resources/55011");
- }
+ updateCheck();
this.execStart();
}
- public boolean checkUpToDate() {
+ public void updateCheck() {
try {
- URLConnection con = new URL("https://api.spigotmc.org/legacy/update.php?resource=55011").openConnection();
- String reply = new BufferedReader(new InputStreamReader(con.getInputStream())).readLine();
- return getDescription().getVersion().equals(reply);
- } catch (IOException e) {
- getLogger().log(Level.WARNING, "Could not access Spigot API, maybe you have a firewall or something that blocks request to it", e);
+ String urlString = "https://updatecheck.bghddevelopment.com";
+ URL url = new URL(urlString);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("GET");
+ connection.setRequestProperty("User-Agent", "Mozilla/5.0");
+ BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String input;
+ StringBuffer response = new StringBuffer();
+ while ((input = reader.readLine()) != null) {
+ response.append(input);
+ }
+ reader.close();
+ JsonObject object = new JsonParser().parse(response.toString()).getAsJsonObject();
+
+ if (object.has("plugins")) {
+ JsonObject plugins = object.get("plugins").getAsJsonObject();
+ JsonObject info = plugins.get("PlayerBalancer").getAsJsonObject();
+ String version = info.get("version").getAsString();
+ if (version.equals(getDescription().getVersion())) {
+ getLogger().log(Level.INFO, ("PlayerBalancer is on the latest version."));
+ } else {
+ getLogger().log(Level.WARNING, (""));
+ getLogger().log(Level.WARNING, (""));
+ getLogger().log(Level.WARNING, ("Your PlayerBalancer version is out of date!"));
+ getLogger().log(Level.WARNING, ("We recommend updating ASAP!"));
+ getLogger().log(Level.WARNING, (""));
+ getLogger().log(Level.WARNING, ("Your Version: &e" + getDescription().getVersion()));
+ getLogger().log(Level.WARNING, ("Newest Version: &e" + version));
+ getLogger().log(Level.WARNING, (""));
+ getLogger().log(Level.WARNING, (""));
+ return;
+ }
+ return;
+ } else {
+ getLogger().log(Level.SEVERE, ("&cWrong response from update API, contact plugin developer!"));
+ return;
+ }
+ } catch (
+ Exception ex) {
+ getLogger().log(Level.SEVERE, ("&cFailed to get updater check. (" + ex.getMessage() + ")"));
+ return;
}
- return true;
}
@Override
diff --git a/partyandfriendsaddon/pom.xml b/partyandfriendsaddon/pom.xml
index fadfa6d..fd635b8 100644
--- a/partyandfriendsaddon/pom.xml
+++ b/partyandfriendsaddon/pom.xml
@@ -6,7 +6,7 @@
com.bghddevelopment.partyandfriendsaddon
PBServerConnector
- 2.3.2-SNAPSHOT
+ 2.3.3
jar
PartyAndFriendsAddon
diff --git a/pom.xml b/pom.xml
index 6dab864..e4988cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.jaimemartz
playerbalancer-parent
- 2.3.2-SNAPSHOT
+ 2.3.3
pom