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

Система добычи Extractioncraft

Extractioncraft имеет многоуровневую систему добычи, построенную на трёх концепциях: пакеты контента ссылаются на таблицы добычи, таблицы добычи ссылаются на пулы добычи, а пулы добычи определяют фактические предметы, которые могут выпасть.

Обзор​

Content Package
-> chestLootTables / barrelLootTables (weighted selection)
-> Loot Table
-> lootTable entries (each has a chance to roll)
-> Loot Pool
-> eliteMobsLoot / vanillaLoot (weighted selection of one item)

Таблицы добычи​

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

КлючТипПо умолчаниюОписание
isEnabledBooleantrueУстановите false, чтобы таблица перестала выдавать какой-либо дроп. Контейнеры пропускают отключённую таблицу при выборе, а убийства мобов её игнорируют.
spawnPoolsString list[]Имена пулов спавна BetterStructures. Когда EliteMob, связанный с подходящим пулом спавна, убит, эта таблица добычи используется для его дропа. Сравнение не учитывает регистр и игнорирует окончание .yml, поэтому и kobold_miner_pool, и Kobold_Miner_Pool.yml подходят.
lootTableList of objects[]Каждая запись ссылается на файл пула добычи и chance (от 0.0 до 1.0)

Формат записи таблицы добычи​

lootTable:
- filename: my_loot_pool.yml
chance: 0.5
- filename: another_pool.yml
chance: 0.2

Каждая запись бросается независимо. chance равный 0.5 означает 50% вероятность того, что этот пул выдаст предмет. chance может быть числом или числовой строкой. Запись, файла пула которой нет в loot_pools/, или с отсутствующим chance либо chance вне диапазона от 0 до 1, пропускается с предупреждением при запуске; остальные записи всё равно загружаются.

Пулы добычи​

Конфигурации пулов добычи находятся в папке loot_pools/. Каждый пул определяет набор возможных предметов. При броске пула один предмет выбирается на основе взвешенной вероятности.

КлючТипПо умолчаниюОписание
isEnabledBooleantrueЕсли установить false, записи таблиц добычи, ссылающиеся на этот пул, никогда его не бросают.
eliteMobsLootList of objects[]Пользовательские предметы EliteMobs, которые могут выпасть
vanillaLootList of objects[]Ванильные предметы Minecraft, которые могут выпасть

Запись добычи EliteMobs​

eliteMobsLoot:
- filename: my_elite_item.yml
weight: 1.0
- filename: another_item.yml
weight: 0.5

filename ссылается на конфигурацию пользовательского предмета EliteMobs. weight определяет относительную вероятность выпадения среди всех записей в пуле.

Некоторые пользовательские предметы исключаются из выбора ещё до его проведения:

  • Предмет с permission может выпасть только из сундуков и бочек и только для игрока с этим разрешением. Выпавший предмет принадлежит этому игроку, поэтому никто другой не может его подобрать. При убийстве мобов предметы, закрытые разрешением, никогда не выпадают.
  • Предмет с itemType: CLASS_LOOT может выпасть, только если классовая добыча EliteMobs разрешает его для сложности и ранга этого выпадения. Классовая добыча выпадает непривязанной.

Запись ванильной добычи​

vanillaLoot:
- material: DIAMOND
weight: 1.0
- material: GOLD_INGOT
weight: 2.0

material — это имя перечисления Bukkit Material. weight работает так же, как и для записей элитной добычи. Все записи элитной и ванильной добычи в пуле участвуют в одном взвешенном выборе, поэтому пул всегда выдаёт не более одного предмета за бросок. Ванильные предметы всегда выпадают в количестве одной штуки. material, который не распознан, не является предметом или является воздухом, пропускается с предупреждением при запуске, а имя файла в eliteMobsLoot, которому не соответствует пользовательский предмет EliteMobs, записывает предупреждение в момент выпадения и ничего не выдаёт.

Вес допускает дробные числа (0.5), целые (2) или числовые строки ("1.5") и должен быть больше 0. Запись с отсутствующим, нулевым, отрицательным или нечисловым весом либо без filename или material пропускается с предупреждением при запуске; остальная часть пула всё равно загружается.

Добыча из контейнеров (сундуки и бочки)​

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

  1. Ванильный контейнер никогда не открывается. Взаимодействие отменяется и заменяется процессом обыска Extractioncraft, который работает только в активной фазе матча и только для контейнеров, размещённых матчем.
  2. Игрок должен стоять совершенно неподвижно 3 секунды. Обратный отсчёт показывается в виде подзаголовка.
  3. Любое изменение позиции отменяет взаимодействие («Don't move while opening a container!»). Осматриваться, не сходя с места, разрешено. Игрок может открывать только один контейнер за раз, а контейнер может открывать только один игрок за раз.
  4. Таблица добычи уже выбрана из взвешенного списка chestLootTables или barrelLootTables пакета в начале взаимодействия. При успехе она генерирует дроп.
  5. Контейнер заменяется воздухом, а записи выбранной таблицы добычи бросаются независимо. Полученные предметы выпадают на землю в месте расположения контейнера.

Контейнеры отображают частицы портала каждые 10 тиков, пока активны в матче, что делает их видимыми для игроков.

Дроп из контейнеров использует contentLevel пакета (по умолчанию 10) как уровень предметов EliteMobs. Сложность классовой добычи для них берётся из зоны, в которой стоит контейнер (см. добыча при убийстве мобов), а ранг — самый низкий, trash.

Добыча при убийстве мобов​

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

Каждая включённая таблица добычи, чей список spawnPools совпадает с пулом спавна моба, генерирует дроп в месте гибели. Это не взвешенный выбор, поэтому указание одного и того же пула спавна в трёх таблицах добычи даёт три независимых набора бросков. Собственный уровень моба передаётся в EliteMobs для генерации предметов соответствующего уровня вместе со сложностью и рангом классовой добычи босса.

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

ЗонаРасстояние от центра по любой из осейСложность EliteMobs по умолчанию
2Меньше одной шестой ширины картыMythic
1Меньше одной трети ширины картыHard
0Остальная часть картыNormal

Названия сложностей берутся из сопоставления difficultyIds в настройках классовой добычи EliteMobs. Кроме того, EliteMobs применяет силы боссов, ограниченные difficultyID, только в соответствующих зонах; боссы Kobold Mines это используют. Поэтому граница мира, сужающаяся к центру, выталкивает игроков в зоны Hard и Mythic.

Поведение предметов при выходе​

  • Игроки, успешно эвакуировавшиеся, сохраняют все предметы. Extractioncraft привязывает к ним каждый непривязанный предмет в инвентаре, на курсоре и в сетке крафта; уже привязанные предметы сохраняют своего владельца. Привязка происходит только при включённых чарах EliteMobs Soulbind.
  • Выключение сервера или перезагрузка плагина во время активного матча считаются так же, как эвакуация.
  • Любой другой выход из активного матча очищает инвентарь, курсор и сетку крафта, если deleteItemsOnFailToExtract равно true (по умолчанию). При значении false эти предметы вместо этого привязываются.
  • Выход во время ожидания или обратного отсчёта не затрагивает инвентарь. Все способы выхода описаны на странице ход матча.