java - 如何测试 onPlayerRenameItem 事件中的玩家是否有一定的权限?
问题描述
我制作了一个铁砧颜色重命名插件,但我想将该功能限制为具有特定权限的用户。当前代码抛出此错误: 对于 PrepareAnvilEvent 类型的方法 getPlayer() 未定义我的侦听器:
package com.delight.anvilcolorrename;
import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.PrepareAnvilEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
public class AnvilColorRenameListener implements Listener {
//Constructor
public AnvilColorRenameListener(Main plugin) {
}
//EventHandler
@EventHandler
public void onPlayerRenameItem(PrepareAnvilEvent event){
if (event.getPlayer().hasPermission("AnvilColorRename.use")) {
if(event.getResult() != null && event.getResult().hasItemMeta() && event.getInventory().getRenameText() != ""){
ItemStack result = event.getResult();
ItemMeta resultMeta = result.getItemMeta();
String nameColored = ChatColor.translateAlternateColorCodes('&', event.getInventory().getRenameText());
resultMeta.setDisplayName(nameColored);
result.setItemMeta(resultMeta);
}
}// if(!event.hasPermission("AnvilColorRename.use")) {
// event.sendMessage("You can not use color codes in an anvil!");
// }
}
//}
解决方案
问题是PrepareAnvilEvent
没有Player
您可以访问的字段。但是,您可以Player
通过以下方式获得InventoryView
:
event.getInventoryView().getPlayer()
推荐阅读
- spring - 类上的@RabbitListener 注释
- kubernetes - nginx-ingress错误页面不隐藏nginx版本
- node.js - 为什么在nodejs中导致“错误:EINVAL”和“EPRM:权限被拒绝”问题?
- javascript - JavaScript IIFE 函数和变量范围
- linux - 如何访问外部 IP 上的 Pod
- go - 有时 goroutine 不会从通道获取事件数据
- c# - 使用 C# windows 应用程序上传 S3 存储桶但接收零字节
- api - 如何生成像 sklearn 这样的 API 参考?
- bash - 安装单声道框架时遇到问题
- sql - 在单个 Hive 查询中使用三个或更多连接