public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
Player player = player.getPlayer();
if(cmd.getName().equalsIgnoreCase("StaffWand")) {
if(!sender.hasPermission("StaffWand.staff")) {
sender.sendMessage(ChatColor.RED + "Only Staff can use this!");
if(sender.hasPermission("StaffWand.staff")) {
sender.sendMessage(ChatColor.GREEN + "Here is your staff wand!")
ItemStack item = new ItemStack(Material.STICK);
sender.getInventory.addItem(item);
sender.getInventory部分是否加下划线红色?有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
sender.getInventory()
以红色加下划线的原因是因为类getInventory()
没有方法CommandSender
。
但是Player
类确实有getInventory()
方法,因此您需要检查以确保sender
是Player
然后您可以执行getInventory()
方法。
要检查sender
是Player
是if (sender instanceof Player)
,请使用instanceof
关键字
e.g。
getInventory()
然后,为了实际执行Player player = (Player) sender;
,您需要做一些名为" Casting"的事情。所有的转换实际上意味着将一个特定类型的对象“转换为”另一个对象类型。
例如将发件人转发给你做的播放器
InvalidCastException
注意:只有在您检查过对象是您投射到的内容的实例时才进行强制转换,或者您将获得getInventory()
。
所以现在将所有这些放在一起并执行if (sender instanceof Player) {
Player player = (Player) sender;
Inventory inv = player.getInventory();
//Do what you want to do with the inventory
}
方法,你会做类似的事情:
{{1}}