127 lines
3.3 KiB
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);
|
|
}
|
|
|
|
}
|
|
|
|
} |