TFM-4.3-Reloaded/src/main/java/me/StevenLawson/TotalFreedomMod/manager/VanishManager.java
Business Goose c8d686238c
Add vanish
2022-03-31 03:00:02 +01:00

108 lines
3 KiB
Java

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<Player> 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();
}
}