允许玩家在聊天内容中使用[item]标签来展示主手上的物品
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user