Untitled
unknown
java
6 months ago
4.3 kB
4
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