diff --git a/src/main/java/com/songoda/skyblock/listeners/ChatListeners.java b/src/main/java/com/songoda/skyblock/listeners/ChatListeners.java index 152a6703..7ab2cb5a 100644 --- a/src/main/java/com/songoda/skyblock/listeners/ChatListeners.java +++ b/src/main/java/com/songoda/skyblock/listeners/ChatListeners.java @@ -2,13 +2,10 @@ package com.songoda.skyblock.listeners; import com.songoda.skyblock.SkyBlock; import com.songoda.skyblock.api.event.player.PlayerIslandChatEvent; -import com.songoda.skyblock.config.FileManager; -import com.songoda.skyblock.config.FileManager.Config; import com.songoda.skyblock.island.Island; import com.songoda.skyblock.island.IslandManager; import com.songoda.skyblock.island.IslandRole; import com.songoda.skyblock.message.MessageManager; -import com.songoda.skyblock.placeholder.PlaceholderManager; import com.songoda.skyblock.playerdata.PlayerData; import com.songoda.skyblock.playerdata.PlayerDataManager; import com.songoda.skyblock.utils.player.OfflinePlayer; @@ -21,7 +18,6 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; -import java.io.File; import java.util.UUID; public class ChatListeners implements Listener { @@ -36,7 +32,6 @@ public class ChatListeners implements Listener { public void onAsyncPlayerChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); - PlaceholderManager placeholderManager = plugin.getPlaceholderManager(); PlayerDataManager playerDataManager = plugin.getPlayerDataManager(); if (playerDataManager.hasPlayerData(player)) { @@ -53,24 +48,30 @@ public class ChatListeners implements Listener { PlayerIslandChatEvent islandChatEvent = new PlayerIslandChatEvent(player, island.getAPIWrapper(), event.getMessage(), languageLoad.getString("Island.Chat.Format.Message")); - Bukkit.getServer().getPluginManager().callEvent(islandChatEvent); + + Runnable callEvent = () -> Bukkit.getServer().getPluginManager().callEvent(islandChatEvent); + if (Bukkit.isPrimaryThread()) { + callEvent.run(); + } else { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, callEvent); + } } } } - - @EventHandler(priority = EventPriority.MONITOR,ignoreCancelled = true) + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onIslandChat(PlayerIslandChatEvent event) { PlayerDataManager playerDataManager = plugin.getPlayerDataManager(); MessageManager messageManager = plugin.getMessageManager(); IslandManager islandManager = plugin.getIslandManager(); - + Island island = event.getIsland().getIsland(); Player player = event.getPlayer(); FileConfiguration languageLoad = plugin.getLanguage(); - + String islandRole = null; - + if (island.hasRole(IslandRole.Member, player.getUniqueId())) { islandRole = languageLoad.getString("Island.Chat.Format.Role.Member"); } else if (island.hasRole(IslandRole.Operator, player.getUniqueId())) { @@ -78,10 +79,10 @@ public class ChatListeners implements Listener { } else if (island.hasRole(IslandRole.Owner, player.getUniqueId())) { islandRole = languageLoad.getString("Island.Chat.Format.Role.Owner"); } - if(islandRole == null) { + if (islandRole == null) { islandRole = ""; } - + for (UUID islandMembersOnlineList : islandManager.getMembersOnline(island)) { Player targetPlayer = Bukkit.getServer().getPlayer(islandMembersOnlineList); String message = ChatColor.translateAlternateColorCodes('&', messageManager.replaceMessage(targetPlayer, @@ -89,14 +90,14 @@ public class ChatListeners implements Listener { .replace("%message", event.getMessage()); messageManager.sendMessage(targetPlayer, message); } - + // Spy - for(Player targetPlayer : Bukkit.getServer().getOnlinePlayers()){ - if(!targetPlayer.equals(event.getPlayer()) && + for (Player targetPlayer : Bukkit.getServer().getOnlinePlayers()) { + if (!targetPlayer.equals(event.getPlayer()) && !islandManager.getMembersOnline(island).contains(targetPlayer.getUniqueId()) && targetPlayer.hasPermission("fabledskyblock.admin.chatspy")) { PlayerData pd = playerDataManager.getPlayerData(targetPlayer); - if(pd != null && pd.isChatSpy() && (pd.isGlobalChatSpy() || pd.isChatSpyIsland(island))) { + if (pd != null && pd.isChatSpy() && (pd.isGlobalChatSpy() || pd.isChatSpyIsland(island))) { String message = ChatColor.translateAlternateColorCodes('&', messageManager.replaceMessage(targetPlayer, languageLoad.getString("Island.Chat.Spy.Format.Message").replace("%role", islandRole).replace("%player", player.getName()))) .replace("%islandOwner", new OfflinePlayer(island.getOwnerUUID()).getName()) @@ -105,7 +106,7 @@ public class ChatListeners implements Listener { } } } - + if (this.plugin.getConfiguration().getBoolean("Island.Chat.OutputToConsole")) { messageManager.sendMessage(Bukkit.getConsoleSender(), event.getFormat().replace("%role", islandRole).replace("%player", player.getName()) .replace("%message", event.getMessage()));