允许玩家在聊天内容中使用[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 PlayerEventListener(), this);
|
||||||
Bukkit.getPluginManager().registerEvents(new InterruptTransmit(), this);
|
Bukkit.getPluginManager().registerEvents(new InterruptTransmit(), this);
|
||||||
Bukkit.getPluginManager().registerEvents(new CheatItemListener(), this);
|
Bukkit.getPluginManager().registerEvents(new CheatItemListener(), this);
|
||||||
|
Bukkit.getPluginManager().registerEvents(new ChatEnhancement(), this);
|
||||||
if (authMePlugin != null && authMePlugin.isEnabled()) {
|
if (authMePlugin != null && authMePlugin.isEnabled()) {
|
||||||
getLogger().info("找到AuthMe插件,将使用AuthMe兼容接口");
|
getLogger().info("找到AuthMe插件,将使用AuthMe兼容接口");
|
||||||
Bukkit.getPluginManager().registerEvents(new PlayerAuthMeLoginEventListener(), this);
|
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 ling.coordinateRecorder.CoordinateRecorder;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
import net.md_5.bungee.api.chat.*;
|
||||||
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.hover.content.Text;
|
import net.md_5.bungee.api.chat.hover.content.Text;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@@ -54,7 +51,15 @@ public class ItemShowService implements Service {
|
|||||||
lock();
|
lock();
|
||||||
long index = nextIndex++;
|
long index = nextIndex++;
|
||||||
hashMap.put(index, new ItemData(item.clone()));
|
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.setColor(ChatColor.YELLOW);
|
||||||
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("点击查看物品详情")));
|
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("点击查看物品详情")));
|
||||||
message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/show_item_stack " + index));
|
message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/show_item_stack " + index));
|
||||||
|
|||||||
Reference in New Issue
Block a user