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

115 lines
3.8 KiB
Java
Raw Normal View History

2018-01-15 12:26:24 +01:00
/*
* Copyright (c) 2018 univento.eu - All rights reserved
* You are not allowed to use, distribute or modify this code
*/
2016-07-09 13:17:02 +02:00
package eu.univento.lobby.listeners;
2017-06-04 13:44:31 +02:00
import eu.univento.commons.player.rank.Rank;
2016-11-24 19:55:51 +01:00
import eu.univento.core.api.player.CustomPlayer;
2018-01-15 12:26:24 +01:00
import lombok.Getter;
2016-07-09 13:17:02 +02:00
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.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
2016-11-24 19:55:51 +01:00
import java.util.ArrayList;
2016-07-09 13:17:02 +02:00
/**
* lets players show/hide other players
* @author joethei
* @version 1.0
*/
public class PlayerHider implements Listener{
2018-01-15 12:26:24 +01:00
@Getter private static ArrayList<CustomPlayer> hidden = new ArrayList<>();
2016-07-09 13:17:02 +02:00
2018-01-15 12:26:24 +01:00
@Getter private static ArrayList<CustomPlayer> silentlobby = new ArrayList<>();
2016-11-24 19:55:51 +01:00
2016-07-09 13:17:02 +02:00
private ItemStack getHide(CustomPlayer p) {
2017-06-04 13:44:31 +02:00
//Messages msgs = new Messages(p);
2016-07-09 13:17:02 +02:00
ItemStack hide = new ItemStack(Material.GLOWSTONE_DUST);
ItemMeta hideMeta = hide.getItemMeta();
2017-06-04 13:44:31 +02:00
//hideMeta.setDisplayName(msgs.LobbyItems_PLAYER_HIDER_ON());
2016-07-09 13:17:02 +02:00
hide.setItemMeta(hideMeta);
return hide;
}
2016-11-24 19:55:51 +01:00
2016-07-09 13:17:02 +02:00
private ItemStack getShow(CustomPlayer p) {
2017-06-04 13:44:31 +02:00
//Messages msgs = new Messages(p);
2016-07-09 13:17:02 +02:00
ItemStack show = new ItemStack(Material.SUGAR);
ItemMeta showMeta = show.getItemMeta();
2017-06-04 13:44:31 +02:00
//showMeta.setDisplayName(msgs.LobbyItems_PLAYER_HIDER_OFF());
2016-07-09 13:17:02 +02:00
show.setItemMeta(showMeta);
return show;
}
2016-11-24 19:55:51 +01:00
2016-07-09 13:17:02 +02:00
@EventHandler
public void onInteract(PlayerInteractEvent e) throws InterruptedException {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName());
2017-06-04 13:44:31 +02:00
//Messages msgs = new Messages(p);
2016-07-09 13:17:02 +02:00
if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
ItemStack item = p.getItemInHand();
if(item.getType() == Material.SUGAR) {
hidden.remove(p);
Bukkit.getOnlinePlayers().stream().filter(players -> !silentlobby.contains(players)).forEach(p::showPlayer);
2017-06-04 13:44:31 +02:00
//p.sendMessage(msgs.PREFIX() + msgs.Lobby_PLAYERS_SHOW());
2016-07-09 13:17:02 +02:00
p.getInventory().remove(getShow(p));
p.getInventory().addItem(getHide(p));
p.playSound(p.getEyeLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1.0F, 1.0F);
}
if(item.getType() == Material.GLOWSTONE_DUST) {
hidden.add(p);
for(Player players : Bukkit.getOnlinePlayers()) {
CustomPlayer player = CustomPlayer.getPlayer(players.getName());
2016-11-24 19:55:51 +01:00
if(!player.getDatabasePlayer().isAllowed(Rank.Supporter)) {
2016-07-09 13:17:02 +02:00
p.hidePlayer(players);
}
}
2017-06-04 13:44:31 +02:00
//p.sendMessage(msgs.PREFIX() + msgs.Lobby_PLAYERS_HIDE());
2016-07-09 13:17:02 +02:00
p.getInventory().remove(getHide(p));
p.getInventory().addItem(getShow(p));
p.playSound(p.getEyeLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1.0F, 1.0F);
}
if(item.getType() == Material.TNT) {
2017-06-04 13:44:31 +02:00
if(p.getDatabasePlayer().isAllowed(Rank.VIP)) {
2016-07-09 13:17:02 +02:00
if(silentlobby.contains(p)) {
silentlobby.remove(p);
p.getInventory().clear();
2018-01-15 12:26:24 +01:00
2017-06-04 13:44:31 +02:00
//p.sendMessage(msgs.PREFIX() + msgs.Lobby_SILENT_LOBBY_OFF());
2016-07-09 13:17:02 +02:00
for(Player players : Bukkit.getOnlinePlayers()) {
p.showPlayer(players);
if(!hidden.contains(players)) {
players.showPlayer(p);
}
}
}else {
silentlobby.add(p);
2017-06-04 13:44:31 +02:00
//p.sendMessage(msgs.PREFIX() + msgs.Lobby_SILENT_LOBBY_ON());
2016-07-09 13:17:02 +02:00
for(Player players : Bukkit.getOnlinePlayers()) {
p.hidePlayer(players);
players.hidePlayer(p);
}
}
}
}
}
}
}