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

82 lines
2.4 KiB
Java

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);
}
}