package eu.univento.lobby.listeners; import java.util.ArrayList; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Sound; 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.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import eu.univento.core.api.CustomPlayer; import eu.univento.core.api.Perms.Ranks; /** * lets players show/hide other players * @author joethei * @version 1.0 */ public class PlayerHider implements Listener{ /** * contains all player witch hide other players from their view */ private ArrayList hidden = new ArrayList(); /** * item to hide * @return ItemStack */ private ItemStack getHide() { ItemStack hide = new ItemStack(Material.BLAZE_ROD); ItemMeta hideMeta = hide.getItemMeta(); hideMeta.setDisplayName("§cSpieler verstecken"); hide.setItemMeta(hideMeta); return hide; } /** * item to show * @return ItemStack */ private ItemStack getShow() { ItemStack show = new ItemStack(Material.STICK); ItemMeta showMeta = show.getItemMeta(); showMeta.setDisplayName("§aSpieler anzeigen"); show.setItemMeta(showMeta); return show; } /** * player interacts with item * @param e PlayerInteractEvent * @throws InterruptedException threads closed */ @EventHandler public void onInteract(PlayerInteractEvent e) throws InterruptedException { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName()); if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) { if(e.getItem().getType() == Material.STICK) { hidden.remove(p); for(Player players : Bukkit.getOnlinePlayers()) { p.showPlayer(players); } p.sendMessage("§aDu kannst nun alle Spieler sehen"); p.getInventory().remove(getShow()); p.getInventory().addItem(getHide()); p.playSound(p.getEyeLocation(), Sound.ZOMBIE_WOODBREAK, 10.0F, 1.0F); } if(e.getItem().getType() == Material.BLAZE_ROD) { hidden.add(p); for(Player players : Bukkit.getOnlinePlayers()) { if(!p.isAllowed(Ranks.Supporter)) { p.hidePlayer(players); } } p.sendMessage("§cDu kannst keine Spieler mehr sehen"); p.getInventory().remove(getHide()); p.getInventory().addItem(getShow()); p.playSound(p.getEyeLocation(), Sound.ZOMBIE_WOODBREAK, 10.0F, 1.0F); } } } /** * hides player to other players * @param e PlayerJoinEvent */ @EventHandler public void onJoin(PlayerJoinEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName()); if(!p.isAllowed(Ranks.Supporter)) { for(CustomPlayer players : hidden) { players.hidePlayer(p); } } } /** * removes players from lists * @param e PlayerQuitEvent */ @EventHandler public void onQuit(PlayerQuitEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName()); if(hidden.contains(p)) { hidden.remove(p); } } }