/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.arkhamnetwork.arcade.minigame.skywars.listener; import org.arkhamnetwork.arcade.commons.kit.KitShop; import org.arkhamnetwork.arcade.commons.userstorage.PlayerProfile; import org.arkhamnetwork.arcade.commons.userstorage.PlayerRank; import org.arkhamnetwork.arcade.commons.utils.MessageUtils; import org.arkhamnetwork.arcade.commons.utils.PlayerUtils; import org.arkhamnetwork.arcade.minigame.skywars.SkyWars; import org.arkhamnetwork.arcade.minigame.skywars.manager.SkywarsPlayerManager; import org.bukkit.ChatColor; import org.bukkit.entity.EntityType; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; /** * * @author devan_000 */ public class SkywarsPlayerListener implements Listener { private SkyWars plugin = SkyWars.getSkywars(); @EventHandler(priority = EventPriority.LOWEST) public void onAsyncJoin(AsyncPlayerPreLoginEvent event) { SkywarsPlayerManager.handleLogin(event); } @EventHandler(priority = EventPriority.MONITOR) public void onJoin(PlayerJoinEvent event) { event.setJoinMessage(null); SkywarsPlayerManager.handleJoin(event.getPlayer()); } @EventHandler(priority = EventPriority.MONITOR) public void onQuit(PlayerQuitEvent event) { event.setQuitMessage(null); SkywarsPlayerManager.handleLeave(event.getPlayer(), false); } @EventHandler(priority = EventPriority.MONITOR) public void onKick(PlayerKickEvent event) { event.setLeaveMessage(null); SkywarsPlayerManager.handleLeave(event.getPlayer(), true); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onAsyncChat(AsyncPlayerChatEvent event) { PlayerProfile profile = plugin.getPlayers() .get(event.getPlayer().getUniqueId()).getUserProfile(); if (profile != null) { String format = plugin.getChatFormat(); format = format.replace("NAME", event.getPlayer().getName()); if (profile.getPlayerRanks().isEmpty()) { format = format.replace("PREFIX", ""); } else { StringBuilder rankBuilder = new StringBuilder(); for (PlayerRank rank : profile.getPlayerRanks()) { rankBuilder.append(rank.getPrefix()); } format = format.replace("PREFIX", rankBuilder.toString()); } if (profile.getPlayerRanks().isEmpty()) { format = format.replace("CHATCOLOR", String.valueOf(ChatColor.WHITE)); } else { format = format.replace( "CHATCOLOR", String.valueOf(profile.getPlayerRanks().get(0) .getChatColor())); } format = format.replace("MESSAGE", event.getMessage()); event.setFormat(MessageUtils.translateToColorCode(format)); } else { event.setCancelled(true); event.getPlayer().sendMessage( ChatColor.GREEN + "[Arcade] " + ChatColor.GRAY + "Your profile is still loading."); } } @EventHandler(priority = EventPriority.MONITOR) public void onFill(PlayerBucketFillEvent event) { if (plugin.getCurrentStage() == null || plugin.getCurrentStage().getId() != 1) { event.setCancelled(true); } } @EventHandler(priority = EventPriority.MONITOR) public void onEmpty(PlayerBucketEmptyEvent event) { if (plugin.getCurrentStage() == null || plugin.getCurrentStage().getId() != 1) { event.setCancelled(true); } } @EventHandler(priority = EventPriority.MONITOR) public void onInteract(PlayerInteractEvent event) { if (plugin.getCurrentStage() == null || plugin.getCurrentStage().getId() != 1) { event.setCancelled(true); } } @EventHandler(priority = EventPriority.MONITOR) public void onDrop(PlayerDropItemEvent event) { if (plugin.getCurrentStage() == null || plugin.getCurrentStage().getId() != 1) { event.setCancelled(true); } } @EventHandler(priority = EventPriority.LOWEST) public void onInteractEntity(PlayerInteractEntityEvent event) { if (plugin.getCurrentStage() == null || plugin.getCurrentStage().getId() != 0) { return; } if (event.getRightClicked() == null || event.getRightClicked().getType() != EntityType.VILLAGER) { return; } event.setCancelled(true); if (!plugin.getKitShops().containsKey(event.getRightClicked().getUniqueId())) { return; } KitShop shop = plugin.getKitShops().get(event.getRightClicked().getUniqueId()); SkywarsPlayerManager.attemptSelectKit(shop.getKit(), plugin.getPlayers().get(event.getPlayer().getUniqueId()), false); } }