【问题标题】:new ItemStack() The constructor ItemStack(Material, int) is undefinednew ItemStack() 构造函数 ItemStack(Material, int) 未定义
【发布时间】:2017-08-01 04:13:27
【问题描述】:

所以我目前正在和我的朋友一起制作 Minecraft 服务器,但我遇到了一个似乎无法修复的错误。我正在发出 /hat 命令,所以玩家可以将物品和方块放在头上。所以我试图让它在他们把它戴在头上后从他们手中拿走。但我得到这个是为了航空物品

The constructor ItemStack(Material, int) is undefined

这是我的代码:`

import org.bukkit.ItemStack;
import net.minecraft.server.v1_8_R3.Material;

//{Class definition and other methods}

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    Player user = (Player) sender;
    if(sender instanceof Player){
        ItemStack userItem = new ItemStack(user.getItemInHand());
        if(!userItem.equals(Material.AIR)){     
            user.getInventory().setHelmet(userItem);
            ItemStack a = new ItemStack(Material.AIR, 1); // Error happens here
            user.getInventory().setItemInHand(a);
        } else {
            user.sendMessage(ChatColor.RED+"Put an item in your hand");
        }


    }
    return true;
}

如果你能解决它,那将不胜感激。

【问题讨论】:

  • 可能你没有使用最新版本的 Bukkit 吗?你用的是什么版本?
  • 我使用 spigotmc-1.8.8-R0.1 作为 Bukkit API,这是我的服务器 jar 文件
  • 如果您使用正确的 ItemStack 类型和 Material 类型,请检查您的导入。您可能从错误的地方导入
  • 我已经导入了 org.bukkit.inventory.ItemStack;
  • 你的Material 导入?

标签: java minecraft bukkit


【解决方案1】:

对于您的问题以及 cmets 中讨论的内容,解决方案是仔细检查您的导入,并确认您正在导入 ItemStackMaterial 来自 Bukkit API

import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;

而不是像你之前那样从 net.minecraft.server.vXX 导入 anything 来处理这种行为。

【讨论】:

    【解决方案2】:

    你只是印错了东西。 而不是导入

    import net.minecraft.server.v1_8_R3.Material;
    

    你需要导入

    import org.bukkit.Material;
    

    或者只是一个简单的解决方法:

    更换

        if(!userItem.equals(Material.AIR)){     
            user.getInventory().setHelmet(userItem);
            ItemStack a = new ItemStack(Material.AIR, 1); // Error happens here
            user.getInventory().setItemInHand(a);
        } else {
            user.sendMessage(ChatColor.RED+"Put an item in your hand");
        }
    

        if(!userItem.equals(Material.AIR)){     
            user.getInventory().setHelmet(userItem);
            user.getInventory().setItemInHand(null);
        } else {
            user.sendMessage(ChatColor.RED+"Put an item in your hand");
        }
    

    这两种方法都可以解决这个问题。

    将项目槽设置为 null 与将其设置为 air 几乎相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 2022-01-06
      • 2021-10-07
      相关资源
      最近更新 更多