在Minecraft中,破壞方塊或殺死生物通常都會掉落一些東西,例如破壞鐵礦會掉落鐵原礦,我們的金屬磚也需要撰寫掉落物才能正常掉落對應的方塊。
為了寫掉落物,我們需要在resources資料夾中建立一個data資料夾,並在其中建立一個[你的ModID]資料夾,在裡面在建一個資料夾叫loot_tables,其中在建一個blocks資料夾,最後看起來就像這樣。
位置是resources/data/como/loot_tables/blocks
然後我們需要一個JSON檔,記得這個JSON檔要跟你的物品名稱一樣,我的是siderite_block.json,裡面這樣寫
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "como:siderite_block"
}
],
"rolls": 1.0
}
]
}
"type": "minecraft:block" 說明這個掉落物表是為掉落物設定的。
pools 代表一個掉落物池,每個池都有一組淺在地掉落物跟規則與概率。
bonus_roll代表會不會有額為掉落物的嘗試,0.0代表沒有。
conditions代表執行這個掉落物池的條件。
"condition": "minecraft:survives_explosion" 這個條件表示方塊必須在爆炸中生存下來才能掉落物品。也就是說,如果方塊是被爆炸摧毀的,它不會掉落任何東西。
entries 定義了實際可能掉落的物品。每個條目表示一個可能的掉落物品或掉落表。
type這個類型表示該條目會掉落一個具體的物品,而name代表這個掉落物的名稱。
roll代表這個掉落物池的觸發次數
現在我們有一塊金屬磚跟一個金屬錠了,我們都知道在minecraft中金屬錠跟金屬磚是可以互相轉換的,那要做到這一點我們就需要用到合成表。
我們將金屬磚換成金屬錠是一種無序合成,代表我不需要按照特定的方式在合成台排序就可以完成合成,而與之相反的是將金屬錠合成成金屬磚,我們需要將金屬錠排列成九宮格才能合成,這屬於有序合成。
製作合成表我們需要先建立resources/data/[MODID]/recipes,並且在裡面建立一個JSON檔,我通常用這個合成表的產物命名,例如將殞鐵磚分解成錠我叫siderite.json,因為產物是siderite。
裡面我們這樣寫
{
"type": "minecraft:crafting_shapeless",
"category": "building",
"ingredients": [
{
"item": "como:siderite_block"
}
],
"result": {
"count": 9,
"item": "como:siderite"
}
}
type中的shapeles代表這個合成表是無序的
"category": "building"代表這個合成表屬於建築類,
ingredients是合成中用的合成物
result是合成出來的結果count代表數量,item代表產物
合成磚的合成表我們叫他siderite_block.json,我們這樣寫
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"#": {
"item": "como:siderite"
}
},
"pattern": [
"###",
"###",
"###"
],
"result": {
"item": "como:siderite_block"
},
"show_notification": true
}
這裡有幾點不太一樣,首先type是crafting_shaped代表有序合成,category是misc其他類,"key"代表合成表中我們使用的配方的類型,我們使用了#代表siderite,並且在下方的pattern中使用#來表現合成表應該擺放的樣子,show_notification: true 這個控制是否在首次解鎖或使用此配方時顯示合成通知。