修复增强聊天信息中,一个可能导致数据竞争的问题
This commit is contained in:
@@ -3,14 +3,17 @@ package ling.coordinateRecorder.Listener;
|
|||||||
import ling.coordinateRecorder.CoordinateRecorder;
|
import ling.coordinateRecorder.CoordinateRecorder;
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@@ -39,17 +42,7 @@ public class ChatEnhancement implements Listener {
|
|||||||
return map.get(n);
|
return map.get(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
protected void playerChat(Player player, String message, Set<Player> list) {
|
||||||
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);
|
|
||||||
|
|
||||||
HashMap<Integer, BaseComponent> hashMap = new HashMap<>();
|
HashMap<Integer, BaseComponent> hashMap = new HashMap<>();
|
||||||
|
|
||||||
// 输出消息
|
// 输出消息
|
||||||
@@ -90,18 +83,24 @@ public class ChatEnhancement implements Listener {
|
|||||||
finalMessage.addExtra(remainingText);
|
finalMessage.addExtra(remainingText);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
for (Player recipient : list) {
|
||||||
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()) {
|
|
||||||
recipient.spigot().sendMessage(finalMessage);
|
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);
|
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