iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0

掉落物與合成表

掉落物

在Minecraft中,破壞方塊或殺死生物通常都會掉落一些東西,例如破壞鐵礦會掉落鐵原礦,我們的金屬磚也需要撰寫掉落物才能正常掉落對應的方塊。

為了寫掉落物,我們需要在resources資料夾中建立一個data資料夾,並在其中建立一個[你的ModID]資料夾,在裡面在建一個資料夾叫loot_tables,其中在建一個blocks資料夾,最後看起來就像這樣。https://ithelp.ithome.com.tw/upload/images/20240903/20161797VC1JwSzDn8.png
位置是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 這個控制是否在首次解鎖或使用此配方時顯示合成通知。

成果

https://ithelp.ithome.com.tw/upload/images/20240904/20161797lt16wuPVSV.png
https://ithelp.ithome.com.tw/upload/images/20240904/20161797jbwcpapVeY.pnghttps://ithelp.ithome.com.tw/upload/images/20240904/20161797t4MOv8fDEH.png


上一篇
Minecraft Fabric Mod 模組製作 DAY4
下一篇
Minecraft Fabric Mod 模組製作 DAY6
系列文
Minecraft JAVA Fabric 模組製作 : 成為真正的創世神30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言