package tv.mineinthebox.essentials.events.players; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Chest; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.DoubleChestInventory; import org.bukkit.inventory.Inventory; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.interfaces.EventTemplate; import tv.mineinthebox.essentials.interfaces.XPlayer; public class VanishEvent extends EventTemplate implements Listener { public VanishEvent(xEssentials pl) { super(pl, "Vanish"); } @EventHandler(priority = EventPriority.LOW) public void onJoin(PlayerJoinEvent e) { //obtaining all global intances and whenever isVanished() triggers from the config we vanish them again for(XPlayer xp : pl.getManagers().getPlayerManager().getPlayers()) { if(xp.isVanished()) { xp.vanish(); } } } @EventHandler public void onTarget(EntityTargetEvent e) { if(e.getTarget() instanceof Player) { Player p = (Player) e.getTarget(); if(pl.getManagers().getPlayerManager().isOnline(p.getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName()); if(xp.isVanished()) { e.setCancelled(true); } } } } @EventHandler public void onTarget(EntityTargetLivingEntityEvent e) { if(e.getTarget() instanceof Player) { Player p = (Player) e.getTarget(); if(pl.getManagers().getPlayerManager().isOnline(p.getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName()); if(xp.isVanished()) { e.setCancelled(true); } } } } @EventHandler public void vanishItems(PlayerPickupItemEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isVanished()) { if(xp.isNoPickUpEnabled()) { e.setCancelled(true); } } } } @EventHandler(priority = EventPriority.LOW) public void vanishInteract(PlayerInteractEvent e) { if(e.isCancelled()) { return; } if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(e.getAction() == Action.RIGHT_CLICK_BLOCK) { if(xp.isPotato()) { e.setCancelled(true); return; } if(xp.isVanished()) { if(xp.isNoPickUpEnabled()) { if(e.getClickedBlock().getType() == Material.CHEST) { Chest chest = (Chest) e.getClickedBlock().getState(); if(chest.getInventory().getSize() == 27) { Inventory inv = Bukkit.createInventory(chest, chest.getInventory().getType()); inv.setContents(chest.getInventory().getContents()); e.getPlayer().openInventory(inv); e.setCancelled(true); sendMessage(e.getPlayer(), ChatColor.GRAY + "you are vanished so you silence accessed the chest"); } else if(chest.getInventory().getSize() == 54) { DoubleChestInventory inv = (DoubleChestInventory) chest.getInventory(); Inventory inv2 = Bukkit.createInventory(inv.getHolder(), 54); inv2.setContents(inv.getContents()); e.getPlayer().openInventory(inv2); e.setCancelled(true); sendMessage(e.getPlayer(), ChatColor.GRAY + "you are vanished so you silence accessed the chest"); } } else if(e.getClickedBlock().getType() == Material.TRAPPED_CHEST) { Chest chest = (Chest) e.getClickedBlock().getState(); if(chest.getInventory().getSize() == 27) { Inventory inv = Bukkit.createInventory(chest, chest.getInventory().getType()); inv.setContents(chest.getInventory().getContents()); e.getPlayer().openInventory(inv); e.setCancelled(true); sendMessage(e.getPlayer(), ChatColor.GRAY + "you are vanished so you silence accessed the chest"); } else if(chest.getInventory().getSize() == 54) { DoubleChestInventory inv = (DoubleChestInventory) chest.getInventory(); Inventory inv2 = Bukkit.createInventory(inv.getHolder(), 54); inv2.setContents(inv.getContents()); e.getPlayer().openInventory(inv2); e.setCancelled(true); sendMessage(e.getPlayer(), ChatColor.GRAY + "you are vanished so you silence accessed the chest"); } } else if(e.getClickedBlock().getType() == Material.TRAP_DOOR) { Location loc = e.getClickedBlock().getRelative(e.getBlockFace().getOppositeFace()).getLocation(); loc.setYaw(e.getPlayer().getLocation().getYaw()); loc.setPitch(e.getPlayer().getLocation().getPitch()); sendMessage(e.getPlayer(), ChatColor.GRAY + "you are vanished so we sillenced teleported you " + e.getBlockFace().getOppositeFace() + " face of the trap door"); e.getPlayer().teleport(loc); e.setCancelled(true); } else if(e.getClickedBlock().getType() == Material.WOODEN_DOOR) { Location loc = e.getClickedBlock().getRelative(e.getBlockFace().getOppositeFace()).getLocation(); loc.setYaw(e.getPlayer().getLocation().getYaw()); loc.setPitch(e.getPlayer().getLocation().getPitch()); sendMessage(e.getPlayer(), ChatColor.GRAY + "you are vanished so we sillenced teleported you " + e.getBlockFace().getOppositeFace() + " face of the wooden door"); e.getPlayer().teleport(loc); e.setCancelled(true); } else if(e.getClickedBlock().getType() == Material.IRON_DOOR_BLOCK) { Location loc = e.getClickedBlock().getRelative(e.getBlockFace().getOppositeFace()).getLocation(); loc.setYaw(e.getPlayer().getLocation().getYaw()); loc.setPitch(e.getPlayer().getLocation().getPitch()); sendMessage(e.getPlayer(), ChatColor.GRAY + "you are vanished so we sillenced teleported you " + e.getBlockFace().getOppositeFace() + " face of the iron door"); e.getPlayer().teleport(loc); e.setCancelled(true); } } } } else { if(e.getAction() == Action.PHYSICAL) { if(xp.isVanished() && xp.isNoPickUpEnabled()) { e.setCancelled(true); } } } } } @EventHandler public void vanishMessageOnJoin(PlayerJoinEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isVanished()) { for(XPlayer a : pl.getManagers().getPlayerManager().getPlayers()) { if(a.isStaff()) { sendMessage(a.getBukkitPlayer(), ChatColor.GREEN + "[vanish]" + ChatColor.GRAY + e.getPlayer().getName() + " has joined silenced!"); } } } } } @EventHandler public void vanishMessageOnQuit(PlayerQuitEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isVanished()) { for(XPlayer a : pl.getManagers().getPlayerManager().getPlayers()) { if(a.isStaff()) { sendMessage(a.getBukkitPlayer(), ChatColor.GREEN + "[vanish]" + ChatColor.GRAY + e.getPlayer().getName() + " has left silenced!"); } } } } } @EventHandler public void VanishGodMode(EntityDamageEvent e) { if(e.getEntity() instanceof Player) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(((Player) e.getEntity()).getName()); if(xp.isVanished()) { e.setCancelled(true); } } } }