NakanishiのForge1.20.1のJavaMod開発講座

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

JavaでMinecraftのModを作ろう☆ 木材編① 〜板材を作ろう〜

こんばんは。Nakanishiです。

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

Kazushi_Nakanishiのこっそりサーバー

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

 

 

前回までは農業編を書かせてもらいましたが、今回からは建築に必須な木材編を書いていこうと思います。

ブロック編の応用編と思ってもらえれば良いと思います。

 

 

①テクスチャ、JSONファイルを用意しよう

pale_oak_planks

まずはベースとなる板材を作っていきます。

今回は例として、バージョン1.21.2で追加された【ペールオーク】を例に使おうと思います。

つまり、テクスチャがあればバージョンが違う木材でも再現可能という事です。

板材のテクスチャは階段フェンスフェンスゲートボタン感圧板と多岐に渡って使われる基本テクスチャとなります。

 

まず、このpngテクスチャを【textures/block】に移動させて、【models/block】【models/item】と【blockstates】を書いていきます。

 

まず【model】から書いていきます。

models/block】例)

{
  "parent": "minecraft:block/cube_all",
  "textures": {
    "all": "nakanishi_mod:block/pale_oak_planks"
  }
}



models/item】例)

{
  "parent": "nakanishi_mod:block/pale_oak_planks"
}

 

 

blockstates】例)

{
  "variants": {
    "": {
      "model": "nakanishi_mod:block/pale_oak_planks"
    }
  }
}

 

💡ポイント

nakanishi_modmodidなので、各自のmodidに変えてください

 

これで見た目を設定するJSONファイルは完成です。

 

 

②CLASSファイルを作ろう

任意ですが、今回は分かりやすくする為に【block】内に【pale_oak】の【Package】を用意しました。

 

この中に【ペールオーク】関連のブロックのCLASSファイルを入れていきます。

まず板材のCLASSファイルを作るので、名前は【Block_Pale_Oak_Planks】にしました。

 

板材はextends Blockを使います。

 


💡ポイント
Blocknet.minecraft.world.level.blockを選択してください

 

そうすると赤線が引かれますので、仮のパラメータと引数を表示させてあげます。

赤線の所で右クリックをしてもらってShow Context Actions】を選択します。

そうしたら【Creat constructor matching super】を選択してください。

 

これで仮のパラメータと引数を表示させて赤線を消すことが出来ました。

このままでは仮の状態なので、実際に引数を入力してあげます。

一旦()内を消してあげて、以下のように書いてあげます。

例)

super(Properties.copy(Blocks.OAK_PLANKS));

 

 

💡ポイント

Blocksnet.minecraft.world.level.blockを選択してください

これでオークの板材と同じ性質のブロックが完成しました。

次にブロック登録CLASSへ登録してあげましょう。

 

 

レジストリ登録をしよう

JavaでMinecraftのModを作ろう☆ ブロック編④ 〜registryクラスを作ってブロックを登録しよう〜 - NakanishiのForge1.20.1のJavaMod開発講座
ブロック登録CLASSを作ってない方は、上記の記事を参照ください。

 

登録は【Block】(ブロック状態)と【BLOCK_ITEM】(アイテム状態)の2か所の登録が必要になります。

 

ブロック状態の登録の例)

public static final RegistryObject<Block> PALE_OAK_PLANKS = BLOCKS.register("pale_oak_planks", Block_Pale_Oak_Planks::new);



アイテム状態の登録の例)

public static final RegistryObject<Item> PALE_OAK_PLANKS = BLOCK_ITEMS.register("pale_oak_planks"
                , () -> new BlockItem(Blocks.PALE_OAK_PLANKS.get(), new Item.Properties()));

 

これでゲーム内に反映させる事が出来ました。

ただ、この状態ではまだid表示されてしまうので、翻訳を追加します。

 

 

④翻訳、クリエイティブタブに追記しよう

JavaでModを作ろう☆ 共通編① ~翻訳とレシピを作ろう~ - NakanishiのForge1.20.1のJavaMod開発講座
翻訳をまだ作ってない方は、上記の記事を参照ください。

 

追記方法は今までと同じです。

例)

  "item.nakanishi_mod.pale_oak_planks": "Pale Oak Planks",
  "block.nakanishi_mod.pale_oak_planks": "Pale Oak Planks"

 

これで【Pale Oak Planks】と表示されるようになります。

 

ついでにクリエイティブタブに追加もしておきましょう。

クリエイティブタブ編 カテゴリーの記事一覧 - NakanishiのForge1.20.1のJavaMod開発講座

クリエイティブタブを追加していない方は、上記の記事を参照ください。

 

追記方法は今までと同じです。

💡ポイント

Blocksではなく、BlockItemを選択してください

 

これで名前表示クリエイティブタブの追加が終わりました。

 

ただ、このままではサバイバルモードで壊した時に何もドロップしないので、【loot_table】というものを設定していきます。

 

 

⑤サバイバルモード用の設定をしよう

まずドロップ品を設定する為の【loot_table】を設定します。

場所は

resource/data/modid/loot_tables/blocks

になります。

 

この中にJSONファイルを入れていくことになります。

例)

{
  "type": "minecraft:block",
  "pools": [
    {
      "bonus_rolls": 0.0,
      "conditions": [
        {
          "condition": "minecraft:survives_explosion"
        }
      ],
      "entries": [
        {
          "type": "minecraft:item",
          "name": "nakanishi_mod:pale_oak_planks"
        }
      ],
      "rolls": 1.0
    }
  ],
  "random_sequence": "nakanishi_mod:blocks/pale_oak_planks"
}

 

loot_tableのJSONファイル

これでサバイバルモードで壊した時に【Pale Oak Planks】がドロップします。

 

このままでも良いのですが、今回は応用編も兼ねてもう1つ設定を加えます。

mineable】という適正ツールを決める設定を加えます。

 

mineable】の場所は

resource/data/minecraft/tags/blocks/mineable

となります。

 

今回は板材なので、斧が適正ツールになります。

そのため、

resources/data/minecraft/tags/blocks/mineable/axe.json

に書いていきます。

 

 

例)

{
  "values": [
    "nakanishi_mod:pale_oak_planks"
  ]
}

💡ポイント

・今回は例として直接ブロックを書きましたが、実際の板材はタグで括られていて、それを【mineable/axe.json】に登録しています。

 

これで適正ツールが斧になり、斧で素早く壊すことが出来るようになります。

 

 

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

次回は原木の作り方を書かせてもらおうと思います。

 

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

 

【次回記事】

JavaでMinecraftのModを作ろう☆ 木材編② 〜原木を作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座