見出し画像

pool_aliasesとは

1.20.3?のスナップショット 22w42aで突如、カスタムストラクチャーに新たな機能が実装されました。
それが、今回解説するpool_aliasesです。
例によって、自分で触ってみて分かったと思っていることを書いていきます。

pool_aliasesとはなんなのか?

まず、公式からのアナウンスを見てみましょう。

23w42aの公式アナウンスページより

ふむふむ…ほーん…なあるほど…うんうん…(`-ω-´)

わからん!

こうなった方は少なからずいることでしょう。どこに記述するかもはっきり書かれていないですしね。

で?結局何よ?

では改めて説明しよう!
pool_alisesとは

特定のtemplate_poolを別のpoolに差し替える機能である!

これを使用すると、ストラクチャーが生成する度に本来指定してあるpoolを上書きする形で別のpoolが使われるようになります。
言い換えると、パーツはそのまま、ジグソーの参照先(構成要素プール)を変えることができるのです!
勿論、差し替え先のジグソーブロックの「名前」がその前のパーツのジグソーブロックの「接続先の名前」と一致している必要があります。

この差し替え処理はストラクチャー単位で行われ、該当するpoolは全て差し替え先の物に変わります。
すなわち、差し替え前と差し替え後のpoolを混在させることはできません。そこんとこ、注意してくださいね。

それでは、書き方の方に移っていきましょう。

pool_aliasesの書き方

worldgen/structureに書き、次のように書きます。

{
  ..他のworldgen/structureのプロパティたち,
  "pool_aliases": [
    {
      "type": "direct" / "random" / "random_group",
      追加項目
    }
  ]
}

typeがdirectのとき

毎回、同じpoolに差し変わります。
この場合、次のような書き方になります。

{
  "type": "direct",
  "alias": "template_poolのパス"
  "target": "template_poolのパス"
}
  • alias

差し換えたいpoolを指定します。worldgen/template_poolから指定します。

  • target

差し換え先のpoolを指定します。

type:randomのとき

生成の度に差し換わるpoolが変わります。
この場合、次のような書き方になります。

{
  "type": "random",
  "alias": "template_poolのパス"
  "targets": [
    {
       "data": "template_poolのパス",
       "weight": 整数
    }
  ]
}
  • alias

差し換えたいpoolを指定します。

  • targets

差し換え先のpoolを指定します。
directと違い、リスト形式で以下の項目を書いたオブジェクトを書きます。

data
差し変え先のpoolを指定します。

weight
選出されやすさを整数で指定します。

random_group

グループ化し、差し替え処理を連動させます。
「あるpoolが差し換わったらこっちも一緒に差し替える」といった感じです。
この場合、次のような書き方になります。

{
  "type": "random_group",
  "groups": [
    {
      "data": [
        {
          aliasの書き方
        },
        ...
      ],
      "weight": 整数
    }
  ]
}
  • groups

グループのリストを指定します。リスト形式で以下の項目を書いたオブジェクトを書きます。
実際には、この中からストラクチャーごとに1つだけが使用されます。

  • data

連動させたいエイリアスをここまであげてきた書き方で書きます。

weight
選ばれやすさを整数で指定します。

使用場面

実装当初は、デフォで使われていませんでしたが、昨日公開されたスナップショット23w45aで実装されたTrial Chambersで使われています。
どういう風に書かれているか、実際に自分の目で覗いてみよう!


この記事が気に入ったらサポートをしてみませんか?