向きのあるブロックの作り方

はじめに

この記事は、マイクラ統合版26.0の環境をベースに解説しています。
今回は、プレイヤーが設置した向きによって前後左右の見た目が変わる「向きのあるブロック」を追加する方法を紹介します。かまどや原木のように特定の面だけ違うテクスチャにしたい場合や、オリジナルのジオメトリ(モデル)を使う場合に必須となる設定です。
今回は、オリジナルのジオメトリ(木の枝)を使って、4方向に対応したブロックを作成します。

ファイル構成

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

📁[リソースパック]
┣📁models
┃┗📁blocks
┃ ┗📝branch.geo.json
┣📁textures
┃┣📁blocks
┃┃┗🖼branch.png
┃┗📝terrain_texture.json
┗📝manifest.json

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

まずは、ビヘイビアーパック側から作成していきます。
ビヘイビアーパックの中に📁blocksを作成します。この📁blocksの中にブロック用のjsonファイルを作成します。今回は木の枝を作るので、ファイル名は📝branch.jsonとします。
作成したファイルに以下のコードを書きます。

{
	"format_version": "1.26.0",
	"minecraft:block": {
		"description": {
			"identifier": "plactice:branch",
			"menu_category": {
				"category": "nature"
			},
			"traits": {
				"minecraft:placement_direction": {
					"enabled_states": [ "minecraft:cardinal_direction" ]
				}
			}
		},
		"components": {
			"minecraft:geometry": "geometry.branch",
			"minecraft:material_instances": {
				"*": {
					"texture": "branch",
					"render_method": "opaque"
				}
			},
			"minecraft:collision_box": {
				"origin": [ 0, 0, 0 ],
				"size": [ 0, 0, 0 ]
			},
			"minecraft:selection_box": {
				"origin": [ -8, 0, -8 ],
				"size": [ 16, 1, 16 ]
			}
		},
		"permutations": [
			{
				"condition": "q.block_state('minecraft:cardinal_direction') == 'north'",
				"components": {
					"minecraft:transformation": { "rotation": [ 0, 0, 0 ] }
				}
			},
			{
				"condition": "q.block_state('minecraft:cardinal_direction') == 'west'",
				"components": {
					"minecraft:transformation": { "rotation": [ 0, 90, 0 ] }
				}
			},
			{
				"condition": "q.block_state('minecraft:cardinal_direction') == 'south'",
				"components": {
					"minecraft:transformation": { "rotation": [ 0, 180, 0 ] }
				}
			},
			{
				"condition": "q.block_state('minecraft:cardinal_direction') == 'east'",
				"components": {
					"minecraft:transformation": { "rotation": [ 0, -90, 0 ] }
				}
			}
		]
	}
}

“format_version”はファイルの書き方のバージョンを指定します。今回は”1.26.0″を指定しています。
“minecraft:block”の中には”description”と”components”、そして今回は”permutations”(条件分岐)を記述します。
コードの中にある新しいプロパティについて解説します。

  • “traits”の中にある”minecraft:placement_direction”は、ブロックを設置した時に「プレイヤーがどっちを向いていたか」を保存してくれます。”enabled_states”に”minecraft:cardinal_direction”(東西南北の4方向)を指定することで、自動でブロックに向きの状態を持たせることができます。
  • “minecraft:geometry”には、後ほどリソースパックで作る3Dモデルの名前(geometry.branch)を指定します。
  • “minecraft:material_instances”では、テクスチャを指定しています。今回は枝なので”*”で全面に同じ画像を指定し、”render_method”に”opaque”を指定しています。
  • “minecraft:collision_box”(通り抜けられない物理的な当たり判定)はサイズを [0, 0, 0] にしてスリ抜けられるようにし、”minecraft:selection_box”(視点を合わせた時の黒い枠線)は [16, 1, 16] のように薄い形に変更して、自然な枝のプレイ感を重視した設定になっています。

そして一番大切なのが”permutations”(パーミュテーションズ)です。これは「もし〇〇の状態だったら、××する」という条件別の部品箱です。
“condition”(条件)で「もしブロックの向きがnorth(北)だったら……」といった条件を指定し、”components”内の”minecraft:transformation”でブロック全体(見た目も当たり判定も!)を回転させています。この指定があるおかげで、プレイヤーがどの向きからブロックを置いても、枝の向きが設置方向に応じて自動で綺麗に回転するようになります。

これでビヘイビアーパック側は完成です。

リソースパック側の作成

次にリソースパック側を作っていきます。リソースパックでは、3Dモデル(ジオメトリ)の作成と、テクスチャ名と画像の紐付け作業を行います。

3Dモデル(ジオメトリ)の作成

追加するブロックのモデルの作成を行います。もし、モデルの作成が不要の場合(フルブロックの場合など)はこの部分は飛ばして進めてもらって問題ないです。

ブロックのモデル作成で注意することは「モデルの向き」です。Blockbenchでモデルを作成する場合、Nを奥側になるようにして作成してください。こうすることで、ブロックを設置するときにブロックが正しい向きを向くようになります。

今回はサンプルとして木の枝のモデルを用意しました。向きのあるブロックを作るサンプルなので、木の枝ではなく別のモデルを作ってみてもいいと思います。

モデルを作成したら、Bedrock Geometry形式で書き出しを行います。

次に、リソースパックの中に📁modelsを作成し、その中に📁blocksを作成します。この📁blocks内に先ほど書き出したジオメトリファイルを追加します。

ここで、注意点ですが、書き出したファイルをエディターなどで開き、geometryのIDを確認します。おそらく、6行目くらいにidentifierという項目があると思います。ここで設定してある値がgeometry.モデルの名前になっていることを確認してください。

もし、geometry.unknownなどモデルの名前になっていない場合はモデル名を指定しましょう。

テクスチャの紐付け

リソースパックの中に📁texturesを作成し、その中に📝terrain_texture.jsonを作成します。
作成したファイルに以下のコードを書きます。

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

このファイルで、ビヘイビアーパック側で指定した”texture”: “branch”に対して、「textures/blocks/branchにある画像を使ってね」という紐付けをしています。”resource_pack_name”は空欄 "" となっていますが、省略しても正常に読み込まれるのでこのままで大丈夫です。

あとは、📁texturesの中に📁blocksを作り、その中に先ほど作成したジオメトリに対応する画像(🖼branch.png)を入れれば完成です!

ゲーム内で確認する

無事にすべてのファイルを作り終え設定ができたら、アドオンをマイクラに読み込ませてワールドに入ってみましょう!
クリエイティブインベントリを開き、自然カテゴリから今回作ったブロックを探します。プレイヤーの視点を変えて東西南北それぞれの方向からブロックを置いてみてください。

どの方向から設置しても、枝の向きや模様がプレイヤーに合わせて回転して設置されていれば大成功です!
この「マイクラ標準の向き検出(placement_direction)」と「モデルの回転(transformation)」の組み合わせを覚えると、イスや机などの家具アドオンも簡単に作れるようになりますので、ぜひ様々なアレンジを楽しんでみてくださいね。