From a318136ab52a914ff06294beabb43e08bd63f48e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=BB=E9=AD=82=E5=9C=A3=E4=BD=BF?= Date: Thu, 26 Dec 2024 03:59:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=81=E8=AE=B8=E7=8E=A9=E5=AE=B6=E5=9C=A8?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=86=85=E5=AE=B9=E4=B8=AD=E4=BD=BF=E7=94=A8?= =?UTF-8?q?[item]=E6=A0=87=E7=AD=BE=E6=9D=A5=E5=B1=95=E7=A4=BA=E4=B8=BB?= =?UTF-8?q?=E6=89=8B=E4=B8=8A=E7=9A=84=E7=89=A9=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CoordinateRecorder.java | 1 + .../Listener/ChatEnhancement.java | 42 +++++++++++++++++++ .../Service/ItemShowService.java | 15 ++++--- 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 src/main/java/ling/coordinateRecorder/Listener/ChatEnhancement.java diff --git a/src/main/java/ling/coordinateRecorder/CoordinateRecorder.java b/src/main/java/ling/coordinateRecorder/CoordinateRecorder.java index c760980..b93011a 100644 --- a/src/main/java/ling/coordinateRecorder/CoordinateRecorder.java +++ b/src/main/java/ling/coordinateRecorder/CoordinateRecorder.java @@ -28,6 +28,7 @@ public final class CoordinateRecorder extends JavaPlugin { Bukkit.getPluginManager().registerEvents(new PlayerEventListener(), this); Bukkit.getPluginManager().registerEvents(new InterruptTransmit(), this); Bukkit.getPluginManager().registerEvents(new CheatItemListener(), this); + Bukkit.getPluginManager().registerEvents(new ChatEnhancement(), this); if (authMePlugin != null && authMePlugin.isEnabled()) { getLogger().info("找到AuthMe插件,将使用AuthMe兼容接口"); Bukkit.getPluginManager().registerEvents(new PlayerAuthMeLoginEventListener(), this); diff --git a/src/main/java/ling/coordinateRecorder/Listener/ChatEnhancement.java b/src/main/java/ling/coordinateRecorder/Listener/ChatEnhancement.java new file mode 100644 index 0000000..49b9295 --- /dev/null +++ b/src/main/java/ling/coordinateRecorder/Listener/ChatEnhancement.java @@ -0,0 +1,42 @@ +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.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.inventory.ItemStack; + +/// 增强聊天信息 +public class ChatEnhancement implements Listener { + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + Player player = event.getPlayer(); + String message = event.getMessage(); + if (!message.contains("[item]")) + return; + + ItemStack mainHandItem = player.getInventory().getItemInMainHand(); + if (mainHandItem.getType() == Material.AIR) + return; + + BaseComponent item = CoordinateRecorder.getItemShowService().addItem(mainHandItem); + + String[] parts = message.split("\\[item\\]", -1); + TextComponent finalMessage = new TextComponent("<" + player.getName() + "> "); + 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); + } + event.setCancelled(true); + } +} diff --git a/src/main/java/ling/coordinateRecorder/Service/ItemShowService.java b/src/main/java/ling/coordinateRecorder/Service/ItemShowService.java index 7f57f2c..7c8ac8c 100644 --- a/src/main/java/ling/coordinateRecorder/Service/ItemShowService.java +++ b/src/main/java/ling/coordinateRecorder/Service/ItemShowService.java @@ -2,10 +2,7 @@ package ling.coordinateRecorder.Service; import ling.coordinateRecorder.CoordinateRecorder; import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.chat.*; import net.md_5.bungee.api.chat.hover.content.Text; import org.bukkit.Bukkit; import org.bukkit.command.Command; @@ -54,7 +51,15 @@ public class ItemShowService implements Service { lock(); long index = nextIndex++; hashMap.put(index, new ItemData(item.clone())); - BaseComponent message = new TextComponent("[" + item.getItemMeta().getDisplayName() + "]"); + BaseComponent itemName; + if (!item.getItemMeta().getDisplayName().isEmpty()) { + itemName = new TextComponent(item.getItemMeta().getDisplayName()); + } else { + itemName = new TranslatableComponent("item.minecraft." + item.getType().name().toLowerCase()); + } + BaseComponent message = new TextComponent("["); + message.addExtra(itemName); + message.addExtra("]"); message.setColor(ChatColor.YELLOW); message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("点击查看物品详情"))); message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/show_item_stack " + index));