Перейти к основному содержимому

Что такое файл сокровищ?

Файлы сокровищ определяют таблицы добычи для сундуков BetterStructures. Обычно они назначаются [генераторам](../Better Structures/creating_generators.md#treasurefilename), но также могут быть установлены на уровне [отдельной конфигурации постройки](../Better Structures/creating_structures.md#treasurefile).

Эти таблицы добычи довольно мощные, но также требуют знания некоторых базовых статистических концепций для понимания.

Прочтите об этих концепциях здесь, остальная часть страницы предполагает, что вы их понимаете!

Взвешенная вероятность

BetterStructures и EliteMobs (другой плагин того же автора) используют концепцию взвешенной вероятности в своих системах добычи. Это решает простую проблему: как можно установить шанс выбора одного предмета из списка потенциально бесконечного количества предметов?

Взвешенная вероятность решает эту проблему, присваивая каждому предмету вес. Если у вас есть 100 предметов и у каждого вес 1, то все они имеют равный шанс - 1% - быть выбранными. Если вы добавите еще один предмет, доведя общее количество до 101 предмета, и дадите этому последнему предмету шанс 1, все предметы все еще имеют одинаковый шанс - ~0.99% - быть выбранными. Если вы дадите последнему предмету вес 2, шанс его выбора увеличится - новый общий вес 102, последний элемент имеет вес 2 и 100/102 = ~0.98%, так что 0.98%+0.98% = 1.96% шанс быть выбранным. Если вы дадите последнему предмету вес 100, новый вес составит 200, и поскольку половина этого веса - ваш новый предмет, у вашего нового предмета есть 50% шанс быть выбранным.

Как видите, это хорошо использовать, когда у вас могут быть списки сотен вещей для рандомизации.

Гауссово распределение

Гауссово распределение - это математическая функция в форме колокола.

Вы можете задаться вопросом, как это относится к системе добычи. Одна вещь, которую BetterStructures должен решить при установке добычи в сундуках, - это то, сколько именно добычи появляется в этих сундуках. Количество должно быть стабильно около определенного числа, но в идеале не настолько предсказуемым, чтобы открытие сундука могло стать менее захватывающим.

Для достижения этого полу-случайного эффекта используется гауссово распределение для рандомизации количества выбираемых предметов. Как только это количество выбрано, взвешенная вероятность выбирает один элемент из таблицы редкости случайным образом с учетом весов.

Как же работает гауссово распределение?

К счастью, вам не нужно беспокоиться о том, как работает математика за этим, и вместо этого вы можете сосредоточиться на двух настройках, которые его изменяют: среднее значение и стандартное отклонение.

Среднее значение

Проще говоря, mean устанавливает середину гауссовой кривой, что означает, что он устанавливает наиболее вероятное количество предметов, которые появятся в сундуке. По сути, если вы хотите, чтобы в ваших сундуках обычно было 5 предметов, установите среднее значение на 5.

Стандартное отклонение

Представьте, что среднее количество предметов в сундуке равно 5. standard deviation (стандартное отклонение) помогает решить, насколько это число может меняться от одного сундука к другому.

Малое Standard Deviation (например, 1): Это означает, что в большинстве сундуков будут предметы очень близко к среднему значению, например, 4, 5 или 6 предметов. Это более предсказуемый опыт. Например, если у сундука стандартное отклонение 1, вы можете ожидать, что почти во всех сундуках будет от 4 до 6 предметов.

Среднее Standard Deviation (например, 2): Здесь больше разнообразия. В сундуках может быть от 3 до 7 предметов. Хотя 5 предметов все еще распространены, нередко можно найти сундуки с чуть большим или меньшим количеством. Итак, при стандартном отклонении 2 вы можете иногда найти сундук всего с 3 предметами или, если повезет, с 7 предметами.

Большое Standard Deviation (например, 3 или более): Теперь все становится действительно удивительным! В сундуках может быть всего 2 предмета или целых 8 или более. Это означает, что вы можете найти сундук всего с парой предметов, но также есть шанс найти сундук, загруженный сокровищами. Например, при стандартном отклонении 3 в сундуке может быть от 2 до 8 предметов, что делает каждое открытие сундука захватывающей авантюрой.

По умолчанию среднее значение равно 4, а стандартное отклонение равно 3.


Детали реализации

Понимание того, как работает система сокровищ внутри, может помочь вам настроить ее более эффективно:

Гарантированный минимум предметов

Система гарантирует, что по крайней мере один предмет всегда появится в сундуке, даже если расчет гауссова распределения приведет к нулю предметов. Это предотвращает нахождение игроками полностью пустых сундуков.

Случайное размещение в слотах

Предметы размещаются в случайных слотах внутри сундука, а не заполняют последовательно с первого слота. Это создает более естественное распределение добычи, которое кажется менее искусственным.

Обработка ошибок

Если материал предмета не существует в вашей версии 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

КлючЗначенияПо умолчанию
isEnabledBooleantrue

mean

КлючЗначенияПо умолчанию
meanDouble4

Установите mean (среднее значение). Прочтите подробности об этом здесь.


standardDeviation

КлючЗначенияПо умолчанию
standardDeviationDouble3

Установите 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 по умолчанию 60
  • rare имеет weight по умолчанию 30
  • epic имеет weight по умолчанию 10

Что делает обычные предметы в 6 раз более вероятными для выпадения, чем эпические предметы. Вы можете прочитать больше о weight здесь!

Помимо веса, каждая таблица редкости имеет свой собственный список items (предметов).


rarity items

Предметы редкости - это список карт, который перечисляет все предметы, которые имеет таблица редкости.

Эти предметы имеют следующие настройки:

КлючЗначенияПо умолчанию
amountmin-max Integerпеременная
materialMaterialпеременная
procedurallyGenerateEnchantmentsBooleanпеременная
weightDoubleпеременная

amount


Устанавливает количество для выпадения. Это может быть выражено как диапазон amount: MIN-MAX или как одно значение amount: VALUE для фиксированных количеств. Примеры:

  • Переменное количество: amount: 1-5 (выпадает от 1 до 5 предметов)
  • Фиксированное количество: amount: 3 (всегда выпадает ровно 3

material

Устанавливает материал, используя имена Spigot API предмета, который потенциально может выпасть.


Специальный случай - serialized

При использовании команды lootify вместо материала lootify предоставит настройку serialized. Она автоматически генерируется плагином и не должна создаваться вручную. Она в формате, который не читается человеком.


mmoitem

Устанавливает пользовательский предмет из плагина MMOItems. Это альтернатива полю material для использования пользовательских предметов вместо ванильных материалов Minecraft.

Формат: 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

Как видите, этот файл перечисляет типы материалов, за которыми следуют зачарования, а затем минимальные и максимальные уровни и шанс.

Обратите внимание, что вы не можете добавлять пользовательские материалы из других плагинов в эти настройки, и вы, вероятно, не сможете добавлять пользовательские зачарования из других плагинов, если их автор явно не заявил, что они сделали свою систему совместимой.

Что касается настроек зачарований:

КлючЗначенияПо умолчанию
minlevelIntegerпеременная
maxlevelIntegerпеременная
chanceChanceпеременная

minlevel

Устанавливает минимальный уровень зачарования.


maxlevel

Устанавливает максимальный уровень зачарования.


chance

Устанавливает вероятность применения зачарования в виде десятичного значения от 0.0 (никогда) до 1.0 (всегда). Например, значение 0.2 означает 20% шанс. Это использует простую проверку вероятности, а не взвешенную вероятность, как в системе выбора предметов.


Устранение неполадок

Предметы не появляются в сундуках

  • Проверьте, что файл сокровищ имеет isEnabled: true
  • Проверьте консоль на предупреждения о недействительных материалах или предметах
  • Убедитесь, что MMOItems установлен, если используются пользовательские предметы
  • Материалы должны использовать точные имена Spigot API

Зачарования не применяются

  • Установите procedurallyGenerateEnchantments: true на предмете
  • Проверьте, что имена зачарований совпадают с ключами пространства имен Minecraft
  • Убедитесь, что минимальные/максимальные уровни находятся в допустимых диапазонах для этого зачарования
  • Помните, что значения chance - это вероятности (0.2 = 20%), а не гарантии

Пользовательские зачарования плагинов не работают

Работают только пользовательские зачарования, которые явно поддерживают интеграцию BetterStructures. Проверьте у автора плагина зачарований о совместимости. Недействительные зачарования будут показывать предупреждение в консоли, предполагая эту возможность.

Появляются пустые сундуки

Это не должно происходить, так как система гарантирует по крайней мере один предмет. Если вы видите пустые сундуки, проверьте:

  • Что сундук заполняется BetterStructures (а не другим плагином)
  • Что все предметы в вашем файле сокровищ действительны (проверьте предупреждения консоли)
  • Что файл сокровищ на самом деле загружен (проверьте логи при запуске)