package cx.sfy.TheBridge.listeners; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Sign; import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryType.SlotType; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; import cx.sfy.TheBridge.Main; import cx.sfy.TheBridge.cosmetics.Cage; import cx.sfy.TheBridge.database.PlayerStat; import cx.sfy.TheBridge.game.GameDuo; import cx.sfy.TheBridge.game.GameDuo.State; import cx.sfy.TheBridge.game.GameFour; import cx.sfy.TheBridge.game.GameFour.FState; import cx.sfy.TheBridge.game.InventoryData; import cx.sfy.TheBridge.signs.GameFourSign; import cx.sfy.TheBridge.signs.GameNormalSign; import cx.sfy.TheBridge.utils.ItemBuilder; import cx.sfy.TheBridge.utils.Tagged; import cx.sfy.TheBridge.utils.Utils; @SuppressWarnings("deprecation") public class PlayerListener implements Listener { public static HashMap page = new HashMap<>(); private final ArrayList bow = new ArrayList<>(); private final ArrayList leaving = new ArrayList<>(); Main plugin; public PlayerListener(Main plugin) { this.plugin = plugin; } private BukkitTask task; public void runTask(Player p, Entity e) { task = Bukkit.getServer().getScheduler().runTaskTimerAsynchronously(this.plugin, () -> { Location loc = e.getLocation(); if (e.isOnGround()) { task.cancel(); } createTrail(loc, plugin.getArm().getArrowByName(PlayerStat.getPlayerStat(p).getArrow())); }, 0, 1); } @EventHandler public void onShoot(ProjectileLaunchEvent e) { if (e.getEntity().getShooter() instanceof Player) { if (e.getEntity() instanceof Arrow) { Player p = (Player) e.getEntity().getShooter(); if (plugin.getGm().getGameByPlayer(p) != null || plugin.getGm().getGameFourByPlayer(p) != null) runTask(p, e.getEntity()); } } } @EventHandler public void onJoin(PlayerJoinEvent e) { final Player p = e.getPlayer(); new PlayerStat(p); givePlayerItems(p); Utils.setPlayerExperience(p, PlayerStat.getPlayerStat(p).getXp()); } public void createTrail(Location loc, cx.sfy.TheBridge.cosmetics.Arrow arrow) { plugin.getNms().sendParticle(loc, arrow); } @EventHandler public void onCommand(PlayerCommandPreprocessEvent e) { if (plugin.getGm().getGameByPlayer(e.getPlayer()) != null || plugin.getGm().getGameFourByPlayer(e.getPlayer()) != null) { final List cmds = plugin.getConfig().getStringList("commands.list"); if (e.getMessage().contains("/bridges")) return; if (plugin.getConfig().getBoolean("commands.whitelist") == true) { if (!cmds.contains(e.getMessage())) e.setCancelled(true); } else if (plugin.getConfig().getBoolean("commands.whitelist") == false) if (cmds.contains(e.getMessage())) e.setCancelled(true); } } public void givePlayerItems(Player p) { final ItemStack select = ItemBuilder.item(Material.valueOf(plugin.getConfig().getString("items.menu.material")), plugin.getConfig().getInt("items.menu.amount"), (short) plugin.getConfig().getInt("items.menu.data"), plugin.getConfig().getString("items.menu.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.menu.loreItem").replaceAll("&", "§")); final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.random.material")), plugin.getConfig().getInt("items.random.amount"), (short) plugin.getConfig().getInt("items.random.data"), plugin.getConfig().getString("items.random.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.random.loreItem").replaceAll("&", "§")); final ItemStack hotbar = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.hotbar.material")), plugin.getConfig().getInt("items.hotbar.amount"), (short) plugin.getConfig().getInt("items.hotbar.data"), plugin.getConfig().getString("items.hotbar.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.hotbar.loreItem").replaceAll("&", "§")); final ItemStack shop = ItemBuilder.item(Material.valueOf(plugin.getConfig().getString("items.shop.material")), plugin.getConfig().getInt("items.shop.amount"), (short) plugin.getConfig().getInt("items.shop.data"), plugin.getConfig().getString("items.shop.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.shop.loreItem").replaceAll("&", "§")); final ItemStack lobby = ItemBuilder.item(Material.valueOf(plugin.getConfig().getString("items.lobby.material")), plugin.getConfig().getInt("items.lobby.amount"), (short) plugin.getConfig().getInt("items.lobby.data"), plugin.getConfig().getString("items.lobby.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.lobby.loreItem").replaceAll("&", "§")); final ItemStack archievements = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.archievements.material")), plugin.getConfig().getInt("items.archievements.amount"), (short) plugin.getConfig().getInt("items.archievements.data"), plugin.getConfig().getString("items.archievements.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.archievements.loreItem").replaceAll("&", "§")); if (plugin.getConfig().getBoolean("items.menu.enabled")) p.getInventory().setItem(plugin.getConfig().getInt("items.menu.slot"), select); if (plugin.getConfig().getBoolean("items.random.enabled")) p.getInventory().setItem(plugin.getConfig().getInt("items.random.slot"), random); if (plugin.getConfig().getBoolean("items.hotbar.enabled")) p.getInventory().setItem(plugin.getConfig().getInt("items.hotbar.slot"), hotbar); if (plugin.getConfig().getBoolean("items.shop.enabled")) p.getInventory().setItem(plugin.getConfig().getInt("items.shop.slot"), shop); if (plugin.getConfig().getBoolean("items.lobby.enabled")) p.getInventory().setItem(plugin.getConfig().getInt("items.lobby.slot"), lobby); if (plugin.getConfig().getBoolean("items.archievements.enabled")) p.getInventory().setItem(plugin.getConfig().getInt("items.archievements.slot"), archievements); } @EventHandler public void onDrop(PlayerDropItemEvent e) { final Player p = e.getPlayer(); final Item item = e.getItemDrop(); if (p.getOpenInventory() != null) if (p.getOpenInventory().getTitle().equals(plugin.getLang().get("menus.hotbar.title"))) { e.getItemDrop().remove(); e.setCancelled(true); } if (plugin.getGm().getGameFourByPlayer(p) != null) { e.setCancelled(true); return; } if (plugin.getGm().getGameByPlayer(p) != null) { e.setCancelled(true); return; } if (plugin.getConfig().getBoolean("items.menu.enabled")) { final ItemStack select = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.menu.material")), plugin.getConfig().getInt("items.menu.amount"), (short) plugin.getConfig().getInt("items.menu.data"), plugin.getConfig().getString("items.menu.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.menu.loreItem").replaceAll("&", "§")); if (item.getItemStack().equals(select)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.random.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.random.material")), plugin.getConfig().getInt("items.random.amount"), (short) plugin.getConfig().getInt("items.random.data"), plugin.getConfig().getString("items.random.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.random.loreItem").replaceAll("&", "§")); if (item.getItemStack().equals(random)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.hotbar.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.hotbar.material")), plugin.getConfig().getInt("items.hotbar.amount"), (short) plugin.getConfig().getInt("items.hotbar.data"), plugin.getConfig().getString("items.hotbar.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.hotbar.loreItem").replaceAll("&", "§")); if (item.getItemStack().equals(random)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.shop.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.shop.material")), plugin.getConfig().getInt("items.shop.amount"), (short) plugin.getConfig().getInt("items.shop.data"), plugin.getConfig().getString("items.shop.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.shop.loreItem").replaceAll("&", "§")); if (item.getItemStack().equals(random)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.lobby.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.lobby.material")), plugin.getConfig().getInt("items.lobby.amount"), (short) plugin.getConfig().getInt("items.lobby.data"), plugin.getConfig().getString("items.lobby.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.lobby.loreItem").replaceAll("&", "§")); if (item.getItemStack().equals(random)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.archievements.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.archievements.material")), plugin.getConfig().getInt("items.archievements.amount"), (short) plugin.getConfig().getInt("items.archievements.data"), plugin.getConfig().getString("items.archievements.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.archievements.loreItem").replaceAll("&", "§")); if (item.getItemStack().equals(random)) e.setCancelled(true); } } @EventHandler public void onInteract(PlayerInteractEvent e) { final Player p = e.getPlayer(); if (plugin.getGm().getGameByPlayer(p) != null) { if (p.getItemInHand() == null || p.getItemInHand().getType() == Material.AIR) return; final ItemStack item = p.getItemInHand(); if (!item.hasItemMeta()) return; if (item.getType().equals(Material.PAPER) && item.getItemMeta().getDisplayName().equals(plugin.getLang().get("items.teams.nameItem"))) { e.setCancelled(true); plugin.getTem().openTeamNormalMenu(p); } } if (plugin.getGm().getGameFourByPlayer(p) != null) { if (p.getItemInHand() == null || p.getItemInHand().getType() == Material.AIR) return; final ItemStack item = p.getItemInHand(); if (item.getType().equals(Material.BOW)) if (bow.contains(p)) { p.sendMessage(plugin.getLang().get("messages.noShoot")); e.setCancelled(true); } if (!item.hasItemMeta()) return; if (item.getType().equals(Material.COMPASS) && item.getItemMeta().getDisplayName().equals(plugin.getLang().get("items.spectate.nameItem"))) { e.setCancelled(true); plugin.getSpm().openSpectPlayerMenu(p); } if (item.getType().equals(Material.PAPER) && item.getItemMeta().getDisplayName().equals(plugin.getLang().get("items.teams.nameItem"))) { e.setCancelled(true); plugin.getTem().openTeamFourMenu(p); } if (item.getType().equals(Material.REDSTONE_COMPARATOR) || item.getType().equals(Material.REDSTONE_COMPARATOR_OFF) && item.getItemMeta().getDisplayName() .equals(plugin.getLang().get("items.config.nameItem"))) { e.setCancelled(true); plugin.getSom().openOptionsMenu(p); } if (item.getType().equals(Material.BED) && item.getItemMeta().getDisplayName().equals(plugin.getLang().get("items.leave.nameItem"))) { e.setCancelled(true); p.chat("/bridges leave"); p.sendMessage(plugin.getLang().get("messages.leftGame")); p.teleport(Main.get().getMainLobby()); if (!leaving.contains(p)) { leaving.add(p); new BukkitRunnable() { @Override public void run() { leaving.remove(p); } }.runTaskLater(plugin, 20); } } } if (plugin.getGm().getGameByPlayer(p) != null) { final ItemStack item = p.getItemInHand(); if (item.getType().equals(Material.BOW)) if (bow.contains(p)) { p.sendMessage(plugin.getLang().get("messages.noShoot")); e.setCancelled(true); } if (!item.hasItemMeta()) return; if (item.getType().equals(Material.BED) && item.getItemMeta().getDisplayName().equals(plugin.getLang().get("items.leave.nameItem"))) { e.setCancelled(true); p.chat("/bridges leave"); p.sendMessage(plugin.getLang().get("messages.leftGame")); p.teleport(Main.get().getMainLobby()); if (!leaving.contains(p)) { leaving.add(p); new BukkitRunnable() { @Override public void run() { leaving.remove(p); } }.runTaskLater(plugin, 20); } } } if (plugin.getGm().getGameFourByPlayer(p) == null && plugin.getGm().getGameByPlayer(p) == null) { if (p.getItemInHand() != null && p.getItemInHand().getType() != Material.AIR) { final ItemStack item = p.getItemInHand(); if (item.hasItemMeta()) { if (plugin.getConfig().getBoolean("items.menu.enabled")) { final ItemStack select = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.menu.material")), plugin.getConfig().getInt("items.menu.amount"), (short) plugin.getConfig().getInt("items.menu.data"), plugin.getConfig().getString("items.menu.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.menu.loreItem").replaceAll("&", "§")); if (item.equals(select)) plugin.getGmu().openSelectTypeMenu(p); } if (plugin.getConfig().getBoolean("items.random.enabled")) if (!leaving.contains(p)) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.random.material")), plugin.getConfig().getInt("items.random.amount"), (short) plugin.getConfig().getInt("items.random.data"), plugin.getConfig().getString("items.random.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.random.loreItem").replaceAll("&", "§")); if (item.equals(random)) { GameDuo g = null; int alto = 0; for (final GameDuo game : plugin.getGm().getGames()) { if (game.isState(State.FINISH) || game.isState(State.INGAME) || game.isState(State.RESTARTING) || game.isState(State.PREGAME)) continue; if (game.getPlayers() == game.getMax()) continue; if (game.getPlayers() <= alto) { g = game; alto = game.getPlayers(); } } if (g != null) plugin.getGm().addPlayerGame(p, g); else p.sendMessage(plugin.getLang().get("messages.noGames")); } } if (plugin.getConfig().getBoolean("items.hotbar.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.hotbar.material")), plugin.getConfig().getInt("items.hotbar.amount"), (short) plugin.getConfig().getInt("items.hotbar.data"), plugin.getConfig().getString("items.hotbar.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.hotbar.loreItem").replaceAll("&", "§")); if (item.equals(random)) plugin.getHotbar().createHotbarMenu(p); } if (plugin.getConfig().getBoolean("items.shop.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.shop.material")), plugin.getConfig().getInt("items.shop.amount"), (short) plugin.getConfig().getInt("items.shop.data"), plugin.getConfig().getString("items.shop.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.shop.loreItem").replaceAll("&", "§")); if (item.equals(random)) plugin.getShop().openShopMenu(p); } if (plugin.getConfig().getBoolean("items.archievements.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.archievements.material")), plugin.getConfig().getInt("items.archievements.amount"), (short) plugin.getConfig().getInt("items.archievements.data"), plugin.getConfig().getString("items.archievements.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.archievements.loreItem").replaceAll("&", "§")); if (item.equals(random)) plugin.getArchimenu().createArchievementsMenu(p, 1); } if (plugin.getConfig().getBoolean("items.lobby.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.lobby.material")), plugin.getConfig().getInt("items.lobby.amount"), (short) plugin.getConfig().getInt("items.lobby.data"), plugin.getConfig().getString("items.lobby.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.lobby.loreItem").replaceAll("&", "§")); if (item.equals(random)) { String broadcastMessage = "Yolo"; ByteArrayOutputStream bo = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(bo); byte[] data = broadcastMessage.getBytes(); try { out.writeUTF("Forward"); out.writeUTF(plugin.getConfig().getString("items.lobby.server")); out.writeShort(data.length); out.write(data); p.sendPluginMessage(Main.get(), "BungeeCord", bo.toByteArray()); } catch (Exception ex) { ex.printStackTrace(); plugin.getServer().getConsoleSender() .sendMessage(ChatColor.RED + "Server " + ChatColor.YELLOW + plugin.getConfig().getString("items.lobby.server") + ChatColor.RED + " not found... Please check you config!"); } } } } } if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK) || e.getAction().equals(Action.LEFT_CLICK_BLOCK)) if (e.getClickedBlock().getState() instanceof Sign) { if (p.hasPermission("bridges.admin") && p.isSneaking()) return; if (leaving.contains(p)) return; if (plugin.getSim().getSigns().keySet().contains(e.getClickedBlock().getLocation())) { final GameNormalSign sign = plugin.getSim().getSigns().get(e.getClickedBlock().getLocation()); final GameDuo game = plugin.getGm().getGameByName(sign.getGame()); if (game.isState(State.WAITING) || game.isState(State.STARTING)) { if (game.getPlayers() >= game.getMax()) { p.sendMessage(plugin.getLang().get("messages.gameFull")); return; } plugin.getGm().addPlayerGame(p, game); return; } else p.sendMessage(plugin.getLang().get("messages.gameAlreadyStart")); } else if (plugin.getSim().getFourSigns().keySet().contains(e.getClickedBlock().getLocation())) { final GameFourSign sign = plugin.getSim().getFourSigns().get(e.getClickedBlock().getLocation()); final GameFour game = plugin.getGm().getGameFourByName(sign.getGame()); if (game.isState(FState.WAITING) || game.isState(FState.STARTING)) { if (game.getPlayers().size() >= game.getMax()) { p.sendMessage(plugin.getLang().get("messages.gameFull")); return; } plugin.getGm().addPlayerGameFour(p, game); return; } else p.sendMessage(plugin.getLang().get("messages.gameAlreadyStart")); } } } } @EventHandler public void onMove(PlayerMoveEvent e) { boolean wait = false; final Player p = e.getPlayer(); if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); if (game.isState(State.WAITING) || game.isState(State.STARTING) || game.isState(State.FINISH)) if (p.getLocation().getY() < 30) p.teleport(game.getLobby()); if (game.isState(State.INGAME)) { if (!game.getTeamPlayer(p).getColor().equals(ChatColor.RED) && game.getTeams().get(ChatColor.RED) .getPortal().contains(p.getLocation().getBlock().getLocation()) && wait == false) { game.celebrateGoal(game.getTeamPlayer(p), p); wait = true; return; } if (!game.getTeamPlayer(p).getColor().equals(ChatColor.BLUE) && game.getTeams().get(ChatColor.BLUE) .getPortal().contains(p.getLocation().getBlock().getLocation()) && wait == false) { game.celebrateGoal(game.getTeamPlayer(p), p); wait = true; return; } if (p.getLocation().getY() < 30) respawn(p, Tagged.getTag(p)); wait = false; } return; } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); if (game.isState(FState.WAITING) || game.isState(FState.STARTING) || game.isState(FState.FINISH)) if (p.getLocation().getY() < 30) p.teleport(game.getLobby()); if (game.isState(FState.INGAME)) { if (!game.getSpects().contains(p)) { if (!game.getTeams().get(ChatColor.RED).getDeath() && !game.getTeamPlayer(p).getColor().equals(ChatColor.RED) && game.getTeams().get(ChatColor.RED).getPortal() .contains(p.getLocation().getBlock().getLocation())) { game.celebrateGoal(game.getTeamPlayer(p), game.getTeams().get(ChatColor.RED), p); return; } if (!game.getTeams().get(ChatColor.BLUE).getDeath() && !game.getTeamPlayer(p).getColor().equals(ChatColor.BLUE) && game.getTeams().get(ChatColor.BLUE).getPortal() .contains(p.getLocation().getBlock().getLocation())) { game.celebrateGoal(game.getTeamPlayer(p), game.getTeams().get(ChatColor.BLUE), p); return; } if (!game.getTeams().get(ChatColor.YELLOW).getDeath() && !game.getTeamPlayer(p).getColor().equals(ChatColor.YELLOW) && game.getTeams().get(ChatColor.YELLOW).getPortal() .contains(p.getLocation().getBlock().getLocation())) { game.celebrateGoal(game.getTeamPlayer(p), game.getTeams().get(ChatColor.YELLOW), p); return; } if (!game.getTeams().get(ChatColor.GREEN).getDeath() && !game.getTeamPlayer(p).getColor().equals(ChatColor.GREEN) && game.getTeams().get(ChatColor.GREEN).getPortal() .contains(p.getLocation().getBlock().getLocation())) { game.celebrateGoal(game.getTeamPlayer(p), game.getTeams().get(ChatColor.GREEN), p); return; } } if (p.getLocation().getY() < 30) { if (game.getSpects().contains(p)) { p.teleport(game.getLobby()); return; } respawnFour(p, Tagged.getTag(p)); } } return; } } @EventHandler public void onFood(FoodLevelChangeEvent e) { if (e.getEntity() instanceof Player) { final Player p = (Player) e.getEntity(); if (plugin.getGm().getGameByPlayer(p) != null) { e.setCancelled(true); return; } if (plugin.getGm().getGameFourByPlayer(p) != null) { e.setCancelled(true); return; } } } @EventHandler public void onChat(AsyncPlayerChatEvent e) { final Player p = e.getPlayer(); if (!plugin.getConfig().getBoolean("chat.enabled")) return; if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); e.setCancelled(true); if (game.isState(State.WAITING) || game.isState(State.STARTING) || game.isState(State.FINISH) || game.isState(State.RESTARTING)) { for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getConfig().getString("chat.lobby").replaceAll("&", "§") .replaceAll("", p.getName()).replaceAll("", e.getMessage())); return; } if (game.isState(State.INGAME) || game.isState(State.PREGAME)) { if (e.getMessage().startsWith("!")) { final String msg = e.getMessage(); for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getConfig().getString("chat.global").replaceAll("&", "§") .replaceAll("", game.getTeamPlayer(p).getTeamName()) .replaceAll("", game.getTeamPlayer(p).getColor() + "") .replaceAll("", p.getName()).replaceAll("", msg.replaceFirst("!", ""))); } else for (final Player on : game.getTeamPlayer(p).getTeamPlayers()) on.sendMessage(plugin.getConfig().getString("chat.ingame").replaceAll("&", "§") .replaceAll("", game.getTeamPlayer(p).getTeamName()) .replaceAll("", game.getTeamPlayer(p).getColor() + "") .replaceAll("", p.getName()).replaceAll("", e.getMessage())); return; } } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); e.setCancelled(true); if (game.isState(FState.WAITING) || game.isState(FState.STARTING) || game.isState(FState.FINISH) || game.isState(FState.RESTARTING)) { for (final Player on : game.getPlayers()) on.sendMessage(plugin.getConfig().getString("chat.lobby").replaceAll("&", "§") .replaceAll("", p.getName()).replaceAll("", e.getMessage())); return; } if (game.isState(FState.INGAME) || game.isState(FState.PREGAME)) { if (e.getMessage().startsWith("!")) { final String msg = e.getMessage(); for (final Player on : game.getPlayers()) on.sendMessage(plugin.getConfig().getString("chat.global").replaceAll("&", "§") .replaceAll("", game.getTeamPlayer(p).getTeamName()) .replaceAll("", game.getTeamPlayer(p).getColor() + "") .replaceAll("", p.getName()).replaceAll("", msg.replaceFirst("!", ""))); } else for (final Player on : game.getTeamPlayer(p).getTeamPlayers()) on.sendMessage(plugin.getConfig().getString("chat.ingame").replaceAll("&", "§") .replaceAll("", game.getTeamPlayer(p).getTeamName()) .replaceAll("", game.getTeamPlayer(p).getColor() + "") .replaceAll("", p.getName()).replaceAll("", e.getMessage())); return; } } } @EventHandler public void onDamage(EntityDamageEvent e) { if (e.getEntity() instanceof Player) { final Player p = (Player) e.getEntity(); if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); if (e.getCause().equals(DamageCause.FALL)) { e.setCancelled(true); return; } if (game.isState(State.WAITING) || game.isState(State.STARTING) || game.isState(State.PREGAME) || game.isState(State.FINISH)) e.setCancelled(true); return; } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); if (e.getCause().equals(DamageCause.FALL)) { e.setCancelled(true); return; } if (game.isState(FState.WAITING) || game.isState(FState.STARTING) || game.isState(FState.PREGAME) || game.isState(FState.FINISH)) e.setCancelled(true); return; } } } @EventHandler public void onClose(InventoryCloseEvent e) { final Player p = (Player) e.getPlayer(); InventoryView inv = e.getView(); if (inv.getTitle().equals(plugin.getLang().get("menus.type.title"))) page.remove(p); if (inv.getTitle().equals(plugin.getLang().get("menus.hotbar.title"))) { InventoryData.getInventoryData(p).restore(); InventoryData.remove(p); } } @EventHandler public void onMenu(InventoryClickEvent e) { final Player p = (Player) e.getWhoClicked(); final InventoryView inv = e.getView(); if (inv.getTitle() == null) return; if (plugin.getGm().getGameFourByPlayer(p) != null || plugin.getGm().getGameByPlayer(p) != null) { if (e.getSlotType().equals(SlotType.ARMOR)) e.setCancelled(true); if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return; if (e.getCurrentItem().getType().equals(Material.BED) && e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("items.leave.nameItem"))) e.setCancelled(true); } if (plugin.getGm().getGameFourByPlayer(p) == null && plugin.getGm().getGameByPlayer(p) == null) { if (p.getOpenInventory() != null) if (p.getOpenInventory().getTitle().equals(plugin.getLang().get("menus.hotbar.title"))) { if (p.getOpenInventory() != null && e.getClickedInventory() != null && !e.getClickedInventory().equals(p.getOpenInventory().getTopInventory())) e.setCancelled(true); if (p.getItemOnCursor() != null && p.getItemOnCursor().getType() != Material.AIR) { if (e.getClick().equals(ClickType.SHIFT_RIGHT) || e.getClick().equals(ClickType.SHIFT_LEFT) || e.getSlotType().equals(SlotType.QUICKBAR) || e.getSlotType().equals(SlotType.OUTSIDE)) e.setCancelled(true); if (!e.getSlotType().equals(SlotType.OUTSIDE)) { if (!e.getClickedInventory().getTitle().equals(plugin.getLang().get("menus.hotbar.title"))) e.setCancelled(true); if (e.getClickedInventory().getTitle().equals(plugin.getLang().get("menus.hotbar.title"))) if (e.getSlot() == 53 || e.getSlot() == 52 || e.getSlot() == 51 || e.getSlot() == 48 || e.getSlot() == 47 || e.getSlot() == 46 || e.getSlot() == 45) e.setCancelled(true); } } } if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return; final ItemStack item = e.getCurrentItem(); if (item.hasItemMeta()) { if (plugin.getConfig().getBoolean("items.menu.enabled")) { final ItemStack select = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.menu.material")), plugin.getConfig().getInt("items.menu.amount"), (short) plugin.getConfig().getInt("items.menu.data"), plugin.getConfig().getString("items.menu.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.menu.loreItem").replaceAll("&", "§")); if (item.equals(select)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.random.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.random.material")), plugin.getConfig().getInt("items.random.amount"), (short) plugin.getConfig().getInt("items.random.data"), plugin.getConfig().getString("items.random.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.random.loreItem").replaceAll("&", "§")); if (item.equals(random)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.hotbar.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.hotbar.material")), plugin.getConfig().getInt("items.hotbar.amount"), (short) plugin.getConfig().getInt("items.hotbar.data"), plugin.getConfig().getString("items.hotbar.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.hotbar.loreItem").replaceAll("&", "§")); if (item.equals(random)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.shop.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.shop.material")), plugin.getConfig().getInt("items.shop.amount"), (short) plugin.getConfig().getInt("items.shop.data"), plugin.getConfig().getString("items.shop.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.shop.loreItem").replaceAll("&", "§")); if (item.equals(random)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.lobby.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.lobby.material")), plugin.getConfig().getInt("items.lobby.amount"), (short) plugin.getConfig().getInt("items.lobby.data"), plugin.getConfig().getString("items.lobby.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.lobby.loreItem").replaceAll("&", "§")); if (item.equals(random)) e.setCancelled(true); } if (plugin.getConfig().getBoolean("items.archievements.enabled")) { final ItemStack random = ItemBuilder.item( Material.valueOf(plugin.getConfig().getString("items.archievements.material")), plugin.getConfig().getInt("items.archievements.amount"), (short) plugin.getConfig().getInt("items.archievements.data"), plugin.getConfig().getString("items.archievements.nameItem").replaceAll("&", "§"), plugin.getConfig().getString("items.archievements.loreItem").replaceAll("&", "§")); if (item.equals(random)) e.setCancelled(true); } } } if (inv.getTitle().equals(plugin.getAchievement().get("title").replaceAll("", p.getName()))) { e.setCancelled(true); if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return; if (e.getCurrentItem().getItemMeta().getDisplayName().equals(plugin.getAchievement().get("close.name"))) { p.getOpenInventory().close(); e.setCancelled(true); } if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getAchievement().get("next").replaceAll("", "→"))) { if (!page.containsKey(p)) page.put(p, 2); else page.put(p, page.get(p) + 1); plugin.getArchimenu().createArchievementsMenu(p, page.get(p)); e.setCancelled(true); } if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getAchievement().get("back").replaceAll("", "§?"))) { page.put(p, page.get(p) - 1); plugin.getArchimenu().createArchievementsMenu(p, page.get(p)); e.setCancelled(true); } } if (inv.getTitle().equals(plugin.getLang().get("shop.title"))) { e.setCancelled(true); if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return; if (e.getCurrentItem().getItemMeta().getDisplayName().equals(plugin.getLang().get("shop.glass.nameItem"))) plugin.getGlam().createGlassMenu(p); if (e.getCurrentItem().getItemMeta().getDisplayName().equals(plugin.getLang().get("shop.arrow.nameItem"))) plugin.getAmu().createArrowMenu(p); if (e.getCurrentItem().getItemMeta().getDisplayName().equals(plugin.getLang().get("shop.close.nameItem"))) p.getOpenInventory().close(); } if (inv.getTitle().equals(plugin.getCages().get("title"))) { e.setCancelled(true); if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return; for (final Cage cage : plugin.getCm().getCages().values()) if (cage.getSlot() == e.getSlot()) if (!p.hasPermission(cage.getPermission())) { if (!cage.isBuy()) p.sendMessage(plugin.getLang().get("messages.noBuy")); else if (cage.getPrice() > PlayerStat.getPlayerStat(p).getCoins()) p.sendMessage(plugin.getLang().get("messages.noMoney")); else if (cage.isBuy() && cage.getPrice() <= PlayerStat.getPlayerStat(p).getCoins()) { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), plugin.getConfig().getString("permFormat").replaceAll("", p.getName()) .replaceAll("", cage.getPermission())); PlayerStat.getPlayerStat(p).removeCoins(cage.getPrice()); p.getOpenInventory().close(); new BukkitRunnable() { @Override public void run() { plugin.getGlam().createGlassMenu(p); } }.runTaskLater(plugin, 2L); p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.shop.buy")), 1.0f, 1.0f); p.sendMessage( plugin.getLang().get("messages.buyCage").replaceAll("", cage.getName())); } } else { p.sendMessage( plugin.getLang().get("messages.selectedCage").replaceAll("", cage.getName())); PlayerStat.getPlayerStat(p).setCage(cage.getId()); } } if (inv.getTitle().equals(plugin.getArrow().get("title"))) { e.setCancelled(true); if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return; for (final cx.sfy.TheBridge.cosmetics.Arrow arrow : plugin.getArm().getArrows().values()) if (arrow.getSlot() == e.getSlot()) if (!p.hasPermission(arrow.getPermission())) { if (!arrow.isBuy()) p.sendMessage(plugin.getLang().get("messages.noBuy")); else if (arrow.getPrice() > PlayerStat.getPlayerStat(p).getCoins()) p.sendMessage(plugin.getLang().get("messages.noMoney")); else if (arrow.isBuy() && arrow.getPrice() <= PlayerStat.getPlayerStat(p).getCoins()) { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), plugin.getConfig().getString("permFormat").replaceAll("", p.getName()) .replaceAll("", arrow.getPermission())); PlayerStat.getPlayerStat(p).removeCoins(arrow.getPrice()); p.getOpenInventory().close(); new BukkitRunnable() { @Override public void run() { plugin.getAmu().createArrowMenu(p); } }.runTaskLater(plugin, 2L); p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.shop.buy")), 1.0f, 1.0f); p.sendMessage( plugin.getLang().get("messages.buyTrail").replaceAll("", arrow.getName())); } } else { p.sendMessage( plugin.getLang().get("messages.selectedTrail").replaceAll("", arrow.getName())); PlayerStat.getPlayerStat(p).setArrow(arrow.getId()); } } if (inv.getTitle().equals(plugin.getLang().get("menus.type.title"))) { e.setCancelled(true); if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return; if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("menus.type.normal.nameItem"))) plugin.getGmu().openGameMenu(p); if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("menus.type.four.nameItem"))) plugin.getGmu().openGameFourMenu(p); } if (inv.getTitle().equals(plugin.getLang().get("menus.hotbar.title"))) { if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) { e.setCancelled(true); return; } if (!e.getCurrentItem().hasItemMeta()) return; if (!e.getCurrentItem().getItemMeta().hasDisplayName()) return; if (e.getCurrentItem().getItemMeta().getDisplayName().equals("§a↑ §eInventory")) e.setCancelled(true); if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("menus.close.nameItem"))) { e.setCancelled(true); p.getOpenInventory().close(); } if (e.getCurrentItem().getItemMeta().getDisplayName().equals(plugin.getLang().get("menus.save.nameItem"))) { plugin.getHotbar().saveLayout(p, e.getInventory()); e.setCancelled(true); } } if (inv.getTitle().equals(plugin.getLang().get("menus.game.title"))) { if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR || e.getSlotType().equals(SlotType.OUTSIDE)) return; e.setCancelled(true); if (plugin.getGm().getGameByPlayer(p) == null) if (e.getCurrentItem().getItemMeta().getDisplayName().contains("§a")) { final String arena = e.getCurrentItem().getItemMeta().getDisplayName().replaceAll("§a", ""); final GameDuo game = plugin.getGm().getGameByName(arena); if (game.getPlayers() >= game.getMax()) { p.sendMessage(plugin.getLang().get("messages.gameFull")); return; } if (game.isState(State.WAITING) || game.isState(State.STARTING)) plugin.getGm().addPlayerGame(p, game); else p.sendMessage(plugin.getLang().get("messages.gameAlreadyStart")); } } if (inv.getTitle().equals(plugin.getLang().get("menus.gameFour.title"))) { if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR || e.getSlotType().equals(SlotType.OUTSIDE)) return; e.setCancelled(true); if (plugin.getGm().getGameFourByPlayer(p) == null) if (e.getCurrentItem().getItemMeta().getDisplayName().contains("§a")) { final String arena = e.getCurrentItem().getItemMeta().getDisplayName().replaceAll("§a", ""); final GameFour game = plugin.getGm().getGameFourByName(arena); if (game == null) return; if (game.getPlayers().size() >= game.getMax()) { p.sendMessage(plugin.getLang().get("messages.gameFull")); return; } if (game.isState(FState.WAITING) || game.isState(FState.STARTING)) plugin.getGm().addPlayerGameFour(p, game); else p.sendMessage(plugin.getLang().get("messages.gameAlreadyStart")); } } if (plugin.getGm().getGameByPlayer(p) != null) if (inv.getTitle().equals(plugin.getLang().get("menus.team.title"))) { e.setCancelled(true); final GameDuo game = plugin.getGm().getGameByPlayer(p); if (e.getCurrentItem().getItemMeta().getDisplayName().contains("§9")) { if (p.hasPermission("bridges.bypass")) { if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); game.addPlayerTeam(p, game.getTeams().get(ChatColor.BLUE)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§9" + plugin.getConfig().getString("names.blue"))); plugin.getTem().openTeamNormalMenu(p); return; } if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); if (game.getTeams().get(ChatColor.BLUE).getTeamSize() < game.getTeamSize() && game.getTeams() .get(ChatColor.BLUE).getTeamSize() <= game.getTeams().get(ChatColor.RED).getTeamSize()) { game.addPlayerTeam(p, game.getTeams().get(ChatColor.BLUE)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§9" + plugin.getConfig().getString("names.blue"))); plugin.getTem().openTeamNormalMenu(p); } else p.sendMessage(plugin.getLang().get("messages.unbalancedTeam")); } if (e.getCurrentItem().getItemMeta().getDisplayName().contains("§c")) { if (p.hasPermission("bridges.bypass")) { if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); game.addPlayerTeam(p, game.getTeams().get(ChatColor.RED)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§c" + plugin.getConfig().getString("names.red"))); plugin.getTem().openTeamNormalMenu(p); return; } if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); if (game.getTeams().get(ChatColor.RED).getTeamSize() < game.getTeamSize() && game.getTeams() .get(ChatColor.RED).getTeamSize() <= game.getTeams().get(ChatColor.BLUE).getTeamSize()) { game.addPlayerTeam(p, game.getTeams().get(ChatColor.RED)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§c" + plugin.getConfig().getString("names.red"))); plugin.getTem().openTeamNormalMenu(p); } else p.sendMessage(plugin.getLang().get("messages.unbalancedTeam")); } } if (plugin.getGm().getGameFourByPlayer(p) != null) { if (inv.getTitle().equals(plugin.getLang().get("menus.options.title"))) { e.setCancelled(true); if (Bukkit.getPlayer(e.getCurrentItem().getItemMeta().getDisplayName().replaceAll("§7", "")) == null) return; p.teleport(Bukkit.getPlayer(e.getCurrentItem().getItemMeta().getDisplayName().replaceAll("§7", ""))); } if (e.getInventory().getName().equals(plugin.getLang().get("menus.options.title"))) { if (e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR) return; e.setCancelled(true); if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("menus.options.velocidad.nameItem").replaceAll("<#>", "I"))) p.setFlySpeed(0.2f); if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("menus.options.velocidad.nameItem").replaceAll("<#>", "II"))) p.setFlySpeed(0.4f); if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("menus.options.velocidad.nameItem").replaceAll("<#>", "III"))) p.setFlySpeed(0.6f); if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("menus.options.velocidad.nameItem").replaceAll("<#>", "IV"))) p.setFlySpeed(0.8f); if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(plugin.getLang().get("menus.options.velocidad.nameItem").replaceAll("<#>", "V"))) p.setFlySpeed(1.0f); if (e.getCurrentItem().getItemMeta().getDisplayName().equals( plugin.getLang().get("menus.options.vision.nameItem").replaceAll("", "§aActivar"))) { plugin.getSom().settings.put(p, true); p.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION, 9999, 1, true)); plugin.getSom().openOptionsMenu(p); } if (e.getCurrentItem().getItemMeta().getDisplayName().equals( plugin.getLang().get("menus.options.vision.nameItem").replaceAll("", "§cDesactivar"))) { plugin.getSom().settings.put(p, false); p.removePotionEffect(PotionEffectType.NIGHT_VISION); plugin.getSom().openOptionsMenu(p); } } if (inv.getTitle().equals(plugin.getLang().get("menus.teamFour.title"))) { e.setCancelled(true); final GameFour game = plugin.getGm().getGameFourByPlayer(p); if (e.getCurrentItem().getItemMeta().getDisplayName().contains("§9")) { if (p.hasPermission("bridges.bypass")) { if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); game.addPlayerTeam(p, game.getTeams().get(ChatColor.BLUE)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§9" + plugin.getConfig().getString("names.blue"))); plugin.getTem().openTeamFourMenu(p); return; } if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); if (game.getTeams().get(ChatColor.BLUE).getTeamSize() < game.getTeamSize() && game.getTeams().get(ChatColor.BLUE).getTeamSize() <= game.getTeams().get(ChatColor.RED) .getTeamSize() && game.getTeams().get(ChatColor.BLUE).getTeamSize() <= game.getTeams() .get(ChatColor.YELLOW).getTeamSize() && game.getTeams().get(ChatColor.BLUE).getTeamSize() <= game.getTeams().get(ChatColor.GREEN) .getTeamSize()) { game.addPlayerTeam(p, game.getTeams().get(ChatColor.BLUE)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§9" + plugin.getConfig().getString("names.blue"))); plugin.getTem().openTeamFourMenu(p); } else p.sendMessage(plugin.getLang().get("messages.unbalancedTeam")); } if (e.getCurrentItem().getItemMeta().getDisplayName().contains("§c")) { if (p.hasPermission("bridges.bypass")) { if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); game.addPlayerTeam(p, game.getTeams().get(ChatColor.RED)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§c" + plugin.getConfig().getString("names.red"))); plugin.getTem().openTeamFourMenu(p); return; } if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); if (game.getTeams().get(ChatColor.RED).getTeamSize() < game.getTeamSize() && game.getTeams().get(ChatColor.RED).getTeamSize() <= game.getTeams().get(ChatColor.BLUE) .getTeamSize() && game.getTeams().get(ChatColor.RED).getTeamSize() <= game.getTeams().get(ChatColor.YELLOW) .getTeamSize() && game.getTeams().get(ChatColor.RED).getTeamSize() <= game.getTeams().get(ChatColor.GREEN) .getTeamSize()) { game.addPlayerTeam(p, game.getTeams().get(ChatColor.RED)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§c" + plugin.getConfig().getString("names.red"))); plugin.getTem().openTeamFourMenu(p); } else p.sendMessage(plugin.getLang().get("messages.unbalancedTeam")); } if (e.getCurrentItem().getItemMeta().getDisplayName().contains("§a")) { if (p.hasPermission("bridges.bypass")) { if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); game.addPlayerTeam(p, game.getTeams().get(ChatColor.GREEN)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§a" + plugin.getConfig().getString("names.green"))); plugin.getTem().openTeamFourMenu(p); return; } if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); if (game.getTeams().get(ChatColor.GREEN).getTeamSize() < game.getTeamSize() && game.getTeams().get(ChatColor.GREEN).getTeamSize() <= game.getTeams().get(ChatColor.RED) .getTeamSize() && game.getTeams().get(ChatColor.GREEN).getTeamSize() <= game.getTeams() .get(ChatColor.YELLOW).getTeamSize() && game.getTeams().get(ChatColor.GREEN).getTeamSize() <= game.getTeams().get(ChatColor.BLUE) .getTeamSize()) { game.addPlayerTeam(p, game.getTeams().get(ChatColor.GREEN)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§a" + plugin.getConfig().getString("names.green"))); plugin.getTem().openTeamFourMenu(p); } else p.sendMessage(plugin.getLang().get("messages.unbalancedTeam")); } if (e.getCurrentItem().getItemMeta().getDisplayName().contains("§e")) { if (p.hasPermission("bridges.bypass")) { if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); game.addPlayerTeam(p, game.getTeams().get(ChatColor.YELLOW)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§e" + plugin.getConfig().getString("names.yellow"))); plugin.getTem().openTeamFourMenu(p); return; } if (game.getTeamPlayer(p) != null) game.removeAllPlayerTeam(p); if (game.getTeams().get(ChatColor.YELLOW).getTeamSize() < game.getTeamSize() && game.getTeams().get(ChatColor.YELLOW).getTeamSize() <= game.getTeams().get(ChatColor.RED) .getTeamSize() && game.getTeams().get(ChatColor.YELLOW).getTeamSize() <= game.getTeams() .get(ChatColor.BLUE).getTeamSize() && game.getTeams().get(ChatColor.YELLOW).getTeamSize() <= game.getTeams() .get(ChatColor.GREEN).getTeamSize()) { game.addPlayerTeam(p, game.getTeams().get(ChatColor.YELLOW)); p.sendMessage(plugin.getLang().get("messages.joinedTeam").replaceAll("", "§e" + plugin.getConfig().getString("names.yellow"))); plugin.getTem().openTeamFourMenu(p); } else p.sendMessage(plugin.getLang().get("messages.unbalancedTeam")); } } } } @EventHandler public void onShoot(EntityShootBowEvent e) { if (e.getEntity() instanceof Player) { final Player p = (Player) e.getEntity(); if (bow.contains(p)) { p.sendMessage(plugin.getLang().get("messages.noShoot")); e.setCancelled(true); } else { timeBow(p); bow.add(p); } } } public void timeBow(Player p) { p.setLevel(plugin.getConfig().getInt("bow.seconds")); p.setExp(1.0F); new BukkitRunnable() { @Override public void run() { if (p.getLevel() - 1 < 0) { p.setLevel(0); p.setExp(0.0F); bow.remove(p); p.getInventory().addItem(new ItemStack(Material.ARROW, 1, (short) 0)); cancel(); } else { p.setLevel(p.getLevel() - 1); p.setExp(1.0F); new BukkitRunnable() { @Override public void run() { if (p.getExp() - 0.05F < 0) { p.setExp(0.0F); cancel(); } else p.setExp(p.getExp() - 0.05F); } }.runTaskTimer(plugin, 0, 2); } } }.runTaskTimer(plugin, 0, 20); } @EventHandler public void onEntityDamage(EntityDamageByEntityEvent e) { if (e.getEntity() instanceof Player) { if (e.getDamager() instanceof Player) { final Player p = (Player) e.getEntity(); final Player d = (Player) e.getDamager(); if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); if (game.isState(State.WAITING) || game.isState(State.STARTING) || game.isState(State.PREGAME)) { e.setCancelled(true); return; } if (game.getTeamPlayer(p).equals(game.getTeamPlayer(d))) { e.setCancelled(true); return; } Tagged.setTag(p, d); if (e.getFinalDamage() >= p.getHealth()) { e.setDamage(0); respawn(p, Tagged.getTag(p)); } } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); if (game.isState(FState.WAITING) || game.isState(FState.STARTING) || game.isState(FState.PREGAME)) { e.setCancelled(true); return; } if (game.getTeamPlayer(p).equals(game.getTeamPlayer(d))) { e.setCancelled(true); return; } Tagged.setTag(p, d); if (e.getFinalDamage() >= p.getHealth()) { e.setDamage(0); respawnFour(p, Tagged.getTag(p)); } } } if (e.getDamager() instanceof Projectile) { final Projectile proj = (Projectile) e.getDamager(); if (proj.getShooter() instanceof Player) { final Player p = (Player) e.getEntity(); final Player d = (Player) proj.getShooter(); if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); if (game.isState(State.WAITING) || game.isState(State.STARTING) || game.isState(State.PREGAME)) { e.setCancelled(true); return; } if (game.getTeamPlayer(p).equals(game.getTeamPlayer(d))) { e.setCancelled(true); return; } Tagged.setTag(p, d); if (e.getFinalDamage() >= p.getHealth()) { e.setDamage(0); respawn(p, Tagged.getTag(p)); } } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); if (game.isState(FState.WAITING) || game.isState(FState.STARTING) || game.isState(FState.PREGAME)) { e.setCancelled(true); return; } if (game.getTeamPlayer(p).equals(game.getTeamPlayer(d))) { e.setCancelled(true); return; } Tagged.setTag(p, d); if (e.getFinalDamage() >= p.getHealth()) { e.setDamage(0); respawnFour(p, Tagged.getTag(p)); } } } } } } @EventHandler public void onConsume(PlayerItemConsumeEvent e) { final Player p = e.getPlayer(); if (plugin.getGm().getGameByPlayer(p) != null) if (e.getItem().getType().equals(Material.GOLDEN_APPLE)) { p.setHealth(p.getMaxHealth()); if (plugin.getConfig().getBoolean("remove.absorption") == true) new BukkitRunnable() { @Override public void run() { p.removePotionEffect(PotionEffectType.ABSORPTION); } }.runTaskLater(plugin, 1); if (plugin.getConfig().getBoolean("remove.regeneration") == true) new BukkitRunnable() { @Override public void run() { p.removePotionEffect(PotionEffectType.REGENERATION); } }.runTaskLater(plugin, 1); } if (plugin.getGm().getGameFourByPlayer(p) != null) if (e.getItem().getType().equals(Material.GOLDEN_APPLE)) { p.setHealth(p.getMaxHealth()); if (plugin.getConfig().getBoolean("remove.absorption") == true) new BukkitRunnable() { @Override public void run() { p.removePotionEffect(PotionEffectType.ABSORPTION); } }.runTaskLater(plugin, 1); if (plugin.getConfig().getBoolean("remove.regeneration") == true) new BukkitRunnable() { @Override public void run() { p.removePotionEffect(PotionEffectType.REGENERATION); } }.runTaskLater(plugin, 1); } } @EventHandler public void onQuit(PlayerQuitEvent e) { final Player p = e.getPlayer(); if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); game.removePlayer(p); if (game.getTeamsAlive() == 1) game.checkWin(p, game.getLastTeam(), game.getLastTeam().getGoals()); } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); game.removePlayer(p); if (game.getTeamsAlive() == 1) game.checkWin(game.getLastTeam(), game.getTeamPlayer(p), game.getLastTeam().getTeamPlayers().get(0)); } for (final Player on : plugin.getSb().getSB().keySet()) plugin.getSb().update(on); if (InventoryData.getInventoryData(p) != null) { InventoryData.getInventoryData(p).restore(); InventoryData.remove(p); } plugin.getSb().remove(p); plugin.getTop().removeHolo(p); plugin.getDb().saveData(PlayerStat.getPlayerStat(p)); plugin.getCb().saveData(PlayerStat.getPlayerStat(p)); } @EventHandler public void onKick(PlayerKickEvent e) { final Player p = e.getPlayer(); if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); game.removePlayer(p); if (game.getTeamsAlive() == 1) game.checkWin(p, game.getLastTeam(), game.getLastTeam().getGoals()); } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); game.removePlayer(p); if (game.getTeamsAlive() == 1) game.checkWin(game.getLastTeam(), game.getTeamPlayer(p), game.getLastTeam().getTeamPlayers().get(0)); } for (final Player on : plugin.getSb().getSB().keySet()) plugin.getSb().update(on); if (InventoryData.getInventoryData(p) != null) { InventoryData.getInventoryData(p).restore(); InventoryData.remove(p); } plugin.getSb().remove(p); plugin.getTop().removeHolo(p); plugin.getDb().saveData(PlayerStat.getPlayerStat(p)); plugin.getCb().saveData(PlayerStat.getPlayerStat(p)); } @EventHandler public void onBreak(BlockBreakEvent e) { final Player p = e.getPlayer(); if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); if (game.isState(State.WAITING) || game.isState(State.STARTING) || game.isState(State.PREGAME) || game.isState(State.PREGAME) || game.isState(State.FINISH) || game.isState(State.RESTARTING)) e.setCancelled(true); if (game.isState(State.INGAME)) if (!game.getPlaced().contains(e.getBlock().getLocation())) { e.setCancelled(true); p.sendMessage(plugin.getLang().get("messages.noBreak")); } else PlayerStat.getPlayerStat(p).addBroken(); return; } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); if (game.isState(FState.WAITING) || game.isState(FState.STARTING) || game.isState(FState.PREGAME) || game.isState(FState.PREGAME) || game.isState(FState.FINISH) || game.isState(FState.RESTARTING)) e.setCancelled(true); if (game.isState(FState.INGAME)) if (!game.getPlaced().contains(e.getBlock().getLocation())) { e.setCancelled(true); p.sendMessage(plugin.getLang().get("messages.noBreak")); } else PlayerStat.getPlayerStat(p).addBroken(); return; } } @EventHandler public void onPlace(BlockPlaceEvent e) { final Player p = e.getPlayer(); if (plugin.getGm().getGameByPlayer(p) != null) { final GameDuo game = plugin.getGm().getGameByPlayer(p); if (game.isState(State.WAITING) || game.isState(State.STARTING) || game.isState(State.PREGAME) || game.isState(State.FINISH) || game.isState(State.RESTARTING)) e.setCancelled(true); if (game.isState(State.INGAME)) if (!game.getBuild().contains(e.getBlockPlaced().getLocation())) { e.setCancelled(true); p.sendMessage(plugin.getLang().get("messages.noPlace")); } else { PlayerStat.getPlayerStat(p).addPlaced(); game.addPlace(e.getBlockPlaced().getLocation()); } return; } if (plugin.getGm().getGameFourByPlayer(p) != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(p); if (game.isState(FState.WAITING) || game.isState(FState.STARTING) || game.isState(FState.PREGAME) || game.isState(FState.PREGAME) || game.isState(FState.FINISH) || game.isState(FState.RESTARTING)) e.setCancelled(true); if (game.isState(FState.INGAME)) if (!game.getBuild().contains(e.getBlockPlaced().getLocation())) { e.setCancelled(true); p.sendMessage(plugin.getLang().get("messages.noPlace")); } else { PlayerStat.getPlayerStat(p).addPlaced(); game.addPlace(e.getBlockPlaced().getLocation()); } return; } } public void respawn(Player d, Player k) { d.closeInventory(); d.getInventory().clear(); d.setHealth(d.getMaxHealth()); if (k != null) { final GameDuo game = plugin.getGm().getGameByPlayer(k); if (game == null) return; game.addKill(k); PlayerStat.getPlayerStat(k).addNormalKills(); d.teleport(game.getTeamPlayer(d).getTeamRespawn()); game.giveKit(d, game.getTeamPlayer(d)); if (d.getLastDamageCause() == null) for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getLang().get("deathMessages.custom") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName()) + plugin.getLang().get("deathMessages.player") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName())); else { final DamageCause cause = d.getLastDamageCause().getCause(); if (cause.equals(DamageCause.VOID)) for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getLang().get("deathMessages.void") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName()) + plugin.getLang().get("deathMessages.player") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName())); else if (cause.equals(DamageCause.ENTITY_ATTACK)) for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getLang().get("deathMessages.damage") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName()) + plugin.getLang().get("deathMessages.player") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName())); else for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getLang().get("deathMessages.custom") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName()) + plugin.getLang().get("deathMessages.player") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName())); } } else { final GameDuo game = plugin.getGm().getGameByPlayer(d); d.teleport(game.getTeamPlayer(d).getTeamRespawn()); game.giveKit(d, game.getTeamPlayer(d)); if (d.getLastDamageCause() == null) for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getLang().get("deathMessages.custom") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", d.getName()) + plugin.getLang().get("deathMessages.none")); else { final DamageCause cause = d.getLastDamageCause().getCause(); if (cause.equals(DamageCause.VOID)) for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getLang().get("deathMessages.void") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", d.getName()) + plugin.getLang().get("deathMessages.none")); else if (cause.equals(DamageCause.ENTITY_ATTACK)) for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getLang().get("deathMessages.damage") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", d.getName()) + plugin.getLang().get("deathMessages.none")); else for (final Player on : game.getGamePlayers()) on.sendMessage(plugin.getLang().get("deathMessages.custom") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", d.getName()) + plugin.getLang().get("deathMessages.none")); } } } public void respawnFour(Player d, Player k) { d.closeInventory(); d.getInventory().clear(); d.setHealth(d.getMaxHealth()); if (k != null) { final GameFour game = plugin.getGm().getGameFourByPlayer(k); game.addKill(k); PlayerStat.getPlayerStat(k).addFourKills(); d.teleport(game.getTeamPlayer(d).getTeamRespawn()); game.giveKit(d, game.getTeamPlayer(d)); if (d.getLastDamageCause() == null) for (final Player on : game.getPlayers()) on.sendMessage(plugin.getLang().get("deathMessages.custom") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName()) + plugin.getLang().get("deathMessages.player") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName())); else { final DamageCause cause = d.getLastDamageCause().getCause(); if (cause.equals(DamageCause.VOID)) for (final Player on : game.getPlayers()) on.sendMessage(plugin.getLang().get("deathMessages.void") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName()) + plugin.getLang().get("deathMessages.player") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName())); else if (cause.equals(DamageCause.ENTITY_ATTACK)) for (final Player on : game.getPlayers()) on.sendMessage(plugin.getLang().get("deathMessages.damage") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName()) + plugin.getLang().get("deathMessages.player") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName())); else for (final Player on : game.getPlayers()) on.sendMessage(plugin.getLang().get("deathMessages.custom") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName()) + plugin.getLang().get("deathMessages.player") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", game.getTeamPlayer(k).getColor() + "") .replaceAll("", d.getName()).replaceAll("", k.getName())); } } else { final GameFour game = plugin.getGm().getGameFourByPlayer(d); d.teleport(game.getTeamPlayer(d).getTeamRespawn()); game.giveKit(d, game.getTeamPlayer(d)); if (d.getLastDamageCause() == null) for (final Player on : game.getPlayers()) on.sendMessage(plugin.getLang().get("deathMessages.custom") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", d.getName()) + plugin.getLang().get("deathMessages.none")); else { final DamageCause cause = d.getLastDamageCause().getCause(); if (cause.equals(DamageCause.VOID)) for (final Player on : game.getPlayers()) on.sendMessage(plugin.getLang().get("deathMessages.void") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", d.getName()) + plugin.getLang().get("deathMessages.none")); else if (cause.equals(DamageCause.ENTITY_ATTACK)) for (final Player on : game.getPlayers()) on.sendMessage(plugin.getLang().get("deathMessages.damage") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", d.getName()) + plugin.getLang().get("deathMessages.none")); else for (final Player on : game.getPlayers()) on.sendMessage(plugin.getLang().get("deathMessages.custom") .replaceAll("", game.getTeamPlayer(d).getColor() + "") .replaceAll("", d.getName()) + plugin.getLang().get("deathMessages.none")); } } } }