修复增强聊天信息中,一个可能导致数据竞争的问题
This commit is contained in:
@@ -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<Player> list) {
|
||||
HashMap<Integer, BaseComponent> 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<Player> list = event.getRecipients();
|
||||
if (event.isAsynchronous()) {
|
||||
Bukkit.getScheduler().runTask(CoordinateRecorder.getCurrent(), () -> {
|
||||
playerChat(player, message, list);
|
||||
});
|
||||
} else {
|
||||
playerChat(player, message, list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user