(→関数) |
(→タグ) |
||
39行目: | 39行目: | ||
<div class="treeview"> |
<div class="treeview"> |
||
* {{nbt|compound|The root tag}} |
* {{nbt|compound|The root tag}} |
||
+ | ** {{nbt|string|type:}} ルートテーブルの種類。下のどれか。 |
||
+ | *** <code>empty</code> なし |
||
+ | *** <code>entity</code> エンティティからのドロップ |
||
+ | *** <code>block</code> ブロックからのドロップ |
||
+ | *** <code>chest</code> ダンジョンや構造物などに生成されるチェストの中身 |
||
+ | *** <code>fishing</code> 釣り |
||
+ | *** <code>gift</code> 猫や村人からのプレゼント |
||
+ | *** <code>advancement_reward</code> 進捗達成時 |
||
+ | *** <code>generic</code> 上記のどれでもない |
||
** {{nbt|list|pools:}} エンティティのすべてのプールのリスト。ロールの数に基づいて、アイテムのリストからアイテムを生成する際に用いられる各プールである。プールは、順番に適応される。 |
** {{nbt|list|pools:}} エンティティのすべてのプールのリスト。ロールの数に基づいて、アイテムのリストからアイテムを生成する際に用いられる各プールである。プールは、順番に適応される。 |
||
*** {{nbt|compound|A pool}} |
*** {{nbt|compound|A pool}} |
2020年3月24日 (火) 17:49時点における版
ルートテーブル (Loot table) は、技術的なJSON形式の表である。この表では、自然に生成されるコンテナの中身、Mob を倒したときにドロップされるアイテム、釣りによって釣れるアイテムの決定が行われる。コンテナは、チェストやかまどなどのインベントリを有するブロック全般を指す。
使用法
この表は、表を使用するかを決定する String タグとシードを決定する Long タグから構成される。同じシードと表を使用する、インベントリを持つブロック(すなわちコンテナ)や Mob には、同じアイテムが定められる。ただし、この表が使用されるコンテナのどのスロットに配置されるかは決定できず、シードに基づいてランダムに配置される。
チェスト、トラップチェスト、ホッパー、チェスト付きトロッコ、ホッパー付きトロッコ、ディスペンサー、ドロッパーの場合:
-
- LootTable: コンテナが次に開かれた時にアイテムを配置する、またはそれ以外でアイテムが使用された場合に使用される。そのコンテナがチェストであり、それがラージチェストのどちらかである場合、タグ付きのシングルチェストに相当する半分だけが影響を受ける。
- LootTableSeed: ルートテーブルを生成するために使用されるシード。これは、ワールドにおけるシード値と同じように動作する。0または省略にすることでランダムになる。
一度アイテムが使用されたり(コンテナのインベントリを開いたり、ブロックの破壊など)、コンテナに入れられると、このタグは削除される。
Mob の場合:
- ルートタグ。
- DeathLootTable: エンティティが倒されたときにドロップするアイテムに使用される。
- DeathLootTableSeed: ルートテーブルを生成するために使用されるシード。これは、ワールドにおけるシード値と同じように動作する。0または省略にすることでランダムになる。
Mob とコンテナのルートテーブルは、/entitydata
と /blockdata
で変更することができる。
カスタムマップでは、この表を使用してコンテナにどのアイテムが配置されるかを変更することが可能となっている。そのため、既存のどれかのルートテーブルを変更したり、新しいものの作成ができる。以下はそのファイルの配置である:
- < ワールドが保存されているフォルダ >
- data
- loot_tables
- data
「loot_tables」の下位フォルダは名前空間となっている。デフォルトのファイルは「minecraft」下の名前空間にあるが、カスタムマップや Mod はそれぞれ独自の名前空間を有している。例えば、「楽しいパルクールマップ」という名前のカスタムマップを作成する場合、名前空間は「tanoshi_parukuru_mappu」となるだろう(空白を含めることは不可)。この名前空間には、そのマップで使用されるすべてのルートテーブルが含まれることとなる。
また、デフォルトのルートテーブルを上書きにするには、「minecraft」の名前空間に対象を配置する必要がある。下記のルートテーブルの一覧の節で解説されているように、これらはエンティティ、コンテナ、釣りによって構成される。ゲーム内でオリジナルの名前空間のルートテーブルを使用するには、.json 拡張子なしで「namespace:table_name」と書いて呼び出す。「namespace」に名前空間名、「table_name」に表のファイル名を指定し、そしてルートテーブルのタグを設定することで可能である。
タグ
ルートテーブルはJSON形式を使用して定義されている。以下は、使用されているタグの一覧である:
- The root tag
- type: ルートテーブルの種類。下のどれか。
empty
なしentity
エンティティからのドロップblock
ブロックからのドロップchest
ダンジョンや構造物などに生成されるチェストの中身fishing
釣りgift
猫や村人からのプレゼントadvancement_reward
進捗達成時generic
上記のどれでもない
- pools: エンティティのすべてのプールのリスト。ロールの数に基づいて、アイテムのリストからアイテムを生成する際に用いられる各プールである。プールは、順番に適応される。
- A pool
- conditions: プールを使用するための条件を決定する。複数の条件が指定されている場合は、すべてを渡される必要がある。
- A condition
- condition: 条件の名前。有効な条件については下記参照。
- A condition
- rolls: 抽選回数。ここに指定された数だけアイテムが選ばれる。
- rolls: 抽選回数に範囲を持たせたい場合はこちらを使う。
- min: 抽選の最小数。
- max: 抽選の最大数。
- bonus_rolls: 幸運が付いている場合、ここに指定した回数分、抽選される数が追加される。乗算のあとに切り捨てられる。
- bonus_rolls: ボーナスロールに範囲を持たせたい場合はこちらを使う。
- min: ボーナスロールの最小数。
- max: ボーナスロールの最大数。
- entries: 抽選されるアイテムの候補リスト。 rollsの数だけ無作為に選ばれる。
- An entry
- conditions: アイテムが選ばれる条件を決定する。複数条件指定されている場合は、すべて満たす必要がある。
- A condition
- condition: 条件の名前。有効な条件については下記参照。
- A condition
- type: エントリーの種類。アイテムの場合は
item
を指定し、何も生成しない場合はempty
、別のルートテーブルから呼び出す場合はloot_table
を指定できる。 - name:
item
ID(例:minecraft:diamond
)。functions
によって変更されない場合、デフォルトでは、アイテムのデフォルトインスタンスは1のスタックになっている。tag
アイテムのタグを指定する(例:arrows
)。loot_table
呼び出すルートテーブルの名前。(例:minecraft:gameplay/fishing/junk
)。dynamic
contents
かself
の2つがある。contents
は、ブロックエンティティの中身、self
は、旗と Mob の頭に使われる。
- children:
group
1つの条件を同時に複数の候補に適用することができる。alternatives
選出を分岐させることができる。一番上にある物から、条件を満たすものを選ぶ。sequence
選出を分岐させることができる。こちらは、一番上にある物の選出が失敗するまで選出を行う。
- expand: type をtag にした場合に適用される。true にすると、タグに指定したアイテムの中から1つ選ばれる。false にした場合、全て選ばれる。
- functions:
item
の場合に使用可能。選出されるアイテムに何らかの機能を付与する。これは順に適応され、例えばlooting_enchant
を正しく動作させるにはset_count
のあとにしなくてはならいない。 - weight: 選出されやすさ。大きいほど選ばれやすい。(確率はこのエントリーの値⁄全エントリーの値の合計)。
- quality: プレイヤーの倒す/開く/釣りの運属性に基づいて、エントリーの
weight
を変更する。式はfloor( weight + (quality * generic.luck))
。
- conditions: アイテムが選ばれる条件を決定する。複数条件指定されている場合は、すべて満たす必要がある。
- An entry
- conditions: プールを使用するための条件を決定する。複数の条件が指定されている場合は、すべてを渡される必要がある。
- A pool
- type: ルートテーブルの種類。下のどれか。
関数
ルートテーブルでは、作られるアイテムのスタック数を変更したり、エンチャントを加えるなどの、様々な関数が使用できる。以下は、有効な関数、およびそれによって使用されるタグの一覧である。タグは、 function と同じ関数オブジェクトに配置される:
- apply_bonus - Applies a predefined bonus formula.
- enchantment: Enchantment ID used for level calculation.
- formula: Can be
binomial_with_bonus_count
for a biominal distribution (withn=level + extra
,p=probability
),uniform_bonus_count
for uniform distribution (from0
tolevel * bonusMultiplier
), orore_drops
for a special function used for ore drops in the vanilla game (Count * (max(0; random(0..Level + 2) - 1)+1)
). - parameters: Values required for the formula.
- extra: For formula 'binomial_with_bonus_count', the extra value.
- probability : For formula 'binomial_with_bonus_count', the probability.
- bonusMultiplier : For formula 'uniform_bonus_count', the bonus multiplier.
- copy_name - ブロック用。ブロックエンティティの
CustomName
に設定された名前をドロップしたアイテムのdisplay.Name
にコピーする。- source: "block_entity" - block_entity固定。
- copy_nbt - ドロップしたアイテムにNBTをコピーする。
- copy_state - 破壊したブロックのブロック状態をドロップしたアイテムの
BlockStateTag
にコピーする。- block: コピー元のブロックのID。不適切な場合は、失敗する。
- properties: コピーするブロック状態のリスト。
- コピーするブロック状態
- enchant_randomly - ランダムに選択された1つのアイテムにエンチャント効果を付与する。エンチャントレベルは、適応可能ならばランダムになる。
- enchantments: エンチャント名のリストからエンチャントを選択する。これを省略した場合、アイテムにすべてのエンチャントが適応可能になる。
- enchant_with_levels - 指定されたエンチャントレベルでアイテムをエンチャント効果を付与する(エンチャントテーブルを使用する場合とほぼ同等)。
- treasure: 宝のエンチャントがこのアイテムに適応可能かを決定する。
- levels: 使用する正確なエンチャントレベルを指定する。
- levels: 指定した範囲内からランダムにエンチャントレベルを指定する。
- min: 使用する最小レベル。
- max: 使用する最大レベル。
- furnace_smelt - かまどでアイテムが製錬されるか否か。倒された動物から食料を調理する際に、
entity_properties
の条件と組み合わせて使用する。 - looting_enchant -
killer
エンティティのドロップ増加のエンチャントレベルに基づいて、スタック数を調整する。- count: ドロップ増加のレベルごとに増加するアイテムの正確な数を指定する。
- count: ドロップ増加のレベルごとに増加するアイテムの乱数(範囲)を指定する。乱数は少数となる可能性があり、その場合はドロップ増加のレベルに乗算されたあと切り捨てられる。
- min: 最小増加数。
- max: 最大増加数。
- limit: ドロップ増加によって増加される最終的な数の最大数。値を0とすると、無制限になる。
- set_attributes - アイテムに属性の修飾子を追加する。
- modifiers
- A modifier
- name: 修飾子の名前。
- attribute: 修飾子が動作する属性の名前。
- operation: 「addition」、「multiply_base」または「multiply_total」のいずれかでなければならない。
- amount: 修飾子が変化する正確な量を指定する。
- amount: 指定した範囲内からランダムな量を指定する。
- min: 最小量。
- max: 最大量。
- id: 任意 : 修飾子の UUID。指定されていなければ、新しい UUID が生成される。
- slot: スロットアイテムが有効にする修飾子を次の値の中から選択する必要がある: 「mainhand」、「offhand」、「feet」、「legs」、「chest」、「head」
- slot: リストされているスロットの1つがランダムに選択される。
- A modifier
- modifiers
- set_count - スタック数を設定する。
- count: 設定する正確なスタック数を指定する。
- count: 範囲内からランダムにスタック数を指定する。
- min: 最小スタック数。
- max: 最大スタック数。
- set_damage - 道具のアイテムのダメージ値(耐久値)を設定する。
- damage: 設定する耐久の消耗率を指定する(1.0で未使用、0.0で耐久0となる)。
- damage: 範囲内からランダムに耐久の消耗率を指定する。
- min: 最小値。
- max: 最大値。
- set_data - アイテムのアイテムデータ値を設定する。
- data: 設定する正確な値を指定する。
- data: 範囲内からランダムに値を指定する。
- min: 最小値。
- max: 最大値。
- set_nbt - アイテムに NBT データを追加する。
- tag: コマンド使用されるものと同様のタグ文字列を追加する。最初にかっこが必要で、引用符はバックスラッシュ (
\
) を使用してエスケープする必要がある。
- tag: コマンド使用されるものと同様のタグ文字列を追加する。最初にかっこが必要で、引用符はバックスラッシュ (
条件
ルートテーブルは、ドロップ、プール、または関数に要件を追加して、様々な条件を使用する。以下は、有効な条件、およびそれによって使用されるタグの一覧である。タグは、 condition: と同じ条件オブジェクトに配置される:
- entity_properties - エンティティのテストプロパティ。
- entity: 条件を確認するエンティティを指定する。倒されたエンティティを使用するには
this
、無作為に攻撃させるにはkiller
、プレイヤーのみを攻撃させるにはkiller_player
を設定する。 - properties: 確認するプロパティ。
- on_fire: エンティティが燃えているかテストする。
- entity: 条件を確認するエンティティを指定する。倒されたエンティティを使用するには
- entity_scores - エンティティのスコアボードのスコアをテストする。
- entity: 条件を確認するエンティティを指定する。倒されたエンティティを使用するには
this
、無作為に攻撃させるにはkiller
、プレイヤーのみを攻撃させるにはkiller_player
を設定する。 - scores: スコアを確認する。すべての指定したスコアが渡されるべき条件に渡される必要がある。
- A score: キー名は、値が渡されるべき条件に必要な、正確なスコア値があるときのオブジェクトである。
- A score: キー名は、値が渡されるべき条件jに必要なスコア値をの範囲を指定するオブジェクトである。
- min: 最小スコア。
- max: 最大スコア。
- entity: 条件を確認するエンティティを指定する。倒されたエンティティを使用するには
- killed_by_player -
killer_player
のエンティティがいる場合にテストする。- inverse: true の場合に、
killer_player
がいなければ条件が渡される。
- inverse: true の場合に、
- random_chance - 乱数が0.0~1.0の規定値未満である場合にテストする。
- chance: 0.0~1.0の数としての成功率。
- random_chance_with_looting - 乱数が0.0~1.0の値よりも小さく、
killer
のエンティティにドロップ増加のレベルによって影響を受けた場合にテストする。- chance: 基本成功率。
- looting_multiplier: 基本成功率をドロップ増加で調整する。式は
chance + (looting_level * looting_multiplier)
。
ルートテーブルの一覧
以下は、デフォルトで存在するすべてのルートテーブルの一覧である。カスタムマップで使用する保存ワールドでは、これに加え複数の表を追加できる。
- loot_tables
- chests - チェストの戦利品のアイテム。
- abandoned_mineshaft - 廃坑で見つかるチェスト付きトロッコ。
- desert_pyramid - 砂漠の寺院内部の宝物庫で見つかるチェスト。
- end_city_treasure - エンドシティで見つかるチェスト。
- igloo_chest - イグルーの地下にあるチェスト。
- jungle_temple - ジャングルの寺院で見つかるチェスト。
- jungle_temple_dispenser - ジャングルの寺院で見つかるディスペンサー。
- nether_bridge - ネザー要塞で見つかるチェスト。
- simple_dungeon - ダンジョンのチェスト。
- spawn_bonus_chest - ボーナスチェストが有効になっている際に、ワールド生成時に現れるチェスト。
- stronghold_corridor - 要塞内廊下で見つかるハーフブロックの祭壇のチェスト。
- stronghold_crossing - 要塞内物置で見つかる上位チェスト。
- stronghold_library - 要塞内図書室で見つかるチェスト。
- village_blacksmith - 村で見つかる鍛冶屋のチェスト。
- entities - エンティティがドロップするアイテム。スタック数が0で生成された一部のアイテムによって、チェストに適応された際に問題が発生する可能性がある。
- sheep - ヒツジの羊毛。染色されたヒツジによっても継承される。
- black
- blue
- brown
- cyan
- gray
- green
- light_blue
- lime
- magenta
- orange
- pink
- purple
- red
- silver
- white
- yellow
- bat
- blaze
- cave_spider
- chicken
- cow
- creeper
- donkey
- elder_guardian
- enderman
- endermite
- ghast
- giant
- guardian
- horse
- husk
- iron_golem
- magma_cube
- mule
- mushroom_cow
- ocelot
- pig
- rabbit
- sheep - 毛がないヒツジ。毛のあるヒツジによっても継承される。
- shulker
- silverfish
- skeleton
- skeleton_horse
- slime
- snowman - スノウゴーレム。
- spider
- squid
- witch
- wither_skeleton
- wolf
- zombie
- zombie_horse
- zombie_pigman
- zombie_villager
- sheep - ヒツジの羊毛。染色されたヒツジによっても継承される。
- gameplay
- fishing
- fish - ガーディアンやエルダーガーディアンによっても継承される。
- junk
- treasure
- fishing - 釣りのフォルダから3つの表を読み込み、それぞれに幸運を適応することにより、釣れるアイテムを決定するために使用される。
- fishing
- empty - アイテムなし。
- chests - チェストの戦利品のアイテム。
カスタムマップ
カスタムマップにおいても、コンテナに入ったり Mob からドロップされるアイテムを、ルートテーブルを使用して変更できる。これは、既存のルートテーブルの変更や、新しく作成することも可能である。以下はそのファイルの配置である:
- < ワールドが保存されているフォルダ >
- data
- loot_tables
- minecraft
- < カスタムディレクトリ >
- loot_tables
- data
JSON ファイルは、このフォルダに入る。ゾンビのファイルを例にすると、data/loot_tables/minecraft/entities/zombie.json
に配置されることになる。これは、そのワールドのあらゆるゾンビのデフォルトであるルートテーブルを、作成したルートテーブルに置き換えて使用することができるということである。カスタマイズされたルートテーブルを追加するには、ディレクトリを新しく作成し、その中に配置する必要がある。その後、DeathLootTable のデータタグでルートテーブルのディレクトリとファイル(.json 拡張子なし)の名前を指定して、Mob を召喚すれば良い。例えば「MyLootTable」というフォルダ内に「Test1」というフォルダを作成し、その中に「example.json」という名前でファイルを配置した場合は{DeathLootTable:"MyLootTable:test1/example"}
とする。
歴史
Java Edition | |||||
---|---|---|---|---|---|
1.9 | 2015年10月19日 | Dinnerbone がルートテーブルについて発表した。 | |||
15w43a | ルートテーブルが追加された。 | ||||
15w43b | entity_scores の条件が追加された。 | ||||
15w43c | 「villager_golem.json」が「iron_golem.json」に改名された。 | ||||
釣りのルートテーブル、毛のないヒツジ、ゾンビおよびスケルトンホースが追加された。 | |||||
item: タグが name: に、 items: タグが entries: に改名された。 | |||||
type: タグとアイテムの代わりにルートテーブルを読み込むサポートが追加された。 | |||||
実際何もしないコードが、 luck: タグのデフォルトファイルとして追加された。 | |||||
set_damage の関数が追加された。 | |||||
15w44a | enchant_randomly と set_attributes の関数が追加された。 | ||||
15w44b | quality タグが追加された。 | ||||
luck と luck_multiplier タグが削除された。 | |||||
bonus_rolls タグが追加された。 | |||||
15w51a | スペクテイターモードにおいて、アイテムを生成するためのルートテーブルの使用に必要となるコンテナのトリガーが必要なくなった。 | ||||
1.9.1 | 1.9.1-pre1 | ディスペンサーとドロッパーで使用可能になった。 | |||
デフォルトのルートテーブルとして chests/jungle_temple_dispenser が追加された。 | |||||
1.11 | 16w32a | ロバ、ラバ、ハスク、村人ゾンビは、ウマやゾンビで使用される表ではなく、それぞれ個別の表を持つようになった。 | |||
16w43a | 村人、ヴェックス、エンダードラゴンが自身のルートテーブルを持つようになった。 |
問題点
「Loot table」に関する問題点は、バグトラッカーにて管理されている。問題点の報告はそちらで行ってほしい。
要素 |
| ||
---|---|---|---|
データパック |
| ||
チュートリアル |