允许玩家在聊天内容中使用[item]标签来展示主手上的物品

This commit is contained in:
2024-12-26 03:59:53 +08:00
parent 98cd885883
commit a318136ab5
3 changed files with 53 additions and 5 deletions

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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));