diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/DiscordBridge.java b/src/main/java/me/StevenLawson/TotalFreedomMod/bridge/DiscordBridge.java index a561202..d71acbe 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,11 +49,37 @@ 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())); + + 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(!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)); + } + } + + /*// TODO: Make this shitty code better (I was very tired from a blood test whilst writing this) + ArrayList seniorAdmins = new ArrayList<>(); ArrayList developers = new ArrayList<>(); ArrayList impostors = new ArrayList<>(); @@ -117,7 +145,7 @@ public class DiscordBridge { if (impostors.size() > 0) { builder.addField(String.format("Impostors (%s)", impostors.size()), String.join(", ", impostors)); - } + }*/ CHANNEL.sendMessage(builder); } else {