宝物ファイルとは?
宝物ファイルは、BetterStructuresのチェストのルートテーブルを決定するものです。通常は[ジェネレーター](../Better Structures/creating_generators.md#treasurefilename)に割り当てられますが、[個々のビルド構成](../Better Structures/creating_structures.md#treasurefile)レベルで設定することもできます。
これらのルートテーブルは非常に強力ですが、理解するには基本的な統計概念の知識も必要です。
これらの概念についてはこちらをお読みください。このページの残りの部分は、これらを理解していることを前提としています!
重み付き確率
BetterStructuresとEliteMobs(同じ作者による別のプラグイン)は、どちらもルートシステムで重み付き確率の概念を使用しています。これは、次のような単純な問題を解決するためです:潜在的に無限のアイテムのリストから1つのアイテムを選ぶ確率をどのように設定できるでしょうか?
重み付き確率は、各アイテムに重みを与えることでこの問題を解決します。100個のアイテムがあり、それぞれの重みが1である場合、すべてのアイテムは等しい確率(1%)で選ばれます。さらに1つアイテムを追加して合計101個にし、その最後のアイテムに1の確率を与えると、すべてのアイテムは依然として同じ確率(約0.99%)で選ばれます。最後のアイテムに2の重みを与えると、選ばれる確率が増加します。新しい合計重みは102で、最後の要素の重みは2、100/102 = 約0.98%なので、0.98%+0.98% = 1.96%の確率で選ばれます。最後のアイテムに100の重みを与えると、新しい重みは200になり、その重みの半分が新しいアイテムなので、新しいアイテムは50%の確率で選ばれます。
ご覧のとおり、これは数百のアイテムのリストからランダムに選ぶ必要がある場合に使用するのに適しています。
ガウス分布
ガウス分布は、鐘の形をした数学的関数です。

これがルートシステムとどのように関連しているのか疑問に思われるかもしれません。BetterStructuresがチェストにルートを設定する際に決定しなければならないことの1つは、それらのチェストにどれだけのルートが表示されるかということです。数量は特定の数の周りで一貫している必要がありますが、理想的にはチェストを開けることがつまらなくなるほど予測可能ではないようにする必要があります。
この半ランダム効果を実現するために、ガウス分布を使用して、いくつのアイテムが選ばれるかをランダム化します。この数量が選ばれると、重み付き確率がレアリティテーブルから1つの要素をランダムに選び、重みを考慮します。
では、ガウス分布はどのように機能するのでしょうか?
幸いなことに、その背後にある数学がどのように機能するかを心配する必要はなく、代わりにそれを変更する2つの設定、平均と標準偏差に焦点を当てることができます。
平均
簡単に言うと、meanはガウス曲線の中央を設定します。つまり、チェストに表示される可能性が最も高いアイテムの数を設定します。基本的に、チェストに通常5個のアイテムを入れたい場合は、平均を5に設定します。
標準偏差
チェスト内のアイテムの平均数が5であると想像してください。標準偏差は、この数がチェストごとにどれだけ変化するかを決定するのに役立ちます。
小さい標準偏差(例:1):これは、ほとんどのチェストが平均に非常に近い、4、5、または6個のアイテムを持つことを意味します。より予測可能な体験です。たとえば、チェストの標準偏差が1の場合、ほぼすべてのチェストに4〜6個のアイテムがあることが期待できます。
中程度の標準偏差(例:2):ここでは、より多様性があります。チェストには3〜7個のアイテムがあるかもしれません。5個のアイテムは依然として一般的ですが、もう少し多いまたは少ないチェストを見つけることは珍しくありません。したがって、標準偏差が2の場合、3個のアイテムしかないチェストを時々見つけるか、運が良ければ7個のアイテムがあるチェストを見つけるかもしれません。
大きい標準偏差(例:3以上):今では本当に驚くべきことになります!チェストには2個のアイテムしかない場合もあれば、8個以上ある場合もあります。これは、わずか数個のアイテムしかないチェストを見つけるかもしれませんが、たくさんのアイテムが詰まったチェストを見つける可能性もあるということを意味します。たとえば、標準偏差が3の場合、チェストには2〜8個のアイテムがあり、各チェストを開けるのがエキサイティングなギャンブルになります。
デフォルトの平均は4、デフォルトの標準偏差は3です。
実装の詳細
宝物システムが内部でどのように機能するかを理解することで、より効果的に設定できます:
保証された最小アイテム数
システムは、ガウス分布の計算結果がゼロアイテムになる場合でも、チェストに少なくとも1つのアイテムが常に表示されることを保証します。これにより、プレイヤーが完全に空のチェストを見つけることを防ぎます。
ランダムスロット配置
アイテムは、最初のスロットから順番に埋めるのではなく、チェスト内のランダムなスロットに配置されます。これにより、人工的でないより自然に見えるルート分布が作成されます。
エラー処理
アイテムマテリアルがMinecraftバージョンに存在しない場合(たとえば、アイテムの名前が変更された新しいバージョンで古い設定を使用する場合)、そのアイテムはエラーを引き起こすのではなく、静かにスキップされます。無効なエンチャントは、コンソールに一度警告を表示し、その後、ログスパムを回避するために以降の発生では抑制されます。
特別な形式
宝物ファイルには、次のような特別な形式があります:
isEnabled: true
mean: 4.0
standardDeviation: 3.0
items:
common:
weight: 60
items:
- amount: 1-1
material: STONE_PICKAXE
procedurallyGenerateEnchantments: true
weight: 1.0
- amount: 1-1
material: STONE_SHOVEL
procedurallyGenerateEnchantments: true
weight: 1.0
rare:
weight: 30
items:
- amount: 1-1
material: ANVIL
weight: 6.0
- amount: 1-6
material: BEETROOT
weight: 6.0
epic:
weight: 10
items:
- amount: 2-10
material: DIAMOND
weight: 1.0
- amount: 1-1
material: DIAMOND_AXE
weight: 6.0
procedurallyGeneratedItemSettings:
golden_sword:
bane_of_arthropods:
minlevel: 1
maxlevel: 5
chance: 0.2
looting:
minlevel: 1
maxlevel: 3
chance: 0.2
注:これは非常に簡略化されたバージョンです。完全なデフォルトの宝物構成は、YAMLにエクスポートすると、広範なルートテーブルとすべての可能なエンチャントの組み合わせをカバーするため、約2599行になります。
isEnabled
| キー | 値 | デフォルト |
|---|---|---|
isEnabled | 真偽値 | true |
mean
| キー | 値 | デフォルト |
|---|---|---|
mean | 倍精度浮動小数点 | 4 |
meanを設定します。その詳細についてはこちらをお読みください。
standardDeviation
| キー | 値 | デフォルト |
|---|---|---|
standardDeviation | 倍精度浮動小数点 | 3 |
standardDeviationを設定します。その詳細についてはこちらをお読みください。
items
ここでは、多くのオプションが管理者によって設定できるため、少し厄介になります。先ほどの設定ファイルの例を拡大してみましょう。
items:
common:
weight: 60
items:
- amount: 1-1
material: STONE_PICKAXE
procedurallyGenerateEnchantments: true
weight: 1.0
- amount: 1-1
material: STONE_SHOVEL
procedurallyGenerateEnchantments: true
weight: 1.0
rare:
weight: 30
items:
- amount: 1-1
material: ANVIL
weight: 6.0
- amount: 1-6
material: BEETROOT
weight: 6.0
ここでは、items設定キーの下にcommonとrareを含むマップがあることがわかります。これらはrarities(レアリティ)です!
rarities
レアリティには固定の名前はありません。同じ形式を使用する限り、それらを追加または削除し、好きなだけカスタマイズできます。
これらのレアリティテーブルをより珍しくまたは一般的にするのは、ルートテーブルのweightであることに注意してください!
デフォルトでは:
commonはデフォルトのweightが60rareはデフォルトのweightが30epicはデフォルトのweightが10
一般的なアイテムは、エピックアイテムよりも6倍ドロップしやすくなります。weightについての詳細はこちらをご覧ください!
重み以外に、各レアリティテーブルには独自のitemsのリストがあります。
rarity items
レアリティアイテムは、レアリティテーブルが持つすべてのアイテムをリストするマップリストです。
これらのアイテムには次の設定があります:
| キー | 値 | デフォルト |
|---|---|---|
amount | min-max 整数 | 可変 |
material | マテリアル | 可変 |
procedurallyGenerateEnchantments | 真偽値 | 可変 |
weight | 倍精度浮動小数点 | 可変 |
amount
ドロップする数量を設定します。これは範囲amount: MIN-MAXまたは単一の値amount: VALUEとして表現できます。例:
- 可変数量:
amount: 1-5(1〜5個のアイテムをドロップ) - 固定数量:
amount: 3(常に正確に3個をドロップ
material
ドロップする可能性のあるアイテムのSpigot API名を使用してマテリアルを設定します。
特別なケース - serialized
lootifyコマンドを使用する場合、マテリアルの代わりにlootifyがserialized設定を提供します。これはプラグインによって自動的に生成され、手動で生成すべきではありません。人間が読める形式ではありません。
mmoitem
MMOItemsプラグインのカスタムアイテムを設定します。これは、バニラのMinecraftマテリアルの代わりにカスタムアイテムを使用するためのmaterialフィールドの代替です。
形式は:mmoitem: TYPE@ITEMNAME例:yml- amount: 1-1 mmoitem: SWORD@Excalibur weight: 1.0注:これにはMMOItemsプラグインがインストールされている必要があります。MMOItemsが利用できない場合、または指定されたアイテムが存在しない場合、エントリはコンソールログに警告とともにスキップされます。
info
アイテムエントリにメモやコメントを追加するためのオプションフィールド。このフィールドはプラグインによって完全に無視され、管理文書化の目的のためだけに存在します。特定の方法でアイテムが設定されている理由を思い出すために使用してください。
例:yml- amount: 1-1 material: DIAMOND_SWORD weight: 1.0 info: "ダンジョンをクリアするためのレアドロップ"***
weight
重み付けされた確率の重みを設定します。詳細についてはこちらをご覧ください。
procedurallyGenerateEnchantments
アイテムがprocedurallyGeneratedItemSettingsの設定に基づいて手続き的に生成されるかどうかを設定します。設定によっては、エンチャントなしでアイテムが生成される可能性があることに注意してください。
procedurallyGeneratedItemSettings
設定ファイルの例をもう一度見てみましょう:
procedurallyGeneratedItemSettings:
golden_sword:
bane_of_arthropods:
minlevel: 1
maxlevel: 5
chance: 0.2
looting:
minlevel: 1
maxlevel: 3
chance: 0.2
ご覧のとおり、このファイルはマテリアルタイプをリストし、その後にエンチャントが続き、次に最小レベルと最大レベル、および確率が続きます。
これらの設定では、他のプラグインからカスタムマテリアルを追加することはできません。また、他のプラグインからカスタムエンチャントを追加することもおそらくできません。ただし、その作者が明示的にシステムを互換性があるように作成したと言っている場合を除きます。
エンチャント設定については:
| キー | 値 | デフォルト |
|---|---|---|
minlevel | 整数 | 可変 |
maxlevel | 整数 | 可変 |
chance | 確率 | 可変 |
minlevel
最小エンチャントレベルを設定します。
maxlevel
最大エンチャントレベルを設定します。
chance
エンチャントが適用される確率を、0.0(なし)から1.0(常に)までの小数値として設定します。たとえば、0.2の値は20%の確率を意味します。これは、アイテム選択システムのような重み付き確率ではなく、単純な確率チェックを使用します。
トラブルシューティング
チェストにアイテムが表示されない
- 宝物ファイルに
isEnabled: trueがあることを確認してください - 無効なマテリアルまたはアイテムに関する警告がないかコンソールを確認してください
- カスタムアイテムを使用している場合は、MMOItemsがインストールされていることを確認してください
- マテリアルは正確なSpigot API名を使用する必要があります
エンチャントが適用されない
- アイテムに
procedurallyGenerateEnchantments: trueを設定してください - エンチャント名がMinecraftの名前空間キーと一致することを確認してください
- 最小/最大レベルがそのエンチャントの有効な範囲内にあることを確認してください
chance値は確率(0.2 = 20%)であり、保証ではないことを忘れないでください
カスタムプラグインのエンチャントが機能しない
BetterStructuresの統合を明示的にサポートするカスタムエンチャントのみが機能します。互換性についてエンチャントプラグインの作者に確認してください。無効なエンチャントは、この可能性を示唆する警告をコンソールに表示します。
空のチェストが表示される
システムは少なくとも1つのアイテムを保証するため、これは発生しないはずです。空のチェストが表示される場合は、次のことを確認してください:
- チェストがBetterStructuresによって入力されている(他のプラグインではない)
- 宝物ファイル内のすべてのアイテムが有効である(コンソールの警告を確認)
- 宝物ファイルが実際にロードされている(起動ログを確認)