NakanishiのForge1.20.1のJavaMod開発講座

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

JavaでMinecraftのModを作ろう☆ GUIブロック編① 〜仮のブロックを作ろう〜

こんばんは。Nakanishiです。

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

Kazushi_Nakanishiのこっそりサーバー

一緒にゆるくMod制作を楽しみませんか?
初心者も大歓迎です。

※)日本語での会話ができる方のみ参加可能です。
  条件に合わない方は参加をご遠慮ください。

 

 

今回からGUIのあるブロックの作り方を書いていきます。
GUIのあるブロックはチェスト、かまど、石切台など色々ありますが、
今回は一番シンプルな樽の作り方を紹介していこうと思います。

今回の記事は応用編なので、基礎編を読んでいる前提です。

今回の目標

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

pale_oak_barrel_bottom

pale_oak_barrel_side

pale_oak_barrel_top

pale_oak_barrel_top_open

樽に必要なテクスチャは上記の4枚になります。

次に【models/block】を用意していきます。

models/block】は閉じている状態と開いている状態の2つが必要になります。

 

pale_oak_barrel.json例)

{
  "parent": "minecraft:block/cube_bottom_top",
  "textures": {
    "bottom": "nakanishi_mod:block/pale_oak_barrel_bottom",
    "side": "nakanishi_mod:block/pale_oak_barrel_side",
    "top": "nakanishi_mod:block/pale_oak_barrel_top"
  }
}

 

pale_oak_barrel_open.json例)

{
  "parent": "minecraft:block/cube_bottom_top",
  "textures": {
    "bottom": "nakanishi_mod:block/pale_oak_barrel_bottom",
    "side": "nakanishi_mod:block/pale_oak_barrel_side",
    "top": "nakanishi_mod:block/pale_oak_barrel_top_open"
  }
}

 

これで【models/block】は完成です。次に【models/item】を書いていきます。

pale_oak_barrel.json例)

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

 

これで【model】は完成です。次に【blockstate】を書いていきます。

pale_oak_barrel.json例)

{
  "variants": {
    "facing=down,open=false": {
      "model": "nakanishi_mod:block/pale_oak_barrel",
      "x": 180
    },
    "facing=down,open=true": {
      "model": "nakanishi_mod:block/pale_oak_barrel_open",
      "x": 180
    },
    "facing=east,open=false": {
      "model": "nakanishi_mod:block/pale_oak_barrel",
      "x": 90,
      "y": 90
    },
    "facing=east,open=true": {
      "model": "nakanishi_mod:block/pale_oak_barrel_open",
      "x": 90,
      "y": 90
    },
    "facing=north,open=false": {
      "model": "nakanishi_mod:block/pale_oak_barrel",
      "x": 90
    },
    "facing=north,open=true": {
      "model": "nakanishi_mod:block/pale_oak_barrel_open",
      "x": 90
    },
    "facing=south,open=false": {
      "model": "nakanishi_mod:block/pale_oak_barrel",
      "x": 90,
      "y": 180
    },
    "facing=south,open=true": {
      "model": "nakanishi_mod:block/pale_oak_barrel_open",
      "x": 90,
      "y": 180
    },
    "facing=up,open=false": {
      "model": "nakanishi_mod:block/pale_oak_barrel"
    },
    "facing=up,open=true": {
      "model": "nakanishi_mod:block/pale_oak_barrel_open"
    },
    "facing=west,open=false": {
      "model": "nakanishi_mod:block/pale_oak_barrel",
      "x": 90,
      "y": 270
    },
    "facing=west,open=true": {
      "model": "nakanishi_mod:block/pale_oak_barrel_open",
      "x": 90,
      "y": 270
    }
  }
}

 

これで【blockstate】は完成で、見た目のJSONファイルは完成です。

 

 

②CLASSファイルを作ろう

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

 

樽は【BarrelBlock】を使います。

例)

extends BarrelBlock

 

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

赤線のところで右クリックをして【Show Context Actions】を選択します。

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

 

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

そうしたら()内を消してあげて、引数を入力していきます。

例)

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

 

仮で完成したCLASSファイル

ここではまだブロックの状態で、GUIは開けません。

GUI設定は後ほど追記していくので、この状態で置いておきます。

 

次にブロック登録をしていきます。

ブロック登録例)

public static final RegistryObject<Block> PALE_OAK_BARREL = BLOCKS.register("pale_oak_barrel", Block_Pale_Oak_Barrel::new);

 

アイテム登録例)

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

 

これで【Pale Oak Barrel】がゲーム内に登録されました。

それでは残りの登録もしていきましょう。

 

 

③設定を追加しよう

まず翻訳を追記します。

"item.nakanishi_mod.pale_oak_barrel": "Pale Oak Barrel",
"block.nakanishi_mod.pale_oak_barrel": "Pale Oak Barrel"

 

次にクリエイティブタブに追加して、ワールドに置けるか確認してみます。

 

設置確認

BarrelBlock】には内部で向きを設定してあるので、このように横向き、縦向きに設置することが出来ます。

 

ここまで出来たら、最低限のブロックは完成です。

 

 

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

次回は【BlockEntity】というクラスについての説明と、実際に仮のものを作ってみようと思います。

 

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

 

次回記事

JavaでMinecraftのModを作ろう☆ GUIブロック編② 〜仮のBlockEneityのクラスを作ろう〜 - NakanishiのForge1.20.1のJavaMod開発講座