package eu.univento.lobby.listeners; import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.Location; 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.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType.SlotType; import org.bukkit.util.Vector; import eu.univento.core.api.Config; import eu.univento.core.api.CustomPlayer; import eu.univento.lobby.Lobby; /** * handles teleport menus * @author joethei * @version 1.0 */ public class Teleport implements Listener { /** * clicking items * @param e InventoryClickEvent */ @EventHandler public void onClick(InventoryClickEvent e) { if (e.getWhoClicked() instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(e.getWhoClicked().getName()); if(e.getInventory().getName() == "§6Server-Menü") { if(!e.getSlotType().equals(SlotType.OUTSIDE)) { if(e.getCurrentItem().getType() == Material.GOLD_BLOCK) { teleport(p, "TheBlock"); p.closeInventory(); } if(e.getCurrentItem().getType() == Material.SNOW_BALL) { teleport(p, "FlagAttack"); p.closeInventory(); } } } } } /** * teleports player with effects to location * @param p CustomPlayer * @param location String */ @SuppressWarnings("deprecation") private void teleport(CustomPlayer p, String location) { Vector v = p.getLocation().getDirection().multiply(0D).setY(4D); p.setVelocity(v); p.playSound(p.getEyeLocation(), Sound.EXPLODE, 5.0F, 1.0F); p.playEffect(p.getEyeLocation(), Effect.EXPLOSION_HUGE, 20); Location loc = Config.readLocation("Lobby.Locs." + location); Lobby.getOpenInventorys().add(p); Bukkit.getScheduler().scheduleAsyncDelayedTask(Lobby.getInstance(), new Runnable() { @Override public void run() { for (Player players : Bukkit.getOnlinePlayers()) { players.playSound(p.getEyeLocation(), Sound.EXPLODE, 5.0F, 1.0F); players.playEffect(p.getEyeLocation(), Effect.EXPLOSION_HUGE, 20); } p.teleport(loc); for (Player players : Bukkit.getOnlinePlayers()) { players.playSound(p.getEyeLocation(), Sound.EXPLODE, 5.0F, 1.0F); players.playEffect(p.getEyeLocation(), Effect.EXPLOSION_HUGE, 20); } Lobby.getOpenInventorys().remove(p); } }, 80L); } }