uploaded:2020/4/19 engine version:1.14.0.9
BlockStatesの正体
長い間、リファレンスに載っているのに利用の方法が全くわからないのは歯がゆいものでした。もしかしたらとても有能で、使えたら一気にできることが増えるかもしれないのに、知らずに放置するのはかなりもったいないです。
そして今回は謎が解けたので紹介していきたいと思います。
BlockStatesもといブロックステートとは、データ値をタグのように扱うものだったのです。バイオームやフィーチャーの作り方の記事に詳しい使い方を説明を載せるので、今回はどんなプロパティがあるかのリファレンスということにします。
基本的にはこのような形をとります。
{
"name": str,
"states": {
"": str,
"": int,
...
}
}
nameはブロックのアイデンティファイア、statesの中身はそれぞれブロックによって決まったプロパティと値の組が入ります。
■ minecraft:stone
状態 | データ値 | stone_type |
石 | 0 | |
花崗岩 | 1 | granite |
磨かれた花崗岩 | 2 | granite_smooth |
閃緑岩 | 3 | diorite |
磨かれた閃緑岩 | 4 | diorite_smooth |
安山岩 | 5 | andesite |
磨かれた安山岩 | 6 | andesite_smooth |
これで閃緑岩を指定したいのであれば、こう書きます:
{
"name": "minecraft:stone",
"states": {
"stone_type": "diorite"
}
}
以降同じような書き方、表との照らし合わせ方をします。
■ minecraft:dirt
状態 | データ値 | dirt_type |
土 | 0 | |
粗い土 | 1 | coarsed |
■ minecraft:planks / minecraft:wood / minecraft:wooden_slab / minecraft:fence
状態 | データ値 | wood_type |
樫 | 0 | oak |
トウヒ | 1 | sprace |
樺 | 2 | birch |
ジャングル | 3 | jungle |
アカシア | 4 | acacia |
黒樫 | 5 | dark_oak |
■ minecraft:sand
状態 | データ値 | sand_type |
砂 | 0 | |
赤砂 | 1 | red |
■ minecraft:sponge
状態 | データ値 | sponge_type |
スポンジ | 0 | dry |
ぬれたスポンジ | 1 | wet |
■ minecraft:sandstone / minecraft:red_sandstone
状態 | データ値 | sand_stone_type |
砂岩 | 0 | default |
模様入り砂岩 | 1 | heiroglyphs |
カットされた砂岩 | 2 | cut |
なめらか砂岩 | 3 | smooth |
■ minecraft:wool / (色系のものはだいたいすべて)
状態 | データ値 | color |
白 | 0 | white |
オレンジ | 1 | orange |
赤紫 | 2 | magenta |
空色 | 3 | light_blue |
黄色 | 4 | yellow |
黄緑 | 5 | lime |
ピンク | 6 | pink |
灰色 | 7 | gray |
薄灰色 | 8 | light_gray |
水色 | 9 | cyan |
紫 | 10 | purple |
青 | 11 | blue |
茶 | 12 | brown |
緑 | 13 | green |
赤 | 14 | red |
黒 | 15 | black |
■ minecraft:stone_slab
状態 | データ値 | stone_slab_type |
なめらか石 | 0 | smooth_stone |
砂岩 | 1 | sandstone |
石(見た目は樫) | 2 | wood |
丸石 | 3 | cobblestone |
レンガ | 4 | brick |
石レンガ | 5 | stone_brick |
クォーツ | 6 | quartz |
ネザーレンガ | 7 | nether_brick |
◎top_slot_bit(bool)
上付きかどうか。データ値8から15は上付きとなり、このプロパティがtrueになります。
■ minecraft:stone_slab2
状態 | データ値 | stone_slab_type_2 |
赤砂岩 | 0 | red_sandstone |
プルプァ | 1 | purpur |
プリズマリン | 2 | prismarine_rough |
ダークプリズマリン | 3 | prismarine_dark |
プリズマリンレンガ | 4 | prismarine_brick |
苔むした丸石 | 5 | mossy_cobblestone |
なめらか砂岩 | 6 | smooth_sandstone |
赤いネザーレンガ | 7 | red_nether_brick |
◎top_slot_bit(bool)
上付きかどうか。データ値8から15は上付きとなり、このプロパティがtrueになります。
■ minecraft:stone_slab3
状態 | データ値 | stone_slab_type_3 |
エンドストーンレンガ | 0 | endstone_brick |
なめらか赤砂岩 | 1 | smooth_red_sandstone |
磨かれた安山岩 | 2 | polished_andesite |
安山岩 | 3 | andesite |
閃緑岩 | 4 | diorite |
磨かれた閃緑岩 | 5 | polished_diorite |
花崗岩 | 6 | granite |
磨かれた花崗岩 | 7 | polished_granite |
◎top_slot_bit(bool)
上付きかどうか。データ値8から15は上付きとなり、このプロパティがtrueになります。
■ minecraft:stone_slab4
状態 | データ値 | stone_slab_type_4 |
苔むした石レンガ | 0 | mossy_stone_brick |
なめらかクォーツ | 1 | smooth_quartz |
◎top_slot_bit(bool)
上付きかどうか。データ値8から15は上付きとなり、このプロパティがtrueになります。
■ minecraft:cobblestone_wall
状態 | データ値 | wall_block_type |
丸石 | 0 | cobblestone |
苔むした丸石 | 1 | mossy_cobblestone |
花崗岩 | 2 | granite |
閃緑岩 | 3 | diorite |
安山岩 | 4 | andesite |
砂岩 | 5 | sandstone |
レンガ | 6 | brick |
石レンガ | 7 | stone_brick |
苔むした石レンガ | 8 | mossy_stone_brick |
ネザーレンガ | 9 | nether_brick |
エンドストーンレンガ | 10 | end_brick |
プリズマリン | 11 | prismarine |
赤砂岩 | 12 | red_sand_stone |
赤いネザーレンガ | 13 | red_nether_brick |
◎wall_connection_type_east(str):none
◎wall_connection_type_north(str):none
◎wall_connection_type_south(str):none
◎wall_connection_type_west(str):none
■ minecraft:anvil
状態 | データ値 | damage |
| 0 | undamaged |
少し壊れた | 4 | slightly_damaged |
かなり壊れた | 8 | very_damaged |
◎direction(int)
向き。値はデータ値がもとになってると思います。
■ minecraft:stone_brick
状態 | データ値 | stone_brick_type |
| 0 | default |
苔むした | 1 | mossy |
ひび割れた | 2 | cracked |
模様入り | 3 | chiseled |
■ minecraft:quartz_block
状態 | データ値 | chisel_type |
| 0 | default |
苔むした | 1 | lines |
ひび割れた | 2 | chiseled |
模様入り | 3 | smooth |
◎pillar_axis(str)
軸の向き。値はx,y,z,unknownのいずれかだと思います。
■ minecraft:prismarine
状態 | データ値 | prismarine_block_type |
| 0 | default |
ダーク | 1 | dark |
レンガ | 2 | bricks |
■ minecraft:coral_block / minecraft:coral / minecraft:coral_fan / minecraft:coral_fan_dead
状態 | データ値 | coral_color |
青 | 0 | blue |
ピンク | 1 | pink |
紫 | 2 | purple |
赤 | 3 | red |
黄色 | 4 | yellow |
◎dead_bit(bool)
死んでいるかどうか。8から12はtrueになります。coral_fanとcoral_fan_deadにはこのプロパティはありません。
■ minecraft:tallgrass
状態 | データ値 | tall_grass_type |
| 0 | |
草 | 1 | tall |
シダ | 2 | fern |
■ minecraft:red_flower
状態 | データ値 | flower_type |
ポピー | 0 | poppy |
ヒスイラン | 1 | orchid |
アリウム | 2 | allium |
ヒナソウ | 3 | noustonia |
赤いチューリップ | 4 | turip_red |
オレンジのチューリップ | 5 | turip_orange |
白いチューリップ | 6 | turip_white |
ピンクのチューリップ | 7 | turip_pink |
フランスギク | 8 | oxeye |
ヤグルマギク | 9 | cornflower |
スズラン | 10 | lily_of_the_valley |
■ minecraft:spawn_egg
状態 | データ値 | spawn_egg_stone_type |
石 | 0 | stone |
丸石 | 1 | cobblestone |
石レンガ | 2 | stone_brick |
苔むした石レンガ | 3 | mossy_stone_brick |
ひび割れた石レンガ | 4 | cracked_stone_brick |
模様付き石レンガ | 5 | chiseled_stone_brick |
■ minecraft:double_plant
状態 | データ値 | double_plant_type |
ヒマワリ | 0 | sun_flower |
ライラック | 1 | syringa |
草 | 2 | grass |
シダ | 3 | fern |
バラ | 4 | rose |
ボタン | 5 | paeonia |
■ minecraft:brown_mushroom_block / minecraft:red_mushroom_block
◎huge_mushroom_bits(int)
どの面をはげさせるか。データ値がもとになっていると思います。
■ minecraft:end_portal_frame
◎direction(int)
向き。データ値がもとになっていると思います。
◎end_portal_eye_bit(bool)
エンダーアイがはまっているかどうか。
■ minecraft:grindstone
◎attachment(str):standing
◎direction(int)
向き。データ値がもとになっていると思います。
■ minecraft:lantern
◎hanging(bool)
ぶら下がっているかどうか。
■ minecraft:piston / minecraft:ladder / minecraft:end_rod
◎facing_direction(int)
向き。データ値がもとになっていると思います。
■ minecraft:vine
◎vine_direction_bits(int)
向き。データ値がもとになっていると思います。
■ minecraft:snow
◎covered_bit(bool)
◎height(int)
高さ。おそらく9以上はなさそうです。
■ minecraft:respawn_anchor
◎respawn_anchor_charge(int)
チャージの量。おそらく5以上はなさそうです。
■ minecraft:beehive / minecraft:bee_nest
◎facing_direction(int)
向き。データ値がもとになっていると思います。
◎honey_lvel(int)
はちみつの量。
■ minecraft:log
◎old_log_type(str)
木の種類。木材と値は同じだと思います。
◎pillar_axis(str)
軸の向き。データ値がもとになっていると思います。
■ minecraft:wooden_button / (その他ボタン)
◎facing_direction(int)
向き。データ値がもとになっていると思います。
◎button_pressed_bit(bool)
ボタンが押されているかどうか。
■ minecraft:trapdoor
◎direction(int)
向き。データ値がもとになっていると思います。
◎open_bit(bool)
開いているかどうか。
◎upside_down_bit(bool)
逆さかどうか。正直どっちが上なのかわからないです。
■ minecraft:scaffolding
◎stability(int)
◎stability_check(bool)
■ minecraft:rail
◎rail_direction(int)
向き。データ値がもとになっていると思います。
■ minecraft:golden_rail
◎rail_direction(int)
向き。データ値がもとになっていると思います。
◎rail_data_bit(bool)
■ minecraft:torch / minecraft:redstone_torch
◎torch_facing_direction(str)
向き。データ値がもとになっていると思います。これはunknownしか値を知りません。
■ minecraft:chorus_flower / minecraft:fire / minecraft:blue_fire
◎age(int)
■ minecraft:leaves
◎old_leaf_type(str)
葉っぱの種類。logと同じ値だと思います。
◎persistent_bit(bool)
◎update_bit(bool)
■ minecraft:lectern
◎direction(int)
向き。データ値がもとになっていると思います。
◎powered_bit(bool)
■ minecraft:lever
◎lever_direction(str)
向き。クリエイティブインベントリから取り出したのはdown_east_westでした。
◎open_bit(bool)
■ minecraft:toripwire_fook
◎direction(int)
向き。データ値がもとになっていると思います。
◎attached_bit(bool)
◎powered_bit(bool)
■ minecraft:saylight_detector
◎redstone_signal(int)
これがすべてではないはずです。ここに書いてないもの、書いてあっても不十分だったりします。
値やプロパティ名を知る方法
知りたいブロックをインベントリに格納した状態でワールドを抜けてセーブをし、Androidにしか使えないアプリ「Blocktopograph」を使ってそのブロックのデータを見ると、下の画像のように載っていると思います。
そしてこのブロックステートはScriptingAPIでも使うことができるので、ScriptingAPIを用いて抽出する方法もあります。(どちらかと言えばこっちのほうが確実です)
written by: Masec Rinca