2017-10-02 2 views
0

Actuellement, j'essaie de faire un plugin autosmelt et chaque fois que le joueur casse le bloc, il lit le bloc cassé et donne le bloc fondu au joueur. Maintenant, lapis lazuli ne peuvent pas besoin d'être fondu dans le jeu, mais étant donné que, lorsque le bloc est cassé, il annule la rupture du bloc et casse manuellement alors donne l'article, je dois faire:Lapis Lazuli ItemStack ID

player.getInventory().addItem(new ItemStack(Material.LAPIS, 1)); 
player.updateInventory(); 

Mais comme certains d'entre vous le savent, Material.LAPIS n'est pas un matériau bukkit/spigot. Ce qui signifie que je devrais faire:

player.getInventory().addItem(new ItemStack(Material.INK_SACK, 1, (short) 4)); 
player.updateInventory(); 

Depuis lapis est techniquement un élément de teinture. Mais bien sûr, cela ne fonctionne pas pour une raison que je ne connais pas. J'utilise l'API spigot 1.10.2 alors peut-être que cela fonctionne en API 1.11 ou 1.12 mais je ne suis pas sûr. Donc, si quelqu'un a une solution pour donner au joueur le lapis, s'il vous plaît faites le moi savoir.

Répondre

2

Essayez ceci:

Dye dye = new Dye(); dye.setColor(DyeColor.BLUE); ItemStack lapis = dye.toItemStack();

0

1er variante

ItemStack yourInkSack = new ItemStack(Material.INK_SACK, 1, (short) 4); 

2ème variante

ItemStack yourInkSack = new ItemStack(Material.INK_SACK); 
yourInkSack.setDurability((short) 4); 
+0

Je ne voulais pas le bloc, je voulais dire LAPIS le colorant, son ID d'article est 351: 4. Il a une valeur de données et je ne sais pas comment ajouter une valeur de données à une pile d'éléments. – Potato

+0

Il existe une méthode ItemStack.setDurability (data), où data est votre 4. – LuckyZeeRo

+0

setDurability ne fonctionnait pas non plus. – Potato