ブロックの追加

はじめに

この記事は、マイクラ統合版1.21.130の時に作成された内容です。

この記事では、基本的なブロック(無機能ブロック)の追加を行います。最低限の設定のみ行うため、ブロック追加の中でも比較的簡単に作ることができます。

この記事で作成するブロックは以下のようなものです。

ファイル構成

📁[ビヘイビアーパック]
┣📁blocks
┃┗📝stone_tile.json
┗📝manifest.json

📁[リソースパック]
┣📁texts
┃┗ja_JP.lang
┣📁textures
┃┣📁blocks
┃┃┗🖼️stone_tile.png
┃┗📝terrain_texture.json
┗📝manifest.json

ビヘイビアーパック側の作成

まずは、ビヘイビアーパック側から作成していきます。

ビヘイビアーパックの中に📁blocksを作成します。この📁blocksの中にブロック用のjsonファイルを作成します。今回は石のタイルを作るので、ファイル名は📝stone_tile.jsonとします。

作成したファイルに以下のコードを書きます。

{
	"format_version": "1.21.130",
	"minecraft:block": {
		"description": {
			"identifier": "plactice:stone_tile",
			"menu_category": {
				"category": "construction"
			}
		},
		"components": {
			"minecraft:geometry": "minecraft:geometry.full_block",
			"minecraft:material_instances": {
				"*": {
					"texture": "stone_tile",
					"render_method": "opaque"
				}
			}
		}
	}
}

“format_version”はファイルの書き方のバージョンを指定します。バージョンによって使うことができるコンポーネントが変わります。アップデートでコンポーネントが追加されることがほとんどなため、マイクラの最新バージョンを指定するといいです。

“minecraft:block”はこのファイルはアイテムに関するファイルだということを宣言しています。

“description”にはアイテムのIDとメニューのカテゴリーを指定します。
“identifier”にアイテムのIDを指定します。”名前空間:アイテム名”の形で指定する必要があります。名前空間にはアドオン名や作者名を書くことが多いです。アイテムを追加する場合、名前空間にminecraftを使うことはできません。
“menu_category”にメニューのカテゴリーを指定します。クリエイティブインベントリ画面の部分やクラフト時に出てくるレシピのカテゴリーなどに表示されます。今回はカテゴリーにitemsを指定しています。指定するIDとゲーム内のカテゴリーは以下の種類があります。指定するID部分にnoneを指定すると、インベントリ画面にアイテムが表示されなくなります。

指定するIDゲーム内のカテゴリー
construction構築
equipment所持品
itemsアイテム
nature性質

“components”にはアイテムのコンポーネントを指定します。コンポーネントとは部品のようなもので、作りたいアイテムによって、必要なコンポーネントを使い分けます。今回は最低限必要だと思うコンポーネントだけを書いています。
“minecraft:geometry”には、ブロックの形を指定します。今回は立方体のブロックにしたいので、”minecraft:geometry.full_block”を指定しています。これは、minecraftに元々登録されているジオメトリIDになります。
“minecraft:material_instances”には、ブロックのマテリアルなどを指定します。マテリアルやテクスチャを指定するのに使います。テクスチャやマテリアルはブロックの面ごとに設定できるのですが、今回は全部の面に同じテクスチャを貼り付けたいので、*(アスタリスク)を使っています。これは、「すべての面に対して」という意味になっています。その中には、”texture”と”render_method”を指定しています。”texture”にはテクスチャ名を指定するのですが、名前はなんでも大丈夫です。後ほど、このテクスチャ名とテクスチャパスを紐付ける作業をします。”render_method”にはテクスチャをどのようにレンダーするかを指定します。基本的には”opaque”を指定します。主に使う”render_method”のIDは以下の通りです。

指定するID説明
alpha_test完全に透明な部分は透明に半透明な部分は不透明として描画されます。
blend透明な部分は透明に、半透明な部分は半透明に、不透明な部分は不透明に描画されます。※描画がバグりやすいことに注意
opaque透明部分の無いテクスチャに使います。

リソースパック側の作成

次に、リソースパック側を作っていきます。

テクスチャ名と画像パスの紐付け

リソースパックの中に📁texturesを作成します。このフォルダはテクスチャ(画像)を入れるためのフォルダです。この📁texturesに📝terrain_texture.jsonを作成します。このファイルは必ずこの名前にしてください。

作成したファイルに以下のコードを書きます。

{
	"resource_pack_name": "",
	"texture_name": "atlas.terrain",
	"padding": 8,
	"num_mip_levels": 4,
	"texture_data": {
		"stone_tile": {
			"textures": "textures/blocks/stone_tile"
		}
	}
}

“resource_pack_name”はリソースパックの名前を指定するのですが、どこかに表示されることがないので、空欄指定で問題ないです。

“texture_name”はテクスチャのタイプを指定します。ブロックの場合は”atlas.terrain”を指定する必要があります。

“padding”はテクスチャの余白を指定していますが、特に変更する必要がない項目です。

“num_mip_levels”はミップマップレベルを指定します。ミップマップは遠いブロックのテクスチャの解像度を落として処理を軽くする設定です。これも特に変更する必要はないと思います。

“texture_data”はテクスチャ名とテクスチャのパスを設定しています。

画像を追加する

先ほど、作成した📁texturesに新しく📁blocksを追加します。この中にブロックのテクスチャを追加します。

ブロックのテクスチャ画像はどの画像編集ソフトで作成しても問題ありません。ピクセルアートを描くことができるソフトを使ってブロックの画像を作成してください。

画像の大きさですが、今回は縦横16ピクセルで作成していますが、2のn乗のピクセルであれば、問題ないと思いますが、高画質にすればするほど描画負荷がかかるので、注意してください。

今回は、簡単なテクスチャなので、Blockbenchで作成してみました。

ブロック名を設定する

最後に、ブロックに名前を付けます。今のままでは、ブロック名が翻訳されていないので、このような表示になってしまいます。

これだと、なんのブロックかわかりにくいため、翻訳キーを使って日本語表示させます。

リソースパックのフォルダ内に📁textsを作成し、その中に、📝ja_JP.langを作成します。

その中に、以下のコードを書いてください。

tile.plactice:stone_tile.name=石のタイル

ブロックの翻訳キーはtile.[ブロックID].nameとなっています。これを=を使って、後ろに翻訳後の名前を書きます。

こうすることで、ブロック名が翻訳されます。

ゲーム内で確認する

これで、ブロックの追加はできているはずです。Minecraftを開き、作成したアドオンを導入したワールドを確認してみると、ブロックが追加されていると思います。