diff --git a/src/main/java/ling/coordinateRecorder/Listener/ChatEnhancement.java b/src/main/java/ling/coordinateRecorder/Listener/ChatEnhancement.java index c46d891..ed999fd 100644 --- a/src/main/java/ling/coordinateRecorder/Listener/ChatEnhancement.java +++ b/src/main/java/ling/coordinateRecorder/Listener/ChatEnhancement.java @@ -3,14 +3,17 @@ package ling.coordinateRecorder.Listener; import ling.coordinateRecorder.CoordinateRecorder; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.inventory.ItemStack; import java.util.HashMap; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -39,17 +42,7 @@ public class ChatEnhancement implements Listener { return map.get(n); } - @EventHandler - public void onPlayerChat(AsyncPlayerChatEvent event) { - Player player = event.getPlayer(); - String message = event.getMessage(); - - ItemStack mainHandItem = player.getInventory().getItemInMainHand(); - if (mainHandItem.getType() == Material.AIR) - return; - - //BaseComponent item = CoordinateRecorder.getItemShowService().addItem(mainHandItem); - + protected void playerChat(Player player, String message, Set list) { HashMap hashMap = new HashMap<>(); // 输出消息 @@ -90,18 +83,24 @@ public class ChatEnhancement implements Listener { finalMessage.addExtra(remainingText); } - /* - String[] parts = message.split("\\[item\\]", -1); - for (int i = 0; i < parts.length; i++) { - finalMessage.addExtra(new TextComponent(parts[i])); - if (i < parts.length - 1) { - finalMessage.addExtra(item); - } - }*/ - - for (Player recipient : event.getRecipients()) { + for (Player recipient : list) { recipient.spigot().sendMessage(finalMessage); } + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onPlayerChat(AsyncPlayerChatEvent event) { + Player player = event.getPlayer(); + String message = event.getMessage(); + event.setCancelled(true); + Set list = event.getRecipients(); + if (event.isAsynchronous()) { + Bukkit.getScheduler().runTask(CoordinateRecorder.getCurrent(), () -> { + playerChat(player, message, list); + }); + } else { + playerChat(player, message, list); + } } }