Lobby/src/eu/univento/lobby/listeners/PlayerHider.java

127 lines
3.3 KiB
Java

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<CustomPlayer> hidden = new ArrayList<CustomPlayer>();
/**
* 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);
}
}
}