NakanishiのForge1.20.1のJavaMod開発講座

MoreCropsDelightの作者、NakanishiがMod制作について書いていきます。

JavaでMinecraftのModを作ろう☆ 農業編④ 〜農作物(ニンジン)を完成させよう〜

こんばんは。Nakanishiです。

Discordサーバーを運営中です。

Kazushi_Nakanishiのこっそりサーバー

一緒にゆるくMod制作を楽しみませんか?
※)日本語での会話ができる方のみ参加可能です。
  条件に合わない方は参加をご遠慮ください。

 

 

前回のおさらい

SeedItemアイテム)のCLASSファイルを完成させ、透過処理のCLASSファイルも作りました。

JavaでMinecraftのModを作ろう☆ 農業編③ 〜SeedItem(アイテム)のCLASSファイルを作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座

今回は【翻訳】と【loot_table】の処理を書き、農作物【Prismarine Carrots】を完成させようと思います。

 

 

①翻訳を追記しよう

JavaでModを作ろう☆ 共通編① ~翻訳とレシピを作ろう~ - NakanishiのForge1.20.1のJavaMod開発講座

翻訳をまだ作ってない方は上記の記事を参照ください。

 

翻訳の追記は今までと同じ方法をとります。

例)
"block.nakanishi_mod.prismarine_carrots": "Prismarine Carrot"

 

 

②loot_tableを追加しよう

loot_table】はブロックを壊した際に、何がドロップするかを指定するJSONファイルです。これがないと何もドロップしなくなります。

 

ブロックの【loot_table】は以下の位置に作ります。

resource/data/modid/loot_tables/blocks

 

自分のmodidはnakanishi_modなので

resource/data/nakanishi_mod/loot_tables/blocks

になります。

 

resource内のフォルダ例

ここに【loot_table】を作っていきます。

 

今回は例として、公式の【carrots】のJSONファイルを編集しようと思います。

 

公式のcarrotsloot_tableJSONファイル例)

{
  "type": "minecraft:block",
  "functions": [
    {
      "function": "minecraft:explosion_decay"
    }
  ],
  "pools": [
    {
      "bonus_rolls": 0.0,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:carrot"
        }
      ],
      "rolls": 1.0
    },
    {
      "bonus_rolls": 0.0,
      "conditions": [
        {
          "block": "minecraft:carrots",
          "condition": "minecraft:block_state_property",
          "properties": {
            "age": "7"
          }
        }
      ],
      "entries": [
        {
          "type": "minecraft:item",
          "functions": [
            {
              "enchantment": "minecraft:fortune",
              "formula": "minecraft:binomial_with_bonus_count",
              "function": "minecraft:apply_bonus",
              "parameters": {
                "extra": 3,
                "probability": 0.5714286
              }
            }
          ],
          "name": "minecraft:carrot"
        }
      ],
      "rolls": 1.0
    }
  ],
  "random_sequence": "minecraft:blocks/carrots"
}

💡ポイント

・【carrot】と【carrots】の違いに気を付けてください。

・【carrot】はアイテム、【carrots】はブロックです。

 

長いJSONファイルに感じるかもしれませんが、変更するのは数か所なので、安心してください。

変更するのは

・"name": "minecraft:carrot"

・"block": "minecraft:carrots"

・"random_sequence": "minecraft:blocks/carrots"

の3点です。

 

編集例)

{
  "type": "minecraft:block",
  "functions": [
    {
      "function": "minecraft:explosion_decay"
    }
  ],
  "pools": [
    {
      "bonus_rolls": 0.0,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "nakanishi_mod:prismarine_carrot"
        }
      ],
      "rolls": 1.0
    },
    {
      "bonus_rolls": 0.0,
      "conditions": [
        {
          "block": "nakanishi_mod:prismarine_carrots",
          "condition": "minecraft:block_state_property",
          "properties": {
            "age": "7"
          }
        }
      ],
      "entries": [
        {
          "type": "minecraft:item",
          "functions": [
            {
              "enchantment": "minecraft:fortune",
              "formula": "minecraft:binomial_with_bonus_count",
              "function": "minecraft:apply_bonus",
              "parameters": {
                "extra": 3,
                "probability": 0.5714286
              }
            }
          ],
          "name": "nakanishi_mod:prismarine_carrot"
        }
      ],
      "rolls": 1.0
    }
  ],
  "random_sequence": "nakanishi_mod:blocks/prismarine_carrots"
}

これで公式のニンジンと同じドロップの挙動になります。

 

それでは実際に動作確認をしてみましょう。

 

植えて時間経過で成長するか動作確認

Jadeを入れたことで成長の段階を無事に確認出来ました。

当たり判定も公式のニンジンと同じになっています。

 

では、この成熟状態で破壊してみましょう。

サバイバルモードで実験

今回は4つドロップしました。

では幸運3を付けたクワで回収してみましょう。

幸運3のクワで実験

今回は6つドロップしました。

幸運の効果も適応されてますね。

 

これで無事に農作物ニンジンが完成しました。

今回は作りやすさを重視して【CarrotBlock】で作ってみましたが、オリジナルの作物を作る時は主に【CropBlock】を使います。

その場合、当たり判定なども1から設定することになるので、既存の作物から練習するのが良いと思います。

 

 

ここまでお疲れ様でした☆

 

もしこの記事が参考になった、または「JavaでMod制作を始めてみたい!」と思っていただけたら、ぜひ読者登録をお願いします。
それではまた次回お会いしましょう。
ここまでお読みいただき、ありがとうございました。

 

Skin by [mickmick] (Planet Minecraft)  
Source: Fate/Grand Order- Frankenstein Skin Minecraft Skin