Files
NexusLobby/src/main/java/de/nexuslobby/utils/PlayerHider.java
2026-02-05 22:44:21 +01:00

87 lines
3.3 KiB
Java

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<UUID> 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("&", "§");
}
}