ルートテーブル

提供: Minecraft Wiki
移動先: 案内検索
この記事は内容の改訳が必要な可能性があります。
執筆されている内容は不適切、不正確な翻訳かもしれません。
該当する節: タグ条件

ルートテーブル (英:Loot table) は、技術的なJSON形式の表である。この表では、自然に生成されるコンテナの中身、Mob を倒したときにドロップされるアイテム釣りによって釣れるアイテムの決定が行われる。コンテナは、チェストやかまどなどのインベントリを有するブロック全般を指す。

使用法[編集 | ソースを編集]

この表は、表を使用するかを決定する String タグとシードを決定する Long タグから構成される。同じシードと表を使用する、インベントリを持つブロック(すなわちコンテナ)や Mob には、同じアイテムが定められる。ただし、この表が使用されるコンテナのどのスロットに配置されるかは決定できず、シードに基づいてランダムに配置される。

チェストトラップチェストホッパーチェスト付きトロッコホッパー付きトロッコディスペンサードロッパーの場合:

  •       
    •  LootTable: コンテナが次に開かれた時にアイテムを配置する、またはそれ以外でアイテムが使用された場合に使用される。そのコンテナがチェストであり、それがラージチェストのどちらかである場合、タグ付きのシングルチェストに相当する半分だけが影響を受ける。
    •  LootTableSeed: ルートテーブルを生成するために使用されるシード。これは、ワールドにおけるシード値と同じように動作する。0または省略にすることでランダムになる。

一度アイテムが使用されたり(コンテナのインベントリを開いたり、ブロックの破壊など)、コンテナに入れられると、このタグは削除される。

Mob の場合:

  • ルートタグ。
    •  DeathLootTable: エンティティが倒されたときにドロップするアイテムに使用される。
    •  DeathLootTableSeed: ルートテーブルを生成するために使用されるシード。これは、ワールドにおけるシード値と同じように動作する。0または省略にすることでランダムになる。

Mob とコンテナのルートテーブルは、/entitydata/blockdata で変更することができる。

カスタムマップでは、この表を使用してコンテナにどのアイテムが配置されるかを変更することが可能となっている。そのため、既存のどれかのルートテーブルを変更したり、新しいものの作成ができる。以下はそのファイルの配置である:

  • < ワールドが保存されているフォルダ >
    • data
      • loot_tables

「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: 条件の名前。有効な条件については下記参照
        •  rolls: 抽選回数。ここに指定された数だけアイテムが選ばれる。
        •  rolls: 抽選回数に範囲を持たせたい場合はこちらを使う。
          •  min: 抽選の最小数。
          •  max: 抽選の最大数。
        •  bonus_rolls: 幸運が付いている場合、ここに指定した回数分、抽選される数が追加される。乗算のあとに切り捨てられる。
        •  bonus_rolls: ボーナスロールに範囲を持たせたい場合はこちらを使う。
          •  min: ボーナスロールの最小数。
          •  max: ボーナスロールの最大数。
        •  entries: 抽選されるアイテムの候補リスト。 rollsの数だけ無作為に選ばれる。
          •  An entry
            •  conditions: アイテムが選ばれる条件を決定する。複数条件指定されている場合は、すべて満たす必要がある。
              •  A condition
                •  condition: 条件の名前。有効な条件については下記参照
            •  type: エントリーの種類。アイテムの場合は item を指定し、何も生成しない場合は empty 、別のルートテーブルから呼び出す場合は loot_table を指定できる。
            •  name:
              • item ID(例:minecraft:diamond)。functions によって変更されない場合、デフォルトでは、アイテムのデフォルトインスタンスは1のスタックになっている。
              • tag アイテムのタグを指定する(例:arrows)。
              • loot_table 呼び出すルートテーブルの名前。(例:minecraft:gameplay/fishing/junk)。
              • dynamic contentsself の2つがある。contents は、ブロックエンティティの中身、self は、旗と Mob の頭に使われる。
            •  children:
              • group 1つの条件を同時に複数の候補に適用することができる。
              • alternatives 選出を分岐させることができる。一番上にある物から、条件を満たすものを選ぶ。
              • sequence 選出を分岐させることができる。こちらは、一番上にある物の選出が失敗するまで選出を行う。
            •  expand:  typetag にした場合に適用される。true にすると、タグに指定したアイテムの中から1つ選ばれる。false にした場合、全て選ばれる。
            •  functions: item の場合に使用可能。選出されるアイテムに何らかの機能を付与する。これは順に適応され、例えば looting_enchant を正しく動作させるには set_count のあとにしなくてはならいない。
              •  A function:
                •  function:  functionsの名前。有効な関数については下記参照
                •  conditions: 関数を使用するために条件を指定する。複数の条件が指定されている場合は、すべて満たす必要がある。
                  •  A condition
                    •  condition: 条件の名前。有効な条件については下記参照
            •  weight: 選出されやすさ。大きいほど選ばれやすい。(確率はこのエントリーの値全エントリーの値の合計)。
            •  quality: プレイヤーの倒す/開く/釣りの運属性に基づいて、エントリーの weight を変更する。式は floor( weight + (quality * generic.luck))

関数[編集 | ソースを編集]

ルートテーブルでは、ドロップするアイテムのスタックの個数を変更したり、エンチャントを加えるなどの、様々な関数が使用できる。以下は、有効な関数、およびそれによって使用されるタグの一覧である。タグは、 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 (with n=level + extra, p=probability), uniform_bonus_count for uniform distribution (from 0 to level * bonusMultiplier), or ore_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をコピーする。
    •  source: コピー元。
      • block_entity 破壊したブロック。
      • this 倒されたエンティティあるいは進捗を達成したり、コンテナを開けたりブロックを破壊したプレイヤー。
      • killer エンティティを倒したエンティティ。
      • killer_player エンティティを倒したプレイヤー
    •  ops: コピーの処理
      • 処理
        •  source: コピー元の NBT。コマンド/dataの様式で指定する。
        •  target: コピー先の NBT。コマンド/dataの様式で指定する。
        •  op:
          • replace 既にあるタグを置き換える。
          • append 追加。
          • merge 上書き。
  • copy_state - 破壊したブロックのブロック状態をドロップしたアイテムの BlockStateTag にコピーする。
    •  block: コピー元のブロックのID。不適切な場合は、失敗する。
    •  properties: コピーするブロック状態のリスト。
      • コピーするブロック状態
  • enchant_randomly - ランダムに選択された1つのアイテムにエンチャント効果を付与する。エンチャントレベルは、適応可能ならばランダムになる。
    •  enchantments: エンチャント名のリストからエンチャントを選択する。これを省略した場合、アイテムにすべてのエンチャントが適応可能になる。
  • enchant_with_levels - 指定されたエンチャントレベルでアイテムをエンチャント効果を付与する(エンチャントテーブルを使用する場合とほぼ同等)。
    •  treasure: 宝のエンチャントがこのアイテムに適応可能かを決定する。
    •  levels: 使用する正確なエンチャントレベルを指定する。
    •  levels: 指定した範囲内からランダムにエンチャントレベルを指定する。
      •  min: 使用する最小レベル。
      •  max: 使用する最大レベル。
  • furnace_smelt - かまどでアイテムが製錬されるか否か。倒された動物から食料を調理する際に、entity_properties の条件と組み合わせて使用する。
  • limit_count - ドロップするアイテムの個数を制限する。
    •  limit: ドロップするアイテムの個数をこの値に制限する。
    •  limit: 制限に範囲を持たせたい場合はこちらを使う。この範囲内でランダムになる。
      •  min: 最小値
      •  max: 最大値
  • 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つがランダムに選択される。
  • set_count - スタック数を設定する。
    •  count: 設定する正確なスタック数を指定する。
    •  count: 範囲内からランダムにスタック数を指定する。
      •  min: 最小スタック数。
      •  max: 最大スタック数。
  • set_damage - 道具のアイテムのダメージ値(耐久値)を設定する。
    •  damage: 設定する耐久の消耗率を指定する(1.0で未使用、0.0で耐久0となる)。
    •  damage: 範囲内からランダムに耐久の消耗率を指定する。
      •  min: 最小値。
      •  max: 最大値。
  • set_nbt - アイテムに NBT データを追加する。
    •  tag: コマンド使用されるものと同様のタグ文字列を追加する。最初にかっこが必要で、引用符はバックスラッシュ (\) を使用してエスケープする必要がある。

条件[編集 | ソースを編集]

ルートテーブルは、抽選される際や関数が使用される際に適用される。以下は、有効な条件、およびそれによって使用されるタグの一覧である。タグは、 condition: と同じ条件オブジェクトに配置される:

  • alternative - 複数の条件を適用する。この場合、どれか1つを満たせばよい。
    •  terms: 適用する条件
  • block_state_property - ブロック状態をチェックする。
    •  block: ブロックのID。不適切だと失敗する。
    •  properties: 省略可能。プロパティの名前で。文字列指定。合わない場合は失敗する。
  • entity_properties - エンティティのテストプロパティ。
    •  entity: 条件を確認するエンティティを指定する。倒されたエンティティを使用するには this、無作為に攻撃させるには killer、プレイヤーのみを攻撃させるには killer_player を設定する。
    •  properties: 確認するプロパティ。
      •  on_fire: エンティティが燃えているかテストする。
  • entity_scores - エンティティのスコアボードのスコアをテストする。
    •  entity: 条件を確認するエンティティを指定する。倒されたエンティティを使用するには this、無作為に攻撃させるには killer、プレイヤーのみを攻撃させるには killer_player を設定する。
    •  scores: スコアを確認する。すべての指定したスコアが渡されるべき条件に渡される必要がある。
      •  A score: キー名は、値が渡されるべき条件に必要な、正確なスコア値があるときのオブジェクトである。
      •  A score: キー名は、値が渡されるべき条件jに必要なスコア値をの範囲を指定するオブジェクトである。
        •  min: 最小スコア。
        •  max: 最大スコア。
  • inverted - 条件を反転する。即ち、指定した条件を満たさない場合に候補が選出される。
    •  term: 反転させる条件
  • killed_by_player - killer_player のエンティティがいる場合にテストする。
    •  inverse: true の場合に、killer_player がいなければ条件が渡される。
  • match_tool - ルートテーブルが適用される際、使用していたアイテムをチェックする。
  • 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)
  • weather_check - 天候をチェックする。
    •  raining: true のとき、雨が降っている間のみこの条件が満たされる。
    •  thundering: true のとき、雷が鳴っている間ののみこの条件が満たされる[要検証]

ルートテーブルの一覧[編集 | ソースを編集]

以下は、デフォルトで存在するすべてのルートテーブルの一覧である。カスタムマップで使用する保存ワールドでは、これに加え複数の表を追加できる。

  • loot_tables
    • chests - チェストの戦利品のアイテム。
    • 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
    • gameplay
      • fishing
        • fish - ガーディアンやエルダーガーディアンによっても継承される。
        • junk
        • treasure
      • fishing - 釣りのフォルダから3つの表を読み込み、それぞれに幸運を適応することにより、釣れるアイテムを決定するために使用される。
    • empty - アイテムなし。

カスタムマップ[編集 | ソースを編集]

カスタムマップにおいても、コンテナに入ったり Mob からドロップされるアイテムを、ルートテーブルを使用して変更できる。これは、既存のルートテーブルの変更や、新しく作成することも可能である。以下はそのファイルの配置である:

  • < ワールドが保存されているフォルダ >
    • data
      • loot_tables
        • minecraft
        • < カスタムディレクトリ >

JSON ファイルは、このフォルダに入る。ゾンビのファイルを例にすると、data/loot_tables/minecraft/entities/zombie.json に配置されることになる。これは、そのワールドのあらゆるゾンビのデフォルトであるルートテーブルを、作成したルートテーブルに置き換えて使用することができるということである。カスタマイズされたルートテーブルを追加するには、ディレクトリを新しく作成し、その中に配置する必要がある。その後、DeathLootTable のデータタグでルートテーブルのディレクトリとファイル(.json 拡張子なし)の名前を指定して、Mob を召喚すれば良い。例えば「MyLootTable」というフォルダ内に「Test1」というフォルダを作成し、その中に「example.json」という名前でファイルを配置した場合は{DeathLootTable:"MyLootTable:test1/example"} とする。

歴史[編集 | ソースを編集]

Java Edition
1.92015年10月19日Dinnerbone がルートテーブルについて発表した。
15w43aルートテーブルが追加された。
15w43bentity_scores の条件が追加された。
15w43c「villager_golem.json」が「iron_golem.json」に改名された。
釣りのルートテーブル、毛のないヒツジ、ゾンビおよびスケルトンホースが追加された。
 item: タグが  name: に、 items: タグが  entries: に改名された。
 type: タグとアイテムの代わりにルートテーブルを読み込むサポートが追加された。
実際何もしないコードが、 luck: タグのデフォルトファイルとして追加された。
set_damage の関数が追加された。
15w44aenchant_randomlyset_attributes の関数が追加された。
15w44b quality タグが追加された。
 luck luck_multiplier タグが削除された。
 bonus_rolls タグが追加された。
15w51aスペクテイターモードにおいて、アイテムを生成するためのルートテーブルの使用に必要となるコンテナのトリガーが必要なくなった。
1.9.11.9.1-pre1ディスペンサードロッパーで使用可能になった。
デフォルトのルートテーブルとして chests/jungle_temple_dispenser が追加された。
1.1116w32aロバ、ラバ、ハスク、村人ゾンビは、ウマやゾンビで使用される表ではなく、それぞれ個別の表を持つようになった。
16w43a村人、ヴェックス、エンダードラゴンが自身のルートテーブルを持つようになった。

問題点[編集 | ソースを編集]

「ルートテーブル」に関する問題点は、バグトラッカーにて管理されている。問題点の報告はそちらで行ってほしい。