package de.nexuslobby.utils; import de.nexuslobby.NexusLobby; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class PlayerHider implements Listener { private final List hidden = new ArrayList<>(); @EventHandler public void onJoin(PlayerJoinEvent event) { if (!NexusLobby.getInstance().getConfig().getBoolean("hider.enabled", true)) return; var config = NexusLobby.getInstance().getConfig(); Material material; try { material = Material.valueOf(config.getString("hider.item", "REDSTONE")); } catch (IllegalArgumentException e) { material = Material.REDSTONE; } int slot = config.getInt("hider.slot", 8); ItemStack item = new ItemStack(material); ItemMeta meta = item.getItemMeta(); if (meta != null) { String allMsg = colorize(config.getString("hider.messages.all", "&aAlle Spieler")); meta.setDisplayName(allMsg); item.setItemMeta(meta); } event.getPlayer().getInventory().setItem(slot, item); } @EventHandler public void onInteract(PlayerInteractEvent event) { if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) return; if (event.getItem() == null) return; if (!event.getItem().hasItemMeta()) return; if (event.getItem().getItemMeta() == null) return; if (!event.getItem().getItemMeta().hasDisplayName()) return; Player player = event.getPlayer(); var config = NexusLobby.getInstance().getConfig(); String allMsg = de.nexuslobby.utils.LangManager.get("hider_all"); String noneMsg = de.nexuslobby.utils.LangManager.get("hider_none"); if (event.getItem().getItemMeta().getDisplayName().equals(allMsg)) { // Verstecken hidden.add(player.getUniqueId()); for (Player target : Bukkit.getOnlinePlayers()) player.hidePlayer(NexusLobby.getInstance(), target); updateItem(player, noneMsg); player.sendMessage(noneMsg); } else if (event.getItem().getItemMeta().getDisplayName().equals(noneMsg)) { // Zeigen hidden.remove(player.getUniqueId()); for (Player target : Bukkit.getOnlinePlayers()) player.showPlayer(NexusLobby.getInstance(), target); updateItem(player, allMsg); player.sendMessage(allMsg); } } private void updateItem(Player player, String name) { ItemStack item = player.getInventory().getItemInMainHand(); if (item == null || !item.hasItemMeta()) return; ItemMeta meta = item.getItemMeta(); if (meta == null) return; meta.setDisplayName(name); item.setItemMeta(meta); } private String colorize(String s) { return s == null ? "" : s.replace("&", "ยง"); } }