マイクラの配布サイト › フォーラム › 技術相談(統合版) › 自作ブロックの設置方向についての相談
- 投稿者投稿
- YuuuuKi参加者
アドオンでブロックを自作しています。
behavior_packs内のjsonファイルについて、これまでは下記のような書き方をしていました。{ "format_version": "1.21.0", "minecraft:block": { "description": { "identifier": "block:aircon", "states": { "block:block_facing": [2, 3, 4, 5] } }, "components": { "minecraft:loot": "loot_tables/empty.json", "minecraft:geometry": "geometry.aircon", "minecraft:friction": 0.5, "minecraft:map_color": "#ffffff", "minecraft:light_emission": 0, "minecraft:material_instances": { "*": { "texture": "aircon", "render_method": "alpha_test" } }, "minecraft:on_player_placing": { "event": "block:block_placed" }, "minecraft:collision_box": { "origin": [-8, 0, -8], "size": [16, 16, 16] }, "minecraft:selection_box": true }, "events": { "block:block_placed": { "set_block_state": { "block:block_facing": "query.cardinal_facing_2d" } } }, "permutations": [ { "condition": "query.block_state('block:block_facing') == 2", "components": { "minecraft:transformation":{ "rotation":[0, 180, 0] } } }, { "condition": "query.block_state('block:block_facing') == 3", "components": { "minecraft:transformation":{ "rotation":[0, 0, 0] } } }, { "condition": "query.block_state('block:block_facing') == 4", "components": { "minecraft:transformation":{ "rotation":[0, 270, 0] } } }, { "condition": "query.block_state('block:block_facing') == 5", "components": { "minecraft:transformation":{ "rotation":[0, 90, 0] } } } ] } }
これを、マイクラアップデートでのevent等の廃止に伴い、下記のように変更を検討中です。
{ "format_version": "1.21.0", "minecraft:block": { "description": { "identifier": "block:aircon", "traits": { "minecraft:placement_direction": { "enabled_states": ["minecraft:cardinal_direction"] } } }, "components": { "minecraft:loot": "loot_tables/empty.json", "minecraft:geometry": "geometry.aircon", "minecraft:friction": 0.5, "minecraft:map_color": "#ffffff", "minecraft:light_emission": 0, "minecraft:material_instances": { "*": { "texture": "aircon", "render_method": "alpha_test" } }, "minecraft:collision_box": { "origin": [-8, 0, -8], "size": [16, 16, 16] }, "minecraft:selection_box": true }, "permutations": [ { "condition": "q.block_state('minecraft:cardinal_direction') == 'north' ", "components": { "minecraft:transformation": { "rotation": [0, 180, 0] } } }, { "condition": "q.block_state('minecraft:cardinal_direction') == 'south' ", "components": { "minecraft:transformation": { "rotation": [0, 0, 0] } } }, { "condition": "q.block_state('minecraft:cardinal_direction') == 'east' ", "components": { "minecraft:transformation": { "rotation": [0, 90, 0] } } }, { "condition": "q.block_state('minecraft:cardinal_direction') == 'west' ", "components": { "minecraft:transformation": { "rotation": [0, 270, 0] } } } ] } }
しかし、既存のワールドで既に設置されているブロックにこれを適用すると、変更前と設置方向が変わってしまいます。
よって、ブロックの再設置が必要になります。変更前の設置方向を維持したまま、再設置の必要なくコードを置き換える方法はあるでしょうか?
(変更後がminecraft:cardinal_directionを使用しているので、変更前と同じcardinal_facing_2dをそのまま使えたら解決するかもとは思っているのですが…)
- こはく参加者
"permutations": [ { "condition": "q.block_state('minecraft:cardinal_direction') == 'north' ", "components": { "minecraft:transformation": { "rotation": [0, 270, 0] } } }, { "condition": "q.block_state('minecraft:cardinal_direction') == 'south' ", "components": { "minecraft:transformation": { "rotation": [0, 90, 0] } } }, { "condition": "q.block_state('minecraft:cardinal_direction') == 'east' ", "components": { "minecraft:transformation": { "rotation": [0, 180, 0] } } }, { "condition": "q.block_state('minecraft:cardinal_direction') == 'west' ", "components": { "minecraft:transformation": { "rotation": [0, 0, 0] } } } ]
minecraft:transformationの数値を上のように変更してあげれば一応変更前の設置方向と同じにすることができますね
ただこれだと新たに設置した場合は90°思った向きとは回転して表示されてしまうのでそこがちょっとめんどくさかったりします・・- この返信は3ヶ月、 1週前にこはくが編集しました。
- こはく参加者
ただ稀に上の変更を加えても変化せず向きがおかしいままのブロックがあったりして
それが何故だか分からないんですよね・・・
- YuuuuKi参加者
コメントありがとうございます。
確かにそのように変更すると設置方向は従来と同じになるんですが、変更前に設置したブロックは全部南向きになってしまうんですよね。。
(設置済みのブロックはq.block_state(‘minecraft:cardinal_direction’)を持たないのでデフォルトのsouthが設定される?)- この返信は3ヶ月、 1週前にYuuuuKiが編集しました。
- こはく参加者
なるほど・・・
すみません、試していたのが全て同じ方向を向いているブロック達で単純に全部90°謎にズレてるだけだと思い込んでました・・・
- 投稿者投稿