297 lines
13 KiB
Java
297 lines
13 KiB
Java
package eu.univento.lobby.listeners;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
import eu.univento.core.Core;
|
|
import eu.univento.core.api.effects.Effects;
|
|
import eu.univento.core.api.languages.Messages;
|
|
import eu.univento.lobby.utils.PetManager;
|
|
import net.minecraft.server.v1_10_R1.EnumParticle;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Effect;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.Sound;
|
|
import org.bukkit.entity.EntityType;
|
|
import org.bukkit.entity.Horse;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.entity.PolarBear;
|
|
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.event.player.PlayerMoveEvent;
|
|
import org.bukkit.util.Vector;
|
|
|
|
import eu.univento.core.api.Config;
|
|
import eu.univento.core.api.player.CustomPlayer;
|
|
import eu.univento.lobby.Lobby;
|
|
import eu.univento.lobby.utils.Inventorys;
|
|
|
|
/**
|
|
* handles teleport menus
|
|
* @author joethei
|
|
* @version 1.0
|
|
*/
|
|
public class MenuEvents implements Listener {
|
|
|
|
private ArrayList<CustomPlayer> heartPlayers = new ArrayList<>();
|
|
private ArrayList<CustomPlayer> lavaPlayers = new ArrayList<>();
|
|
|
|
|
|
/**
|
|
* clicking items
|
|
* @param e InventoryClickEvent
|
|
*/
|
|
@EventHandler
|
|
public void onClick(InventoryClickEvent e) {
|
|
if (e.getWhoClicked() instanceof Player) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getWhoClicked().getName());
|
|
Inventorys invs = new Inventorys(p);
|
|
Messages msgs = new Messages(p);
|
|
if(!e.getSlotType().equals(SlotType.OUTSIDE)) {
|
|
if (e.getInventory().getName().equals(invs.getNavigatorInventory().getName())) {
|
|
if (e.getCurrentItem().getType() == Material.GOLD_BLOCK) {
|
|
teleport(p, "TheBlock");
|
|
p.closeInventory();
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.SNOW_BALL) {
|
|
teleport(p, "FlagAttack");
|
|
p.closeInventory();
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.LEATHER_HELMET) {
|
|
teleport(p, "TrashGames");
|
|
p.closeInventory();
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.MAGMA_CREAM) {
|
|
teleport(p, "Spawn");
|
|
p.closeInventory();
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.EYE_OF_ENDER) {
|
|
teleport(p, "PremiumHub");
|
|
p.closeInventory();
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.LEATHER_BOOTS) {
|
|
teleport(p, "TempleRun");
|
|
p.closeInventory();
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.SLIME_BALL) {
|
|
teleport(p, "HulkFight");
|
|
p.closeInventory();
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.FLOWER_POT_ITEM) {
|
|
p.closeInventory();
|
|
p.connectToServer("build");
|
|
} else {
|
|
e.setCancelled(true);
|
|
}
|
|
}
|
|
if (e.getInventory().getName().equals(invs.getProfileInventory().getName())) {
|
|
if (e.getCurrentItem().getType() == Material.COMPASS) {
|
|
p.closeInventory();
|
|
p.openInventory(invs.getStatsInventory());
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.PUMPKIN) {
|
|
p.closeInventory();
|
|
p.openInventory(invs.getFriendsInventory());
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.NAME_TAG) {
|
|
p.closeInventory();
|
|
p.openInventory(invs.getSettingsInventory());
|
|
} else {
|
|
e.setCancelled(true);
|
|
}
|
|
}
|
|
|
|
if (e.getInventory().getName().equals(invs.getSettingsInventory().getName())) {
|
|
if(e.getSlot() == 0) {
|
|
p.setPartyRequests(!p.hasPartyRequests());
|
|
p.closeInventory();
|
|
p.openInventory(invs.getSettingsInventory());
|
|
}
|
|
}
|
|
|
|
if(e.getInventory().getName().equals(invs.getLanguagesInventory().getName())) {
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eDeutsch")) {
|
|
p.setLanguage("DE");
|
|
p.closeInventory();
|
|
p.sendMessage(msgs.PREFIX() + "§7Sprache auf §eDeutsch §7geändert");
|
|
invs.setMainInventory(true);
|
|
}
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eEnglish")) {
|
|
p.setLanguage("EN");
|
|
p.closeInventory();
|
|
p.sendMessage(msgs.PREFIX() + "§7Language changed to §eenglish");
|
|
invs.setMainInventory(true);
|
|
}
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eitaliano")) {
|
|
p.setLanguage("IT");
|
|
p.closeInventory();
|
|
p.sendMessage(msgs.PREFIX() + "§7Da fehlt doch noch was");
|
|
invs.setMainInventory(true);
|
|
}
|
|
}
|
|
|
|
if (e.getInventory().getName().equals(invs.getFunChestInventory().getName())) {
|
|
e.setCancelled(true);
|
|
if (e.getCurrentItem().getType() == Material.RECORD_3) {
|
|
p.closeInventory();
|
|
p.openInventory(invs.getMusicInventory());
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.ARMOR_STAND) {
|
|
p.closeInventory();
|
|
p.openInventory(invs.getGadgetsInventory());
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.NOTE_BLOCK) {
|
|
p.closeInventory();
|
|
p.openInventory(invs.getParticleInventory());
|
|
}
|
|
if(e.getCurrentItem().getType() == Material.MONSTER_EGG) {
|
|
p.closeInventory();
|
|
p.openInventory(invs.getPetsInventory());
|
|
}
|
|
}
|
|
|
|
if (e.getInventory().getName().equals(invs.getStatsInventory().getName())) {
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
if (e.getInventory().getName().equals(invs.getFriendsInventory().getName())) {
|
|
e.setCancelled(true);
|
|
}
|
|
if (e.getInventory().getName().equals(invs.getMusicInventory().getName())) {
|
|
e.setCancelled(true);
|
|
if (e.getCurrentItem().getType() == Material.RECORD_3) {
|
|
p.closeInventory();
|
|
p.playSound(p.getEyeLocation(), "records.11", 100000000000.0F, 1.0F);
|
|
p.sendActionBar(msgs.Lobby_PLAYING_MUSIC_PREFIX() + ": Milky Way Stars | Janji feat. TR");
|
|
}
|
|
}
|
|
if (e.getInventory().getName().equals(invs.getGadgetsInventory().getName())) {
|
|
e.setCancelled(true);
|
|
if (e.getCurrentItem().getType() == Material.SUGAR) {
|
|
p.closeInventory();
|
|
if (p.getWalkSpeed() == 0.2F) {
|
|
p.setWalkSpeed(0.5F);
|
|
} else {
|
|
p.setWalkSpeed(0.2F);
|
|
}
|
|
}
|
|
if (e.getCurrentItem().getType() == Material.FEATHER) {
|
|
p.closeInventory();
|
|
}
|
|
}
|
|
if (e.getInventory().getName().equals(invs.getParticleInventory().getName())) {
|
|
e.setCancelled(true);
|
|
if (e.getCurrentItem().getType() == Material.RED_ROSE) {
|
|
if (heartPlayers.contains(p)) {
|
|
heartPlayers.remove(p);
|
|
} else {
|
|
heartPlayers.add(p);
|
|
}
|
|
}else if(e.getCurrentItem().getType() == Material.LAVA_BUCKET) {
|
|
if(lavaPlayers.contains(p)) {
|
|
lavaPlayers.remove(p);
|
|
}else{
|
|
lavaPlayers.add(p);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}if (e.getInventory().getName().equals(invs.getPetsInventory().getName())) {
|
|
e.setCancelled(true);
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().contains(msgs.LobbyItems_PETS_PIG())) {
|
|
p.closeInventory();
|
|
PetManager.setPet(p, EntityType.PIG);
|
|
p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_ADD());
|
|
}
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().contains(msgs.LobbyItems_PETS_COW())) {
|
|
p.closeInventory();
|
|
PetManager.setPet(p, EntityType.COW);
|
|
p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_ADD());
|
|
}
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().contains(msgs.LobbyItems_PETS_CHICKEN())) {
|
|
p.closeInventory();
|
|
PetManager.setPet(p, EntityType.CHICKEN);
|
|
p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_ADD());
|
|
}
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().contains(msgs.LobbyItems_PETS_RABBIT())) {
|
|
p.closeInventory();
|
|
PetManager.setPet(p, EntityType.RABBIT);
|
|
p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_ADD());
|
|
}
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().contains(msgs.LobbyItems_PETS_MUSHROM_COW())) {
|
|
p.closeInventory();
|
|
PetManager.setPet(p, EntityType.MUSHROOM_COW);
|
|
p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_ADD());
|
|
}
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().equals("Horse")) {
|
|
p.closeInventory();
|
|
PetManager.setPet(p, EntityType.HORSE);
|
|
Horse horse = (Horse) PetManager.getPet(p);
|
|
horse.setJumpStrength(20.0D);
|
|
horse.setVariant(Horse.Variant.UNDEAD_HORSE);
|
|
horse.setTamed(true);
|
|
p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_ADD());
|
|
}
|
|
if(e.getCurrentItem().getItemMeta().getDisplayName().equals("PolarBear")) {
|
|
p.closeInventory();
|
|
PetManager.setPet(p, EntityType.POLAR_BEAR);
|
|
PolarBear polarBear = (PolarBear) PetManager.getPet(p);
|
|
polarBear.setAI(false);
|
|
p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_ADD());
|
|
}
|
|
if(e.getCurrentItem().getType() == Material.BARRIER) {
|
|
p.closeInventory();
|
|
PetManager.removePet(p);
|
|
p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_REMOVE());
|
|
}
|
|
}else {
|
|
e.setCancelled(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* plays effects on player move
|
|
* @param e PlayerMoveEvent
|
|
*/
|
|
@EventHandler
|
|
public void onMove(PlayerMoveEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
List<Player> players = Core.getOnlinePlayers().stream().map(CustomPlayer::getPLAYER).collect(Collectors.toList());
|
|
|
|
if(heartPlayers.contains(p))
|
|
Effects.playEffect(p.getLocation(), EnumParticle.HEART, 5, 5);
|
|
if(lavaPlayers.contains(p))
|
|
Effects.playEffect(p.getLocation(), EnumParticle.DRIP_LAVA, 5, 5);
|
|
}
|
|
|
|
/**
|
|
* teleports player with effects to location
|
|
* @param p CustomPlayer
|
|
* @param location String
|
|
*/
|
|
private void teleport(CustomPlayer p, String location) {
|
|
Vector v = p.getLocation().getDirection().multiply(0D).setY(2D);
|
|
p.setVelocity(v);
|
|
p.playSound(p.getEyeLocation(), Sound.ENTITY_GENERIC_EXPLODE, 5.0F, 1.0F);
|
|
p.playEffect(p.getEyeLocation(), Effect.CHORUS_FLOWER_DEATH, 20);
|
|
Location loc = Config.readLocation("Lobby.Locs." + location);
|
|
Bukkit.getScheduler().scheduleAsyncDelayedTask(Lobby.getInstance(), () -> {
|
|
for (Player players : Bukkit.getOnlinePlayers()) {
|
|
players.playSound(p.getEyeLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1.0F, 1.0F);
|
|
players.playEffect(p.getEyeLocation(), Effect.DRAGON_BREATH, 20);
|
|
p.teleport(loc);
|
|
players.playSound(p.getEyeLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1.0F, 1.0F);
|
|
players.playEffect(p.getEyeLocation(), Effect.SMOKE, 20);
|
|
}
|
|
|
|
}, 40L);
|
|
}
|
|
|
|
} |