がらくた、ごろごろ

自分用

loottable覚書(未完成で進行形)

0
loottable.png


久しぶloottable!!!!




ここは作者が自分用にルートテーブルのテンプレとか関数の意味とかまとめる記事(になる予定)です。内容は大体英語wikiから引っ張ってきてるのでそっち呼んだ方が正確だと思いまする。

※内容は19w07aスナップショット時点のものです。


注意!この記事は書きかけです!!!
あーんなことやこーんなこと、間違った情報などが紛れているかもしれません!

すまない








"type" : "ID"
ルートテーブルのタイプを記述しておくことができる。

・minecraft:advancement_reward
進捗のご褒美に利用される。

・minecraft:block
ブロック破壊時のドロップに利用される。

・minecraft:chest
ブロックやエンティティのインベントリの内容物に利用される。

・minecraft:entity
エンティティやられ時のドロップに利用される。

・minecraft:fishing
釣りの成果物に利用される。

・minecraft:gift
ネコのギフトに利用される。

・minecraft:empty
空のルートテーブルを作りたい場合に利用される。

・minecraft:generic
全ての項目が利用できるタイプ。

これらのタイプがルートテーブルの利用方法と食い違っていても動作しない訳では無いが、指定したタイプで利用できない項目を使用した場合に警告が出るため、基本的に利用方法と合ったものを記述しておくとよい。
省略するとgenericタイプとみなされる。


"pools" : [ { A pool } , { A pool } , … ]
全てのプールのリスト。
記述した順番に適用されていく。
{ A pool }のなかみ
"rolls" : 数値(int) / { ランダムな数の指定 }
ロールの数を決定する必須項目。
ランダムな数を指定する場合、小数点以下は切り捨てられる。


"bonus_rolls" : 数値(float) / { ランダムな数の指定 }
[Attributesのluckの値×決定された数値] を指定したロールの数に加算する。
計算後は小数点以下は切り捨てられる。


"conditions" : [ { A condition } , { A condition } , … ]
このプールを利用するための条件、コンディションのリスト。
複数のコンディションを指定した場合、すべてを満たしている必要がある。
{ A condition }のなかみ

"condition" : "ID"
コンディションのタイプを指定する必須項目。

・minecraft:block_state_property
ブロックのブロックステータスをチェックする。ルートテーブルのタイプがblockタイプの時のみ有効。コンディション内にblockタグの記述が必須となる。

・minecraft:killed_by_player
エンティティのドロップとしてルートテーブルが呼び出された時、エンティティがプレイヤーに倒されたかどうかチェックする。ルートテーブルのタイプがentityタイプの時のみ有効。

・minecraft:weather_check
天候をチェックする。

・minecraft:entity_scores
エンティティのスコアをチェックする。コンディション内にentityタグ、scoresタグの記述が必須となる。ルートテーブルのタイプがfishingタイプ、emptyタイプ以外の時のみ有効。

・minecraft:damage_source_properties
エンティティがやられた際のダメージ源をチェックする。ルートテーブルのタイプがentityタイプの時のみ有効。

・minecraft:entity_properties
エンティティをチェックする。ルートテーブルのタイプがfishingタイプ、emptyタイプ以外の時のみ有効。コンディション内にentityタグの記述が必須となる。

・minecraft:location_check
場所をチェックする。

・minecraft:match_tool
アイテムをチェックする。ブロックならそれを破壊したアイテム、釣りならそれを釣ったアイテムが適用される。ルートテーブルのタイプがfishingタイプ、blockタイプの時のみ有効。

・minecraft:random_chance
ランダムな確率で満たされる。コンディション内にchanceタグの記述が必須となる。

・minecraft:random_chance_with_looting
ドロップ増加エンチャントレベルが関わるランダムな確率で満たされる。コンディション内にchanceタグ、looting_multiplierタグの記述が必須となる。ルートテーブルのタイプがentityタイプの時のみ有効。

・minecraft:survives_explosion
爆発があった場合に確率で満たされる。爆発がない場合、このコンディションは常に満たされる。爆発があった場合、このコンディションが満たされる確率は[1÷爆発半径]で計算される。ルートテーブルのタイプがblockタイプの時のみ有効。
バニラのほとんどのブロックルートテーブルで利用されており、この記述を省くとブロックは爆発で破壊された際に必ずアイテムをドロップするようになる。

・minecraft:table_bonus
エンチャントレベルに基づいたランダムな確率で満たされる。コンディション内にchancesタグ、enchantmentタグの記述が必須となる。ルートテーブルのタイプがfishingタイプ、blockタイプの時のみ有効。

・minecraft:inverted
コンディションの満たされる条件を反転させる。

・minecraft:alternative
複数のコンディションのどちらかが満たされると満たされる。コンディション内にtermsタグの記述が必須となる。



"block" : "ID"
コンディションのタイプがblock_state_propertyの場合に使用する必須項目。
ブロックIDを指定する。


"properties" : { "ブロック状態名" : "値" , … }
コンディションのタイプがblock_state_propertyの場合に使用する項目。
ブロックプロパティを指定する。


"thundering" : true / false
コンディションのタイプがweather_checkの場合に使用する項目。
trueの場合、コンディションが満たされるには天候が雷雨である必要がある。


"raining" : true / false
コンディションのタイプがweather_checkの場合に使用する項目。
trueの場合、コンディションが満たされるには天候が雨か雷雨である必要がある。


"entity" : "this" / "killer" / "killer_player" / "direct_killer"
コンディションのタイプがentity_scores、entity_propertiesの場合に使用する必須項目。
killerを指定すると、エンティティを倒したエンティティが対象となる。
killer_playerを指定すると、エンティティを倒したプレイヤーが対象となる。
killerとkiller_playerは、エンティティを倒したダメージ源が飛び道具などの場合、そのオーナーエンティティが対象となる。
direct_killerを指定すると、エンティティを倒した直接の原因となったエンティティが対象となる。
direct_killerは、エンティティを倒したダメージ源が飛び道具などの場合、そのエンティティ自体が対象となる。

thisを指定すると、ルートテーブルの呼び出し状況によって対象となるエンティティが異なる。
進捗のご褒美の場合、ご褒美を受け取るプレイヤーが対象となる。
ブロックの破壊時のドロップの場合、ブロックを採掘したエンティティが対象となる。
ネコのギフトの場合、ギフトの送り主のネコが対象となる。
エンティティのドロップの場合、やられてドロップアイテムを落とす側のエンティティが対象となる。

killerとkiller_playerの値は、エンティティのドロップとしてルートテーブルが呼び出されたときのみ利用され、呼び出された状況がその他の場合、コンディションは満たされない。また、ルートテーブルのタイプがentityタイプの時のみ有効。
対象となったエンティティの詳しい条件はpredicateタグによって指定できる。


"entity_scores" : "スコア名" : 数値(int) / { "max" : 数値(int) , "min" : 数値(int) } , … }
コンディションのタイプがentity_scoresの場合に使用する必須項目。
entityタグで対象となったエンティティのスコアを指定する。
スコアは通常の数値のほか、maxとmin両方を使うことで範囲指定もできる。


"predicate" : { damage flags object } / { entity object } / { location object } / { item object }
コンディションのタイプによって指定できるものが異なる。
damage_source_propertiesタイプの場合、{ damage flags object }を記述する。省略したり、中に何も記述しなかった場合、エンティティのドロップとしてルートテーブルが呼び出されたときのみコンディションが満たされる。
entity_propertiesタイプの場合、{ entity object }を記述する。省略したり、中に何も記述しなかった場合、entityタグで対象となったエンティティが存在していればコンディションが満たされる。
location_checkタイプの場合、{ location object }を記述する。
match_toolタイプの場合、{ item object }を記述する。省略したり、中に何も記述しなかった場合、コンディションは常に満たされる。


"chance" : 数値(float)
コンディションのタイプがrandom_chance、random_chance_with_lootingの場合に使用する必須項目。
コンディションが満たされる確率を指定する。


"looting_multiplier" : 数値(float)
コンディションのタイプがrandom_chance_with_lootingの場合に使用する必須項目。
[エンチャントのドロップ増加のレベル×指定された数値]をこのコンディションの満たされる確率に加算する。


"chances" : [ 数値(float) , 数値(float) … ]
コンディションのタイプがtable_bonusの場合に使用する必須項目。
各エンチャントレベルに対応する確率を順番に指定していく。
始めの値はエンチャントレベル0、または対象のエンチャントがされていない状態での確率である。


"enchantment" : "ID"
コンディションのタイプがtable_bonusの場合に使用する必須項目。
chancesタグでチェックするエンチャントのIDを指定する。


"term" : {A condition}
コンディションのタイプがinvertedの場合に使用する、このコンディションを親コンディションとしたときの子コンディションを指定する必須項目。
子コンディションが満たされた場合、親コンディション自体は満たされない。


"terms" : [ {A condition} , {A condition} , … ]
コンディションのタイプがalternativeの場合に使用する、このコンディションを親コンディションとしたときの子コンディションの必須リスト。
子コンディションのどれかが1つでも満たされた場合、親コンディションも満たされる。



"entries" : [ { An entry } , { An entry } , … ]
このプールによって生成される全てのエントリーのリスト。
ロールごとに一つのエントリーがウェイトの値に応じてランダムに選ばれる。
{An entry}のなかみ

"type" : "ID"
エントリーのタイプを指定する必須項目。

・minecraft:item
アイテムを指定する。エントリー内にnameタグの記述が必須となる。

・minecraft:loot_table
他のルートテーブルを指定する。エントリー内にnameタグの記述が必須となる。

・minecraft:tag
アイテムタグを指定する。エントリー内にnameタグ、expandタグの記述が必須となる。

・minecraft:alternatives
複数のエントリーの中から条件を満たす一択を指定する。エントリー内にchildrenタグの記述が必須となる。エントリー内のfunctionsタグの記述は無視される。

・minecraft:group
複数のエントリーをまとめて指定する。エントリー内にchildrenタグの記述が必須となる。エントリー内のfunctionsタグの記述は無視される。

・minecraft:sequence
複数のエントリーから条件を満たすものを指定する。エントリー内にchildrenタグの記述が必須となる。エントリー内のfunctionsタグの記述は無視される。

・minecraft:dynamic
現在シュルカーボックスのset_contentsファンクション内でのみ使用されている特殊なタイプ。シュルカーボックスの内容物を保持するために利用されている。

・minecraft:empty
指定するとエントリーは空になり、エントリー内の他の記述は無視される。



"name" : "ID"
エントリーのタイプによって指定できるものが異なる。
itemタイプの場合、アイテムIDを指定する。
loot_tableタイプの場合、ルートテーブルのIDを指定する。
tagタイプの場合、アイテムタグのIDを指定する。
dynamicタイプの場合、固有のドロップを取得するIDを指定する。現在実装されているのはシュルカーボックスのset_contentsファンクション内で使用されるminecraft:contentsのみ。


"expand" : true / false
エントリーのタイプがtagの場合に使用する必須項目。
trueの場合、指定したタグの中のアイテムIDの中から1つが選ばれ、アイテムをドロップする。
falseの場合、指定したタグの中のアイテムIDぶんのアイテム全てをドロップする。


"children" : [ { An entry } , { An entry } , … ]
このエントリーを親エントリーとしたときの子エントリーの必須リスト。
親エントリーのタイプによって記述方法と動作が異なる。

・groupタイプの場合
子エントリーの中から一つのエントリーがウェイトの値に応じてランダムに選ばれる。複数のエントリーに対して同じコンディションを適用させたい場合などに利用できる。

・alternativesタイプの場合
子エントリーが自らのコンディションを満たすか記述した順番に判定されていく。コンディションを満たす子エントリーがあるとそれが選ばれ、それより後に記述された子エントリーは利用されない。各々の子エントリー内のウェイトの値は無視される。

・sequenceタイプの場合
子エントリーが自らのコンディションを満たすか記述した順番に判定されていく。コンディションを満たさない子エントリーがあるとそこで判定は終了し、それより後に記述された子エントリーは例えコンディションをを満たしていたとしても判定されない。最終的に判定され、かつコンディションを満たした子エントリーの中から、一つのエントリーがウェイトの値にに応じてランダムに選ばれる。


"functions" : [ { A function } , { A function } , … ]
このエントリーに適用するファンクションのリスト。
記述した順番に実行されていき、同じタイプのファンクションを複数利用すると最後に記述されたものが適用される。


"weight" : 数値(int)
エントリーのウェイトを指定する項目。
この値が大きいほど、エントリーが出現しやすくなる。
省略するとウェイトは1とみなされる。
出現率は[このエントリーのウェイト÷他のすべてのエントリーのウェイトの合計]で計算される。


"quality" : 数値(int)
[Attributesのluckの値×指定された数値] をこのエントリーの指定したウェイトの値に加算する。


"conditions" : [ { A condition } , { A condition } , … ]
このエントリーを利用するための条件、コンディションのリスト。
複数のコンディションを指定した場合、すべてを満たしている必要がある。



main

0 Comments

There are no comments yet.