NakanishiのForge1.20.1のJavaMod開発講座

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

JavaでMinecraftのModを作ろう☆ 木材編③ 〜ハーフブロックを作ろう〜

こんばんは。Nakanishiです。

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

Kazushi_Nakanishiのこっそりサーバー

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

 

 

前回のおさらい

木材の原木ブロック木ブロックWood)を追加しました。

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

今回はハーフブロックを作っていこうと思います。

 

 

JSONファイルを用意しよう

テクスチャは木材編①で扱った【pale_oak_planks.png】を使います。

なので見た目で必要なものは【models/block】【models/item】【blockstates】になります。

 

まず【models/block】から作っていきましょう。

ブロックの【model】は下付きのもの上付きのもの2種類用意する必要があります。

pale_oak_slab.json例)

{
  "parent": "minecraft:block/slab",
  "textures": {
    "bottom": "nakanishi_mod:block/pale_oak_planks",
    "side": "nakanishi_mod:block/pale_oak_planks",
    "top": "nakanishi_mod:block/pale_oak_planks"
  }
}

pale_oak_slab.json

pale_oak_slab_top.json例)
{
  "parent": "minecraft:block/slab_top",
  "textures": {
    "bottom": "nakanishi_mod:block/pale_oak_planks",
    "side": "nakanishi_mod:block/pale_oak_planks",
    "top": "nakanishi_mod:block/pale_oak_planks"
  }
}

 

pale_oak_slab_top.json

これでブロック側の【model】のJSONファイルは完成です。

次にアイテム側の【model】のJSONファイルを書いていきましょう。

 

pale_oak_slab.json例)

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

 

pale_oak_slab.json

これで【model】のJSONファイルは完成です。

続いて【blockstate】のJSONファイルを作っていきます。

 

pale_oak_slab.json例)

{
  "variants": {
    "type=bottom": {
      "model": "nakanishi_mod:block/pale_oak_slab"
    },
    "type=double": {
      "model": "nakanishi_mod:block/pale_oak_planks"
    },
    "type=top": {
      "model": "nakanishi_mod:block/pale_oak_slab_top"
    }
  }
}

pale_oak_slab.json

💡ポイント

"type=double"pale_oak_planksを指定している通り、先に板材【pale_oak_planks】を作っていないと、重ねた際に正しい挙動をしません

なので、ハーフブロックを作る際は、必ず先に板材を作ってください。

 

これで見た目のJSONファイルが揃いました。

この流れでCLASSファイルも作っていきます。

 

 

②CLASSファイルを作ろう

名前は【Block_Pale_Oak_Slab】にしました。

ここからクラスを作っていくのですが、ハーフブロックは【SlabBlock】というクラスを使います。

例)

extends SlabBlock

 

ここで赤線が出ているので、前回同様の方法を使って仮のパラメータと引数を表示させて赤線を消してあげます。

 

仮のパラメータと引数を表示

ここで()内を消してあげて、引数を入力していきます。

例)

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

 

完成したBlock_Pale_Oak_SlabのCLASSファイル

これでCLASSファイルは完成です。

この流れでレジストリ登録をしていきます。

 

登録は板材同様ブロック状態アイテム状態の登録を行います。

 

ブロックの登録例)

public static final RegistryObject<Block> PALE_OAK_SLAB = BLOCKS.register("pale_oak_slab", Block_Pale_Oak_Slab::new);

 

ブロックの登録

 

アイテムの登録例)

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

アイテムの登録

これで【Pale Oak Slab】がゲームに反映されました。
このまま前回同様、残りの登録と追記をしていきます。

 

 

③設定を追加しよう

まず翻訳から追記していきます。

追記例)

"item.nakanishi_mod.pale_oak_slab": "Pale Oak Slab",
"block.nakanishi_mod.pale_oak_slab": "Pale Oak Slab"

 

翻訳(en_us.json

次にクリエイティブタブのリストに追記します。

 

次にサバイバルモードで破壊した際にドロップするように、【loot_table】を追加します。

 

pale_oak_slab.json例)

{
  "type": "minecraft:block",
  "pools": [
    {
      "bonus_rolls": 0.0,
      "entries": [
        {
          "type": "minecraft:item",
          "functions": [
            {
              "add": false,
              "conditions": [
                {
                  "block": "nakanishi_mod:pale_oak_slab",
                  "condition": "minecraft:block_state_property",
                  "properties": {
                    "type": "double"
                  }
                }
              ],
              "count": 2.0,
              "function": "minecraft:set_count"
            },
            {
              "function": "minecraft:explosion_decay"
            }
          ],
          "name": "nakanishi_mod:pale_oak_slab"
        }
      ],
      "rolls": 1.0
    }
  ],
  "random_sequence": "nakanishi_mod:blocks/pale_oak_slab"
}

 

💡ポイント

"type": "double""count": 2.0,になっているのは、重ねた際には板材の振る舞いはするけど、破壊したらハーフブロックが2つドロップする。という意味です

 

最後にmineable】を追記して完成です。

追記例)

{
  "values": [
    "nakanishi_mod:pale_oak_log",
    "nakanishi_mod:pale_oak_wood",
    "nakanishi_mod:pale_oak_planks",
    "nakanishi_mod:pale_oak_slab"
  ]
}

 

mineable/axe.json

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

 

設置の確認

きちんと下付き、上付き、重ねた時で正しいテクスチャが反映されていますね。

 

サバイバルモードで破壊確認

きちんと適正ツールも反映され、ドロップ数も正しくなっています。

 

これでハーフブロックは完成です。

 

 

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

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

 

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

 

次回記事

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