87 lines
3.3 KiB
Java
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("&", "§");
|
|
}
|
|
} |