とかさんのブログ

Minecraftについていろいろ投稿していきます。 主にBedrockEdition(BE, 旧Poket Edition, PE)のアドオン解説記事を投稿しています。アドオン製作最後の砦

Aggregate featureとSequence featureを理解しよう!【Minecraft】

複数のフィーチャーを同時に扱いたい時はaggregate_featureとsequence_featureが便利です。

この二つは設定した複数のフィーチャーをすべて設置するといったことができます。

基本的にどちらも同じような機能ですが、違うところもあります。

解説内の表記について

解説内で出てくる丸括弧はデータを表しています。つまり各々で変える部分。例は下記の通り

  • (String)"abcdef","Hello World"
  • (Integer)123456,1024
  • (Float)0.625,10000000000.0
  • (Value)0.625,10000000000.0
  • (Bool)true,false
  • (Object){"data": (Integer), ... , "data_256": (String)}
  • (Molang)"variable.size = math.sin((query.ground_speed/30)*360);"

(*****+)とは通常の(Integer),(Value)などの使い方に加え、設定した範囲内でランダムな値も使えるということです。{"min": (Integer),"max": (Integer)}のようにすると、ランダムな値を設定できます。

(List ****)はそれぞれの配列型を示します。例:["egg","chicken"]

(***/***)は複数の型に対応してます。

Aggregate featureとSequence featureとは

冒頭でも説明したとおり、複数のフィーチャーを設置することができるフィーチャー(フィーチャーコントロール)です。

ただ単に複数のフィーチャーを適当に設置するだけであればaggregate_featureとsequence_featureどちらを使おうが問題はありません。

ですが、本題はここから。aggregate_featureとsequence_featureのそれぞれの特徴についてお話します。

Aggregate featureの特徴

先ほどもいった通り、複数のフィーチャーを設置しますが、その際の設置順序が任意になっています。

リストの上から順にとかではないわけです。

そしてもう一つの特徴として、設置の中止をすることができるようになっています。

最初のフィーチャーの設置に失敗・成功した場合、残りのフィーチャーを設置しないといったことをします。

Sequence featureの特徴

対してこちらは複数のフィーチャーを設置する際、リストの上から順に設置されていきます。

その設置される基準となる座標が一つ前に設置したフィーチャーの最後のブロック位置になります。

難しいと思うので、具体的に。フィーチャーA,BがあったとしてSequence featureでふたつを設置しようとすると、最初はフィーチャーがトリガされた座標を原点として1つ目のフィーチャーAを設置します。その次に設置するフィーチャーBはフィーチャーAが設置した最後のブロックの座標を原点にする。ということになります。

そんな感じの機能なんですが、Single blockやStructureでは座標が変わらないので使いどころが限られています。現状原点が変わるのはTree featureやSearch Featureなど僅かです

ほかのフィーチャについては下のリンクを参照して下さい↓

Aggregate featureのサンプル

サンプルというか記述例ですが、ここに乗せておきます。

ファイル構造はこんな感じ

  • feature_rules
    • toka7290:testfeaturerule.json
  • features
    • testfeature_control_aggregate.json
    • testfeature_control_search.json
    • testfeature_control_weighted_random.json
    • testfeature_structure.json
    • testfeature_tree.json
  • manifest.json
  • pack_icon.png

なんかいろいろありますが、フィーチャーコントロールは単体で使うことはできないので、これが基本的なフィーチャーの使い方になります。

Sequence featureのサンプル

さっきよりもシンプルにしてみます。

ファイル構造はこんな感じ

  • feature_rules
    • toka7290:testfeaturerule.json
  • features
    • testfeature_control_search.json
    • testfeature_control_sequence.json
    • testfeature_singleblock.json
    • testfeature_singleblock_2.json
  • manifest.json
  • pack_icon.png

実際に見てみるとこんな感じ↓

2020-10-22

Search featureの始点が一番手前下で、x,z,yの順番に14個ブロックを置くようになっています。

最後の14個目の座標が次のフィーチャーの基準点になるので14個目のブロックは他のフィーチャー(この場合レンガブロック)に置き換わっています。

Aggregate featureの解説

Aggregate featureの構造はかなり単純です。

"format_version": (String)

このfeatureが作成されたバージョン。必須
"1.13.0"が最低バージョン

"description": (Object)

このfeatureの情報設定。現状はIDの設定のみ。

"identifier": (String)

このfeatureのID。必須
名前空間:IDの形式で書く。名前空間はアドオン(パック)の名前。
IDとファイル名は一緒でなければダメ。

"features": (List String)

設置するフィーチャーを設定します。必須
ID名を記述します。1つ以上無ければエラー
設置するフィーチャーは順番によらずランダムで、基準の設置座標は固定です。

"early_out": (String)

設置の中断方法について設定します。
最初のフィーチャーの設置が成功/失敗した場合、設定されている他のフィーチャーを設置せずに終了します。
扱える値は以下のとおり
説明
none 中断を行いません。デフォルト
first_success 最初のフィーチャーの設置が成功した場合、終了します。
first_failure 最初のフィーチャーの設置が失敗した場合、終了します。

Sequence featureの解説

Sequence featureはフィーチャーの中でも最も単純な構造を持つフィーチャーです。

"format_version": (String)

このfeatureが作成されたバージョン。必須
"1.13.0"が最低バージョン

"description": (Object)

このfeatureの情報設定。現状はIDの設定のみ。

"identifier": (String)

このfeatureのID。必須
名前空間:IDの形式で書く。名前空間はアドオン(パック)の名前。
IDとファイル名は一緒でなければダメ。

"features": (List String)

設置するフィーチャーを設定します。必須
ID名を記述します。1つ以上無ければエラー
設置するフィーチャーはリストの上から順に設置され、一つ前に設置したフィーチャーが最後に作業を行った座標です。

基本的にフィーチャーコントロールというのはフィーチャー単体ではできないことをするのですがこのAggregate featureとSequence featureはその典型的な例ですね。

それではまた~

質問や修正箇所がありましたらTwitterまでお願いします。

img

コメント一覧を開く
コメントフォーム
記事の評価
  • リセット
  • リセット

質問はdiscordの利用を推奨します。