Bukkit编码帮助发件人

时间:2015-04-04 00:39:31

标签: java bukkit

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部分是否加下划线红色?有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

sender.getInventory()以红色加下划线的原因是因为类getInventory()没有方法CommandSender

但是Player类确实有getInventory()方法,因此您需要检查以确保senderPlayer然后您可以执行getInventory()方法。

要检查senderPlayerif (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}}