diff --git a/pom.xml b/pom.xml
index d5d59e8..661e74b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
org.bukkit
- bukkit
+ craftbukkit
1.8.8-R0.1-SNAPSHOT
diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/announcer/Announcer.java b/src/main/java/me/StevenLawson/TotalFreedomMod/announcer/Announcer.java
index 47a7532..b948c19 100644
--- a/src/main/java/me/StevenLawson/TotalFreedomMod/announcer/Announcer.java
+++ b/src/main/java/me/StevenLawson/TotalFreedomMod/announcer/Announcer.java
@@ -89,7 +89,7 @@ public class Announcer
current = 0;
}
- Utilities.bcastMsg(prefix + ANNOUNCEMENTS.get(current));
+ Utilities.bcastMsg(prefix + ANNOUNCEMENTS.get(current), false);
}
};
diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/DiscordBridge.java b/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/DiscordBridge.java
index a561202..89014de 100644
--- a/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/DiscordBridge.java
+++ b/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/DiscordBridge.java
@@ -1,18 +1,20 @@
package me.StevenLawson.TotalFreedomMod.bridge;
+import com.earth2me.essentials.User;
import me.StevenLawson.TotalFreedomMod.Log;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.config.MainConfig;
+import me.StevenLawson.TotalFreedomMod.player.PlayerList;
import me.StevenLawson.TotalFreedomMod.player.PlayerRank;
import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
import org.javacord.api.DiscordApi;
import org.javacord.api.DiscordApiBuilder;
import org.javacord.api.entity.channel.TextChannel;
import org.javacord.api.entity.message.MessageAuthor;
import org.javacord.api.entity.message.embed.EmbedBuilder;
-import java.util.ArrayList;
-import java.util.Optional;
+import java.util.*;
import java.util.regex.Pattern;
public class DiscordBridge {
@@ -47,76 +49,33 @@ public class DiscordBridge {
if (author.isBotUser() || content.isEmpty()) return;
if (content.equalsIgnoreCase(String.format("%sl", MainConfig.getString(ConfigurationEntry.DISCORD_PREFIX)))) {
- // TODO: Make this shitty code better (I was very tired from a blood test whilst writing this)
-
EmbedBuilder builder = new EmbedBuilder()
.setTitle(String.format("Player List - %s", MainConfig.getString(ConfigurationEntry.SERVER_NAME)))
.setDescription(String.format("There are %s / %s online players", Bukkit.getOnlinePlayers().size(), Bukkit.getMaxPlayers()));
- ArrayList seniorAdmins = new ArrayList<>();
- ArrayList developers = new ArrayList<>();
- ArrayList impostors = new ArrayList<>();
- ArrayList deopped = new ArrayList<>();
- ArrayList operators = new ArrayList<>();
- ArrayList superAdmins = new ArrayList<>();
- ArrayList superTelnetAdmins = new ArrayList<>();
- ArrayList owners = new ArrayList<>();
- for (org.bukkit.entity.Player player : Bukkit.getOnlinePlayers()) {
+ List inGameRanks = new ArrayList<>();
+
+ for (Player player : Bukkit.getOnlinePlayers()) {
+ User essentialsUser = EssentialsBridge.getEssentialsUser(player.getDisplayName());
+
+ if(essentialsUser != null) {
+ if(essentialsUser.isVanished()) continue;
+ }
+
PlayerRank rank = PlayerRank.fromSender(player);
- if (EssentialsBridge.getEssentialsUser(player.getName()).isVanished()) {
- continue;
+ if(!inGameRanks.contains(rank)) inGameRanks.add(rank);
+ }
+
+ Collections.sort(inGameRanks);
+ Collections.reverse(inGameRanks);
+
+ for (PlayerRank inGameRank : inGameRanks) {
+ List inGame = inGameRank.getInGameUsernames();
+
+ if(inGame.size() > 0) {
+ builder.addField(String.format("%s (%s)", inGameRank.getPlural(), inGame.size()), String.join(", ", inGame));
}
-
- if (rank.equals(PlayerRank.IMPOSTOR)) {
- impostors.add(player.getName());
- } else if (rank.equals(PlayerRank.DEVELOPER)) {
- developers.add(player.getName());
- } else if (rank.equals(PlayerRank.NON_OP)) {
- deopped.add(player.getName());
- } else if (rank.equals(PlayerRank.SENIOR)) {
- seniorAdmins.add(player.getName());
- } else if (rank.equals(PlayerRank.OWNER)) {
- owners.add(player.getName());
- } else if (rank.equals(PlayerRank.OP)) {
- operators.add(player.getName());
- } else if (rank.equals(PlayerRank.SUPER)) {
- superAdmins.add(player.getName());
- } else if (rank.equals(PlayerRank.TELNET)) {
- superTelnetAdmins.add(player.getName());
- }
- }
-
- if (owners.size() > 0) {
- builder.addField(String.format("Owners (%s)", owners.size()), String.join(", ", owners));
- }
-
- if (seniorAdmins.size() > 0) {
- builder.addField(String.format("Senior Admins (%s)", seniorAdmins.size()), String.join(", ", seniorAdmins));
- }
-
- if (developers.size() > 0) {
- builder.addField(String.format("Developers (%s)", developers.size()), String.join(", ", developers));
- }
-
- if (superTelnetAdmins.size() > 0) {
- builder.addField(String.format("Super Telnet Admins (%s)", superTelnetAdmins.size()), String.join(", ", superTelnetAdmins));
- }
-
- if (superAdmins.size() > 0) {
- builder.addField(String.format("Super Admins (%s)", superAdmins.size()), String.join(", ", seniorAdmins));
- }
-
- if (operators.size() > 0) {
- builder.addField(String.format("Operators (%s)", operators.size()), String.join(", ", operators));
- }
-
- if (deopped.size() > 0) {
- builder.addField(String.format("Non-Operators (%s)", deopped.size()), String.join(", ", deopped));
- }
-
- if (impostors.size() > 0) {
- builder.addField(String.format("Impostors (%s)", impostors.size()), String.join(", ", impostors));
}
CHANNEL.sendMessage(builder);
diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java
index b6e4f10..1661f4b 100644
--- a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java
+++ b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java
@@ -1,33 +1,53 @@
package me.StevenLawson.TotalFreedomMod.player;
+import com.google.common.collect.ImmutableList;
import me.StevenLawson.TotalFreedomMod.admin.Admin;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
+import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
-import static me.StevenLawson.TotalFreedomMod.util.Utilities.DEVELOPERS;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
-public enum PlayerRank
+import static me.StevenLawson.TotalFreedomMod.util.Utilities.DEVELOPERS;
+import static me.StevenLawson.TotalFreedomMod.util.Utilities.getPluginFile;
+
+public enum PlayerRank implements Comparator, Comparable
{
- DEVELOPER("a " + ChatColor.DARK_PURPLE + "Developer", ChatColor.DARK_PURPLE + "[Dev]"),
- IMPOSTOR("an " + ChatColor.YELLOW + ChatColor.UNDERLINE + "Impostor", ChatColor.YELLOW.toString() + ChatColor.UNDERLINE + "[IMP]"),
- NON_OP("a " + ChatColor.GREEN + "Non-OP", ChatColor.GREEN.toString()),
- OP("an " + ChatColor.RED + "OP", ChatColor.RED + "[OP]"),
- SUPER("a " + ChatColor.GOLD + "Super Admin", ChatColor.GOLD + "[SA]"),
- TELNET("a " + ChatColor.DARK_GREEN + "Super Telnet Admin", ChatColor.DARK_GREEN + "[STA]"),
- SENIOR("a " + ChatColor.LIGHT_PURPLE + "Senior Admin", ChatColor.LIGHT_PURPLE + "[SrA]"),
- OWNER("the " + ChatColor.BLUE + "Owner", ChatColor.BLUE + "[Owner]"),
- CONSOLE("The " + ChatColor.DARK_PURPLE + "Console", ChatColor.DARK_PURPLE + "[Console]");
+ IMPOSTOR("an " + ChatColor.YELLOW + ChatColor.UNDERLINE + "Impostor", ChatColor.YELLOW.toString() + ChatColor.UNDERLINE + "[IMP]", "Impostors", 0),
+ NON_OP("a " + ChatColor.GREEN + "Non-OP", ChatColor.GREEN.toString(), "Non-Operators", 1),
+ OP("an " + ChatColor.RED + "OP", ChatColor.RED + "[OP]", "Operators" ,2),
+ SUPER("a " + ChatColor.GOLD + "Super Admin", ChatColor.GOLD + "[SA]", "Super Admins", 3),
+ TELNET("a " + ChatColor.DARK_GREEN + "Super Telnet Admin", ChatColor.DARK_GREEN + "[STA]", "Super Telnet Admins", 4),
+ SENIOR("a " + ChatColor.LIGHT_PURPLE + "Senior Admin", ChatColor.LIGHT_PURPLE + "[SrA]", "Senior Admins", 5),
+ DEVELOPER("a " + ChatColor.DARK_PURPLE + "Developer", ChatColor.DARK_PURPLE + "[Dev]", "Developers", 6),
+ OWNER("the " + ChatColor.BLUE + "Owner", ChatColor.BLUE + "[Owner]", "Owners", 7),
+ CONSOLE("The " + ChatColor.DARK_PURPLE + "Console", ChatColor.DARK_PURPLE + "[Console]", 8);
private final String loginMessage;
private final String prefix;
- private PlayerRank(String loginMessage, String prefix)
+ private final String plural;
+ private final int ordinal;
+
+
+ PlayerRank(String loginMessage, String prefix, int ordinal) {
+ this.loginMessage = loginMessage;
+ this.prefix = prefix;
+ this.plural = "";
+ this.ordinal = ordinal;
+ }
+
+ PlayerRank(String loginMessage, String prefix, String plural, int ordinal)
{
this.loginMessage = loginMessage;
this.prefix = prefix;
+ this.plural = plural;
+ this.ordinal = ordinal;
}
public static String getLoginMessage(CommandSender sender)
@@ -122,4 +142,39 @@ public enum PlayerRank
{
return loginMessage;
}
+
+
+ public String getPlural() {
+ return plural;
+ }
+
+ public int getOrdinal() {
+ return ordinal;
+ }
+
+ public List getWithRank() {
+ List inGame = new ArrayList<>();
+
+ for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
+ if(fromSender(onlinePlayer).equals(this)) inGame.add(onlinePlayer);
+ }
+
+ return ImmutableList.copyOf(inGame);
+ }
+
+ public List getInGameUsernames() {
+ List inGame = new ArrayList<>();
+
+ for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
+ if(fromSender(onlinePlayer).equals(this)) inGame.add(onlinePlayer.getName());
+ }
+
+ return ImmutableList.copyOf(inGame);
+
+ }
+
+ @Override
+ public int compare(PlayerRank o1, PlayerRank o2) {
+ return o1.ordinal - o2.ordinal;
+ }
}
diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/util/Utilities.java b/src/main/java/me/StevenLawson/TotalFreedomMod/util/Utilities.java
index b2a0218..07965e1 100644
--- a/src/main/java/me/StevenLawson/TotalFreedomMod/util/Utilities.java
+++ b/src/main/java/me/StevenLawson/TotalFreedomMod/util/Utilities.java
@@ -84,14 +84,24 @@ public class Utilities
throw new AssertionError();
}
- public static void bcastMsg(String message, ChatColor color) {
+ public static void bcastMsg(String message, ChatColor color, boolean transmitToDiscord) {
Log.info(message, true);
for (org.bukkit.entity.Player player : Bukkit.getOnlinePlayers()) {
player.sendMessage((color == null ? "" : color) + message);
}
- DiscordBridge.transmitMessage(message);
+ if(transmitToDiscord) {
+ DiscordBridge.transmitMessage(message);
+ }
+ }
+
+ public static void bcastMsg(String message, ChatColor color) {
+ bcastMsg(message, color, true);
+ }
+
+ public static void bcastMsg(String message, boolean transmitToDiscord) {
+ bcastMsg(message, null, transmitToDiscord);
}
public static void bcastMsg(String message)