Crafttweaker(1.12.2)入門5:礦物辭典,材料

礦物辭典(https://docs.blamejared.com/1.12/en/Vanilla/OreDict/IOreDictEntry):
礦物辭典(OreDictionary)不是原版概念,而是1.12.2及更低版本的Forge概念(1.13及更高版本被吸收為一個泛用性更廣的原版概念——Tag,即標(biāo)簽),用于改善模組之間的兼容性,詳見https://mcforge-cn.readthedocs.io/zh/latest/utilities/oredictionary
與IItemStack一樣,礦物辭典也可以用尖括號調(diào)用,詳見https://docs.blamejared.com/1.12/en/Vanilla/Brackets/Bracket_Ore
礦辭相信模組玩家并不陌生,如確有不知請前往各mc論壇、wiki等網(wǎng)站自行了解。因為本篇已是入門章節(jié)的最后一部分,后續(xù)章節(jié)在不了解一些原版或Forge概念(如礦物辭典、方塊狀態(tài)、維度/世界、NBT、屬性修飾符、游戲刻、毫桶等)時會導(dǎo)致理解起來困難重重,因此請?zhí)崆傲私猓?strong>否則請止步于此。
在主手持物品輸入指令/ct hand后,應(yīng)當(dāng)只會出現(xiàn)以下兩種情況:


有礦辭如橡木,無礦辭如附魔金蘋果,都已經(jīng)顯示在如圖的第二行中了。橡木的礦辭在zs中尖括號調(diào)用的結(jié)果為<ore:logWood>,與物品堆相比其結(jié)構(gòu)真的是簡單多了,形如<ore:orename>:
ore用于聲明該尖括號引用會返回一個礦辭IOreDictEntry,與“item:”不同,它是不能省略的
orename是礦辭名字。
注意一個物品完全可以有多個礦辭,因此/ct hand獲得的礦辭不會自動從消息欄復(fù)制到粘貼板上(一方面是已經(jīng)復(fù)制物品堆到粘貼板了,另一方面多個礦辭下也不可能自動知道復(fù)制哪個),請用鼠標(biāo)對準(zhǔn)所需的礦辭單擊以復(fù)制。
材料(https://docs.blamejared.com/1.12/en/Vanilla/Variable_Types/IIngredient):
材料IIngredient的概念在入門1講到添加有序配方時就提過了,當(dāng)時只說把a(bǔ)ddShaped()方法的inputs參數(shù)的類型IIngredient[][]當(dāng)成IItemStack[][]就好了,實(shí)際上IIngredient還能寫成別的——
礦辭IOreDictEntry
流體堆ILiquidStack(https://docs.blamejared.com/1.12/en/Vanilla/Liquids/ILiquidStack)
特別地,與工作臺配方相關(guān)的IIngredient還能寫成——
物品條件(https://docs.blamejared.com/1.12/en/Vanilla/Items/Item_Conditions)
物品轉(zhuǎn)換器(https://docs.blamejared.com/1.12/en/Vanilla/Items/Item_Transformers)
有了2篇預(yù)科與5篇入門的基礎(chǔ)知識,請保持自信看懂以下代碼:
1. 礦辭
顯然按照入門1,似乎應(yīng)當(dāng)寫成這樣:
實(shí)際上可采用右空值省略原則把從右往左掃描到的所有null全部省略,最終簡化成最上面那樣。
2. 流體堆
在原版中,以上代碼等效于:
3. 物品條件
物品條件(Item Conditions)用于篩選符合條件的物品。下面這個配方使木斧可以“一斧頭把橡木劈成8個橡木木板”,合成后木斧會消失:
4. 物品轉(zhuǎn)換器
物品轉(zhuǎn)換器(Item Transformers)用于改變物品參與合成后的狀態(tài)。下面這個配方與上面的類似(木斧換成了石斧):
需要注意寫工作臺配方時如果涉及有耐久度的物品盡量不要單獨(dú)用物品條件。以上面的“木斧”代碼為例,實(shí)際測試中按住shift合成物品時木斧甚至可以“劈開一組原木”后才消失,因此應(yīng)當(dāng)盡量使用物品轉(zhuǎn)換器,或是物品條件與物品轉(zhuǎn)換器搭配使用,如:
這樣按住shift合成時每進(jìn)行一次合成木斧即耐久度減1,累計到耐久度減半后即無法繼續(xù)合成,也就克服了單獨(dú)用物品條件時的缺陷。