自作ブロックの設置方向についての相談

スポンサーリンク

マイクラの配布サイト フォーラム 技術相談(統合版) 自作ブロックの設置方向についての相談

  • このトピックには4件の返信、2人の参加者があり、最後にこはくにより1ヶ月前に更新されました。
2件の返信スレッドを表示中
  • 投稿者
    投稿
    • #90020返信
      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をそのまま使えたら解決するかもとは思っているのですが…)

    • #90050返信
      こはく
      参加者
      "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°思った向きとは回転して表示されてしまうのでそこがちょっとめんどくさかったりします・・

      • この返信は1ヶ月前にこはくが編集しました。
      • #90065返信
        こはく
        参加者

        ただ稀に上の変更を加えても変化せず向きがおかしいままのブロックがあったりして
        それが何故だか分からないんですよね・・・

    • #90069返信
      YuuuuKi
      参加者

      コメントありがとうございます。
      確かにそのように変更すると設置方向は従来と同じになるんですが、変更前に設置したブロックは全部南向きになってしまうんですよね。。
      (設置済みのブロックはq.block_state(‘minecraft:cardinal_direction’)を持たないのでデフォルトのsouthが設定される?)

      • この返信は1ヶ月前にYuuuuKiが編集しました。
      • #90077返信
        こはく
        参加者

        なるほど・・・
        すみません、試していたのが全て同じ方向を向いているブロック達で単純に全部90°謎にズレてるだけだと思い込んでました・・・

2件の返信スレッドを表示中
返信先: 自作ブロックの設置方向についての相談
あなたの情報:




スポンサーリンク
プロフィール
投稿者

統合版の謎解き配布ワールドを制作しています。

YuuuuKiをフォローする
YuuuuKiをフォローする
クラフターズコロニー -マイクラの配布サイト-