Untitled
unknown
java
11 days ago
4.3 kB
3
Indexable
public abstract class ArenaEventListeners<T extends Arena> implements EventListener { private final CooldownHandler<UUID> moveActionCooldown = new CooldownHandler<>(1000); public final T arena; private ArenaDisguiseListeners listeners; public ArenaEventListeners(T arena) { this.arena = arena; register(ArcadeGame.getPlugin()); if (ArcadeModule.getInstance().getPhoenixHook().isPresent()) { Bukkit.getPluginManager().registerEvents(listeners = new ArenaDisguiseListeners(arena), ArcadeGame.getPlugin()); } } protected boolean isEventVerified(BlockEvent event) { return event.getBlock().getWorld().equals(arena.getWorld()); } protected boolean isEventVerified(EntityEvent event) { return event.getEntity().getWorld().equals(arena.getWorld()); } protected boolean isEventVerified(PlayerEvent event) { return event.getPlayer().getWorld().equals(arena.getWorld()); } @EventHandler public void onPlayerDropItem(PlayerDropItemEvent event) { Player player = event.getPlayer(); if (arena.isSpectating(player)) { event.setCancelled(true); } } @EventHandler public void onPlayerSpawnLocation(PlayerSpawnLocationEvent event) { if (arena.isCachedJoin(event.getPlayer().getUniqueId())) { event.setSpawnLocation(arena.getSpawnLocation()); } } @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { event.setJoinMessage(null); Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); if (arena.isCachedJoin(uuid)) { arena.invalidateJoinCache(uuid); arena.addPlayer(player); } } @EventHandler public void _onPlayerInteract(PlayerInteractEvent event) { if (!isEventVerified(event)) return; Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); if (arena.isSpectating(player)) { event.setCancelled(true); } ItemStack item = event.getItem(); PlayerInfo playerInfo = arena.getPlayerInfo(player); Optional<Party> partyByPlayer = PartyManager.byPlayer(uuid); Optional<Party> partyByLeader = PartyManager.byLeader(uuid); if (ItemPlayAgain.is(item)) { ArenaType type = ItemPlayAgain.getType(item); if (moveActionCooldown.isOnCooldown(uuid)) { ChatUtils.sendMessage(player, "&cPlease Wait!"); } else if (partyByPlayer.isPresent() && partyByLeader.isPresent()) { playerInfo.getCommonController().requestPlay(type, partyByLeader.get().getPlayers().size()); } else if (partyByPlayer.isPresent()) { ChatUtils.sendMessage(player, "&cYou can't replay while being in a party, ask the party leader or leave the party using /party leave"); } else { playerInfo.getCommonController().requestPlay(type, 1); } } if (ItemLeave.is(item)) { if (moveActionCooldown.isOnCooldown(uuid)) { ChatUtils.sendMessage(player, "&cPlease Wait!"); } else if (partyByPlayer.isPresent() && partyByLeader.isPresent()) { playerInfo.getCommonController().requestPartyLobby(); } else if (partyByPlayer.isPresent()) { ChatUtils.sendMessage(player, "&cYou can't leave while being in a party, ask the party leader or leave the party using /party leave"); } else { playerInfo.getCommonController().requestLobby(); } } if (ItemSpectatorSettings.is(item) && arena.isSpectating(player)) { Menu.open(player, new SpectatorSettingsMenu(playerInfo.getSpectatorController(), playerInfo.getCachedData(SpectatorSetting.key()))); } if (ItemTeleporter.is(item) && arena.isSpectating(player)) { Menu.open(player, new TeleporterMenu(arena, player)); } } @Override public void unregister() { EventListener.super.unregister(); if (listeners != null) { unregister(listeners); } } }
Editor is loading...
Leave a Comment