条件が1つだけの述語にはラッパーがなく、それが本当の形状変更です
1つの条件はオブジェクトそのものです。2つ以上はall_ofまたはany_ofでラップされます。8つの条件タイプと、なぜ反転がフラグではなくラッパーなのかについても説明します。
データパックの述語は条件を記述するJSONファイルであり、その構造は条件の数によって変化します。これは、例をコピーして拡張する際に人々が戸惑う部分です。
1つは1つのリストではない
| 条件数 | 出力形式 |
|---|---|
| 0 | {} |
| 1 | 条件オブジェクト自体 |
| 2+ | { "condition": "minecraft:all_of", "terms": [ … ] } |
単一の条件にはラッパーがありません。2つ目の条件を追加すると、ファイル全体の形状が変化します。元の条件は、新しいルートの下にあるterms配列の最初の要素になります。これらを読み書きするものは両方の形式を処理する必要があり、1つの条件から構築された例では、別の条件を追加した瞬間に必要となる形状は示されません。
any_ofは代替の結合子です。すべての条件が合格するか、いずれかの条件が合格するかを示します。
反転もラッパーであり、フラグではない
"invert": trueフィールドはありません。否定された条件はラップされます。
{ "condition": "minecraft:inverted", "term": { …the original condition… } }
termは単数形であることに注意してください。invertedは正確に1つを取りますが、all_ofとany_ofはterms配列を取ります。形状が異なる2つの似たようなキーがあり、反転は条件ごとに適用されるため、述語は1つのall_of内で反転された条件と通常の条件を自由に混在させることができます。
8つの条件タイプ
entity_properties random_chance
value_check random_chance_with_looting
weather_check time_check
location_check match_tool
random_chance_with_lootingは注目に値します。これは基本確率とlooting_multiplierを取るため、確率はキラーのドロップ増加(Looting)レベルに応じて変化します。これは、キラーが文脈に存在する場合にのみ意味を持ちます。これはドロップ率の条件であり、汎用的なランダムゲートではありません。それ以外の場所では、通常のrandom_chanceを使用します。
value_checkは、数値と3つのソースのいずれかを比較します。エンチャントレベル、幸運(Luck)、またはコピー後に手動でJSONに編集するカスタム式です。
ピッカーはバニラのセットと全く同じ
バイオームや構造物のIDが実在するかどうかを確認する際に知っておくと良いでしょう。ビルダーのドロップダウンは厳選されたサンプルではありません。
- 66のバイオーム — ゲーム内のすべてのバイオームで、欠落しているものも、作成されたものもありません。
- 34の構造物 — 同様です。
- 18のブロックタグと15のアイテムは、機能するサブセットです。
これは仮定ではなく、ゲーム自身のレジストリデータと照合して検証されたものです。したがって、バイオームまたは構造物リストにIDが存在しない場合、そのIDは存在しません。ブロックタグとアイテムについては逆です。存在しないということは、ピッカーにリストされていないだけであり、IDを自分で入力しても問題ありません。