この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- block_state_propertyはルートテーブルで使う
- 実際の例
この記事では、block_state_propertyの使い方について見ていきます。
block_state_propertyはpredicateに所属しているにも関わらず、predicatesフォルダに格納して使いません。
ルートテーブルで指示することで使用できる項目ですので、ぜひこの記事を参考に学んでください。
それでは、さっそく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
block_state_propertyはルートテーブルで使う
block_state_propertyはpredicateの1種でありながら、ルートテーブルで使うことを前提としています。
ですので、predicatesファイルに含まれるjsonファイルでblock_state_propertyはpredicateを指示しても上手くいきません。
ルートテーブルのtypeがminecraft:blockでないと使えない点にも要注意です。
block_state_propertyは壊したブロックの状態を検知する項目になります。
ですので、ブロックを破壊した際に使用されるルートテーブルと組み合わせるわけです。
例えば、「北向きに設置されているかまどを破壊した場合には○○をドロップする」なんてルートテーブルを作る場合には、「北向きのかまど」をblock_state_propertyによって指示し検知します。
このように、ブロック破壊時の状態に応じてルートテーブル内で分岐させられるのが、block_state_propertyということです。
実際の例
では、ここからは実際の例を見ていきます。
まずはルートテーブルを作成するために、データパックを作成しましょう。
今回はかまどを壊した時の挙動を変更するために、従来のfurnace.jsonを上書きする形でフォルダ等を作成します。
- datapack本体
- data
- minecraft
- loot_tables
- furnace.json
- loot_tables
- minecraft
- pack.mcmeta
- data
pack.mcmetaとfurnace.json以外は全てフォルダになります。
また、2種のファイルに記述する内容は以下の通り。
pack.mcmetaがこちら。
{
"pack": {
"pack_format": 26,
"description": ""
}
}
furnace.jsonはこちら。
下記は北向きのかまどを破壊した場合に、ダイヤモンドブーツをドロップするように指示しています。
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"bonus_rolls": 0,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond_boots"
}
],
"conditions": [
{
"condition": "minecraft:block_state_property",
"block": "minecraft:furnace",
"properties": {
"facing": "north"
}
}
]
}
]
}
conditionの部分にblock_state_propertyがあります。
このようにして使う必要のある項目というわけですね。
また、デフォルトのものを上書きする形で作成しているため、北以外の向きを向いているかまどを壊した場合は何もドロップしません。
ですので、通常時のドロップを指示したり、全方位に対応するよう指示してあげることで、何もドロップしない問題を回避できます。
このあたりは自分が何をしたいのかによって調整してください。
jsonファイルに記載する内容は生成サイトを利用することをおすすめします。
まとめ
というわけで、今回のまとめです。
- block_state_propertyはルートテーブルで使用する項目。
- 破壊されたブロックの状態を検知することが可能。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!