初心者modderの備忘録

マイクラのmodを作りたくて、初めて見たのですが難しくて忘れそうなので自分用の備忘録も兼ねてブログにしようと思います

3日目 レシピの追加

今回は簡単なのでレシピの追加をやってしまおうと思います。

レシピはjsonファイルを追加するだけで比較的単純に追加できます。
トマト9個からトマトブロックを作るレシピを作成します。
まず、assets.testmodにrecipesというパッケージを作ります。この中に、適当な名前のjsonファイルを作ります。

assets/testmod/recipes/block_tomato.json

{
  "type": "minecraft:crafting_shaped",
  "pattern": [
    "AAA",
    "AAA",
    "AAA"
  ],
  "key": {
    "A": {
      "item": "testmod:tomato"
    }
  },
  "result": {
    "item": "testmod:block_tomato"
  }
}

このAという文字はなんでもよくて、#とか$みたいに記号でも大丈夫です。
一度起動して確かめてみます。

f:id:json_fileman:20181230185822p:plain

ちゃんとレシピが追加されています。


次に、2つ以上の素材を使用する場合には次のように書き換えます。
assets/testmod/recipes/test.json

{
  "type": "minecraft:crafting_shaped",
  "pattern": [
    "AAA",
    "ACA",
    "BBB"
  ],
  "key": {
    "A": {
      "item": "testmod:tomato"
    },
    "B": {
      "item": "testmod:block_tomato"
    },
    "C": {
      "item": "minecraft:skull",
      "data": 3
    }
  },
  "result": {
    "item": "testmod:block_tomato"
  }
}

keyのところに
"X":{アイテム}の形でカンマ(,)で区切って追加していけば大丈夫です。
ちなにみ、Cのようなメタデータを持つアイテムはdataでその番号を指定すればよいようです。
skullの3はsteveの頭です。笑

f:id:json_fileman:20181230190716p:plain

ちゃんと追加されました。


最後に不定形レシピの追加をやります。
不定形レシピとは素材の種類があっていればどんな形に並べてもクラフトできるレシピですね。キノコシチューなんかがそうですね。赤キノコと茶キノコと木のボウル(空)を並べればどんな形でもキノコシチューがクラフトできます。
assets/testmod/recipes/test2.json

{
  "type": "minecraft:crafting_shapeless",

"ingredients": [
    {
      "item": "testmod:tomato"
    },
    {
      "item": "testmod:tomato"
    },
    {
      "item": "minecraft:skull",
      "data": 5
      }
  ],
  "result": {
    "item": "testmod:block_tomato",
    "count":20
  }
}

主な違いはtypeのshapedをshapelessに変えるのと、keyをingredientsに変えるくらいですね。
あと、書くのを忘れていたのですがresultのところでcountを追加するとクラフトで得られる個数を指定できます。

f:id:json_fileman:20181230192242p:plain

f:id:json_fileman:20181230192253p:plain

f:id:json_fileman:20181230192303p:plain

不定形だとこんな感じになります。ちゃんと20個クラフトされていますね!


ちなみにjsonファイルはカンマやコロン、括弧などが少しでも違うと読み込まれません。そのくせプログラム本体には直接関与してないのでコンパイルエラーも吐かなくて厄介ですね。
実はjsonファイルが正しいかどうかをチェックしてくれるサイトがあって、jsonファイルの中身を張り付けるとエラーがあるかどうかを教えてくれるので非常に便利です。
JSONLint - The JSON Validator

たとえば、さっきの不定形レシピのresultの前のカンマを削除してチェックをかけると

f:id:json_fileman:20181230193611p:plain

こんな感じでエラーになります。
正しいときはValid JSONと表示されるので、自分でjsonファイルを描いたときはチェックしてから実行するのがいいですね!


次回は、アイテムに右クリックでなにかする機能を持たせようと思います。