Java Bukkit定制库存产卵(#2)

Java Bukkit定制库存产卵(#2),java,bukkit,Java,Bukkit,我试图在我的自定义GUI菜单中添加一个爬行鸡蛋。 这是我迄今为止完成的工作: ItemStack stack = new ItemStack(Material.MONSTER_EGG, 1, EntityType.CREEPER.getTypeId()); ItemMeta meta = stack.getItemMeta(); meta.setDisplayName(ChatColor.AQUA + "Creeper"); stack.setItemMeta(

我试图在我的自定义GUI菜单中添加一个爬行鸡蛋。 这是我迄今为止完成的工作:

    ItemStack stack = new ItemStack(Material.MONSTER_EGG, 1, EntityType.CREEPER.getTypeId());

    ItemMeta meta = stack.getItemMeta();
    meta.setDisplayName(ChatColor.AQUA + "Creeper");
    stack.setItemMeta(meta);
    inv.setItem(1, stack);
    player.openInventory(inv);
    return true;
我的问题是:如何将爬虫蛋添加到我的InventoryClick类中

    Player player = (Player) event.getWhoClicked();
    ItemStack item = event.getCurrentItem();
    if (item.getType() == Material.blah blah) {
        player.performCommand("blah blah");

        event.setCancelled(true);
    }

要检索您创建的特定项目,请检查您单击的怪物蛋是否为爬行怪物蛋

检查是否是爬行动物产卵:

ItemStack item;
boolean isSpawnEgg = item.getType() == Material.MONSTER_EGG;
    if (isSpawnEgg) {
        SpawnEgg egg = (SpawnEgg) item.getData();
        EntityType type = egg.getSpawnedType();
        if (type.equals(EntityType.CREEPER) ){
        //IsACreeper
        }
    }
如果版本低于1.9:

ItemStack item;
boolean isSpawnEgg = item.getType() == Material.MONSTER_EGG;
    if (isSpawnEgg) {
        SpawnEgg egg = (SpawnEgg) item.getData();
        EntityType type = egg.getSpawnedType();
        if (type.equals(EntityType.CREEPER) ){
        //IsACreeper
        }
    }
如果版本为1.9或更高版本:

ItemStack item;
boolean isSpawnEgg = item.getType() == Material.MONSTER_EGG;
    if (isSpawnEgg) {
        SpawnEgg egg = (SpawnEgg) item.getData();
        EntityType type = egg.getSpawnedType();
        if (type.equals(EntityType.CREEPER) ){
        //IsACreeper
        }
    }

目前,未使用NBT的Bukkit/Spigot API中不支持。如果您想使用NBT,可能会有所帮助。

要检索您创建的特定项目,请检查您单击的怪物蛋是否是爬行怪物蛋

检查是否是爬行动物产卵:

ItemStack item;
boolean isSpawnEgg = item.getType() == Material.MONSTER_EGG;
    if (isSpawnEgg) {
        SpawnEgg egg = (SpawnEgg) item.getData();
        EntityType type = egg.getSpawnedType();
        if (type.equals(EntityType.CREEPER) ){
        //IsACreeper
        }
    }
如果版本低于1.9:

ItemStack item;
boolean isSpawnEgg = item.getType() == Material.MONSTER_EGG;
    if (isSpawnEgg) {
        SpawnEgg egg = (SpawnEgg) item.getData();
        EntityType type = egg.getSpawnedType();
        if (type.equals(EntityType.CREEPER) ){
        //IsACreeper
        }
    }
如果版本为1.9或更高版本:

ItemStack item;
boolean isSpawnEgg = item.getType() == Material.MONSTER_EGG;
    if (isSpawnEgg) {
        SpawnEgg egg = (SpawnEgg) item.getData();
        EntityType type = egg.getSpawnedType();
        if (type.equals(EntityType.CREEPER) ){
        //IsACreeper
        }
    }

目前,未使用NBT的Bukkit/Spigot API中不支持。如果您想使用NBT,可能会有所帮助。

添加是什么意思?你想干什么?我完成了我的第一堂课,在这堂课里加入了爬山虎蛋。但是我的InventoryClick也需要它,所以当你点击它时,它知道,当你点击鸡蛋时,它知道执行一个命令。所以我很困惑,因为如果我在GUI中添加一个爬行蛋,我不知道在inventoryClick类中该做什么:为什么会有单独的类?将inventoryClick和执行GUI open的实际主命令分开。但是为什么?不能在同一类中设置事件侦听器吗?如果你确实需要,为这个项目设置一个getter,你说的add是什么意思?你想干什么?我完成了我的第一堂课,在这堂课里加入了爬山虎蛋。但是我的InventoryClick也需要它,所以当你点击它时,它知道,当你点击鸡蛋时,它知道执行一个命令。所以我很困惑,因为如果我在GUI中添加一个爬行蛋,我不知道在inventoryClick类中该做什么:为什么会有单独的类?将inventoryClick和执行GUI open的实际主命令分开。但是为什么?不能在同一类中设置事件侦听器吗?如果您确实需要,请为该项设置一个getter为什么1.9需要其他方法来获取爬行虫卵?@Ferrybig从SPIGET-1592开始,SparkedType将不再工作,因为该类型现在存储在元数据中,因此该方法无法工作。为什么1.9需要其他方法来获取爬行虫卵?@Ferrybig从SPIGET-1592开始,spawnedtype将不再工作,因为该类型现在存储在元数据中,因此spawnedtype的方法将无法工作。