Bukkit插件開發(fā)教程 - ItemStack(物品堆)

物品堆 - 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);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,287評(píng)論 25 708
  • 2018.2.15周四 大年三十除夕夜。 前兩天的忙碌也結(jié)束了,又是晚起的早上,家人準(zhǔn)備去超市采購(gòu)食材,我就在家收...
    幻嶺之漫閱讀 286評(píng)論 0 1
  • 《我們是云一樣高的神》 文‖大漠煙云[甘肅武威] 思維在這個(gè)季節(jié) 染成金色 有了一定的重量 我們是云一樣高的神 將...
    大漠煙云閱讀 247評(píng)論 0 4
  • ――在的都別走,走的別回頭 每個(gè)出現(xiàn)在我生活中的人,都有他特有的意義。 有的人讓我知道“不管你...
    mickey九閱讀 309評(píng)論 0 0