物品堆 - ItemStack
學(xué)習(xí)目標(biāo)
- 了解ItemStack的創(chuàng)建
- 了解ItemStack中的ItemMeta
- 了解ItemMeta中對(duì)于物品的Lore和Displayname的基本操作
了解ItemStack的創(chuàng)建
我們先來(lái)看看ItemStack的幾個(gè)構(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過(guò)的方法,所以,可以盡量不去使用這些構(gòu)造方法
那么我們要怎么去構(gòu)造一個(gè)ItemStack呢?直接就new就可以了
ItemStack itemStack = new ItemStack();
那么我們?cè)谏厦娴臉?gòu)造方法里看到有個(gè)Material,那么這個(gè)Material是什么呢?Material是所有物品的枚舉,它是一個(gè)枚舉類,里面存放的是所有Minecraft原版中的物品枚舉,比如蘋果可以使用 Material.APPLE 來(lái)表示
范例: 創(chuàng)建一個(gè)type為蘋果的ItemStack
// 實(shí)例化一個(gè)itemStack,并且這個(gè)itemStack的type是蘋果
ItemStack itemStack = new ItemStack(Material.APPLE);
范例: 創(chuàng)建一個(gè)type為蘋果,并且數(shù)量為16的的ItemStack
// 實(shí)例化一個(gè)itemStack,并且這個(gè)itemStack的type是蘋果
ItemStack itemStack = new ItemStack(Material.APPLE, 16);
范例: 創(chuàng)建一個(gè)type為鉆石劍, 數(shù)量為1, 損害值為20的ItemStack
// 實(shí)例化一個(gè)itemStack,并且這個(gè)itemStack的type是蘋果
ItemStack itemStack = new ItemStack(Material.DIAMOND_SWORD, 1, (short) 20);
相信通過(guò)上方的范例你可以了解ItemStack的創(chuàng)建了~
了解ItemStack中的ItemMeta
ItemMeta我們稱之為元數(shù)據(jù),它是物品NBT的一個(gè)包裝,它里面封裝了一些我們可以很輕松的設(shè)置ItemStack的DisplayName, Lore等內(nèi)容
范例: 獲取一個(gè)ItemStack的元數(shù)據(jù)
ItemStack itemStack = new ItemStack(Material.APPLE);
ItemMeta itemMeta = itemStack.getItemMeta();
這里要注意的是此處的itemMeta是ItemStack內(nèi)ItemMeta的一個(gè)clone版本, 我們對(duì)其操作完后需要再調(diào)用ItemStack的setItemMeta(ItemMeta itemMeta)進(jìn)行設(shè)置回去
了解ItemMeta中對(duì)于物品的Lore和Displayname的基本操作
ItemMeta里有兩個(gè)比較常用的方法
- setDisplayName(String name)
- setLore(List<String> lore)
那么一個(gè)是對(duì)物品的displayName進(jìn)行設(shè)置一個(gè)是對(duì)物品的Lore進(jìn)行設(shè)置,直接上范例吧..
范例: 設(shè)置物品的displayName和Lore
ItemStack itemStack = new ItemStack(Material.APPLE);
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName("§a綠蘋果");
itemMeta.setLore(Arrays.asList("§f這是一個(gè)綠色的蘋果"));
itemStack.setItemMeta(itemMeta);