#方向のあるブロックを追加したいです。

1 messages · Page 1 of 1 (latest)

languid meteor
#

custom componentでstateからブロックの方向を変えることには成功したのですが、
前のバージョンで行っていたような配置時の向きをqueryで検知する方法がわかりません。(jsonで言う下記のコードの代替案)

  "events": {
    "block_placed": {
      "set_block_state": {
        "block:axis": "((query.cardinal_block_face_placed_on == 2.0 || query.cardinal_block_face_placed_on == 3.0) ? 'z' : ((query.cardinal_block_face_placed_on == 4.0 || query.cardinal_block_face_placed_on == 5.0) ? 'x' : 'y'))"
      }
    }
  },
outer crow
#

beforeOnPlayerPlace<BlockComponentPlayerPlaceBeforeEvent>.face で設置した面を取得できます。数字ではなく"Down""Up""North""South""West""East"といった文字列です

#

※jsonやjsなどを貼り付けるときは、```で囲むと良いですよ

languid meteor
#

すみません、時間がたってからで申し訳ないのですが、下記のコードだとstatesを設置される前のブロック(air)に適用しようとしてしまうのですが、どうすれば設置するブロックに適用できるでしょうか。``` ini.blockComponentRegistry.registerCustomComponent(
"block:log",
{
beforeOnPlayerPlace(ev) {
const block = ev.block
var axis = ev.face

        block.dimension.runCommand(`say ${ev.face}`);
        block.setPermutation(block.permutation.withState("block:axis", axis))
      }

    }
  );```
outer crow
#

ev.permutationToPlaceに設置されるブロックのpermutationが入っています。変更したpermutationを代入してください

languid meteor
#
        "block:log",
        {
          beforeOnPlayerPlace(ev) {
            const block = ev.block
            var axis = ev.face
            
            block.dimension.runCommand(`say ${ev.face}`);
            block.setPermutation(ev.permutationToPlace.withState("block:axis", axis))
          }
    
        }
      );```という書き方にしてみたのですが、エラーは出ないのですが方向が適用されません。
outer crow
#

block.setPermutationではなくjs ev.permutationToPlace = ev.permutationToPlace.withState("block:axis", axis)で試してみてください