package me.StevenLawson.TotalFreedomMod.manager; import java.util.ArrayList; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.admin.Admin; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge; import me.StevenLawson.TotalFreedomMod.player.PlayerData; import me.StevenLawson.TotalFreedomMod.player.PlayerRank; import me.StevenLawson.TotalFreedomMod.util.Utilities; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TranslatableComponent; import org.bukkit.Bukkit; import org.bukkit.entity.Player; public class VanishManager { private static final ArrayList vanishedPlayers = new ArrayList<>(); public static void vanishPlayer(Player player) { if (vanishedPlayers.contains(player)) { // Fail silently return; } vanishedPlayers.add(player); } public static void unvanishPlayer(Player player) { if (!vanishedPlayers.contains(player)) { // Fail silently return; } vanishedPlayers.remove(player); } public static boolean isVanished(Player player) { return vanishedPlayers.contains(player); } public static void loadVanishedPlayers(Player player) { for (Player vanishedPlayer : vanishedPlayers) { player.hidePlayer(vanishedPlayer); } } public static void fakeLeave(Player player) { TotalFreedomMod.fuckoffEnabledFor.remove(player); final PlayerData playerdata = PlayerData.getPlayerData(player); playerdata.disarmMP44(); for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { if (!onlinePlayer.equals(player)) { onlinePlayer.hidePlayer(player); } } DiscordBridge.transmitMessage(String.format("**%s left the server**", DiscordBridge.fullySanitizeDiscordMessage(player.getDisplayName()))); TextComponent leftComponent = new TextComponent( String.format("%s left the game", player.getName())); leftComponent.setColor(ChatColor.YELLOW); Bukkit.spigot().broadcast(leftComponent); vanishPlayer(player); } public static void fakeJoin(Player player) { Admin asAdmin = AdminList.getEntry(player); TranslatableComponent joinComponent = new TranslatableComponent( "multiplayer.player.joined"); joinComponent.addWith(player.getName()); joinComponent.setColor(ChatColor.YELLOW); TextComponent loginComponent = Utilities.fromBaseComponents( TextComponent.fromLegacyText( String.format(ChatColor.AQUA + "%s is %s", player.getName(), Utilities.colorize(PlayerRank.getLoginMessage(player))))); Bukkit.spigot().broadcast(loginComponent); Bukkit.spigot().broadcast(joinComponent); DiscordBridge.transmitMessage(String.format("**%s joined the server**", player.getName())); unvanishPlayer(player); for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { onlinePlayer.showPlayer(player); } } public static int getFakeOnlinePlayers() { if (vanishedPlayers.size() == 0) { return Bukkit.getOnlinePlayers().size(); } return Bukkit.getOnlinePlayers().size() - vanishedPlayers.size(); } }