物品堆 - ItemStack
學(xué)習(xí)目標
- 了解ItemStack的創(chuàng)建
- 了解ItemStack中的ItemMeta
- 了解ItemMeta中對于物品的Lore和Displayname的基本操作
了解ItemStack的創(chuàng)建
我們先來看看ItemStack的幾個構(gòu)造方法
ItemStack(ItemStack stack)
ItemStack(Material type)
ItemStack(Material type, int amount)
ItemStack(Material type, int amount, short damage)
ItemStack(int type)
ItemStack(int type, int amount)
ItemStack(int type, int amount, short damage, java.lang.Byte data)
ItemStack(Material type, int amount, short damage, java.lang.Byte data)
在上方的構(gòu)造方法中畫刪除線的都是@Deprecated過的方法,所以,可以盡量不去使用這些構(gòu)造方法
那么我們要怎么去構(gòu)造一個ItemStack呢寓落?直接就new就可以了
ItemStack itemStack = new ItemStack();
那么我們在上面的構(gòu)造方法里看到有個Material溶诞,那么這個Material是什么呢?Material是所有物品的枚舉拧篮,它是一個枚舉類词渤,里面存放的是所有Minecraft原版中的物品枚舉,比如蘋果可以使用 Material.APPLE 來表示
范例: 創(chuàng)建一個type為蘋果的ItemStack
// 實例化一個itemStack串绩,并且這個itemStack的type是蘋果
ItemStack itemStack = new ItemStack(Material.APPLE);
范例: 創(chuàng)建一個type為蘋果缺虐,并且數(shù)量為16的的ItemStack
// 實例化一個itemStack,并且這個itemStack的type是蘋果
ItemStack itemStack = new ItemStack(Material.APPLE, 16);
范例: 創(chuàng)建一個type為鉆石劍, 數(shù)量為1, 損害值為20的ItemStack
// 實例化一個itemStack礁凡,并且這個itemStack的type是蘋果
ItemStack itemStack = new ItemStack(Material.DIAMOND_SWORD, 1, (short) 20);
相信通過上方的范例你可以了解ItemStack的創(chuàng)建了~
了解ItemStack中的ItemMeta
ItemMeta我們稱之為元數(shù)據(jù)高氮,它是物品NBT的一個包裝慧妄,它里面封裝了一些我們可以很輕松的設(shè)置ItemStack的DisplayName, Lore等內(nèi)容
范例: 獲取一個ItemStack的元數(shù)據(jù)
ItemStack itemStack = new ItemStack(Material.APPLE);
ItemMeta itemMeta = itemStack.getItemMeta();
這里要注意的是此處的itemMeta是ItemStack內(nèi)ItemMeta的一個clone版本, 我們對其操作完后需要再調(diào)用ItemStack的setItemMeta(ItemMeta itemMeta)進行設(shè)置回去
了解ItemMeta中對于物品的Lore和Displayname的基本操作
ItemMeta里有兩個比較常用的方法
- setDisplayName(String name)
- setLore(List<String> lore)
那么一個是對物品的displayName進行設(shè)置一個是對物品的Lore進行設(shè)置,直接上范例吧..
范例: 設(shè)置物品的displayName和Lore
ItemStack itemStack = new ItemStack(Material.APPLE);
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName("§a綠蘋果");
itemMeta.setLore(Arrays.asList("§f這是一個綠色的蘋果"));
itemStack.setItemMeta(itemMeta);