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

Система добычи 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Активна ли данная таблица добычи
spawnPoolsString list[]Имена пулов спавна BetterStructures. Когда EliteMob, связанный с подходящим пулом спавна, убит, эта таблица добычи используется для его дропа.
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% вероятность того, что этот пул выдаст предмет.

Пулы добычи

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

КлючТипПо умолчаниюОписание
isEnabledBooleantrueАктивен ли данный пул добычи
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 определяет относительную вероятность выпадения среди всех записей в пуле.

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

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

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

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

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

  1. Игрок должен стоять неподвижно 3 секунды, пока контейнер открывается.
  2. Движение отменяет взаимодействие.
  3. При успехе одна таблица добычи выбирается из списка chestLootTables или barrelLootTables пакета контента (взвешенный выбор).
  4. Записи выбранной таблицы добычи бросаются независимо, и полученные предметы выпадают в месте расположения контейнера.
  5. Контейнер уничтожается после разграбления (заменяется воздухом).

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

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

Когда EliteMob погибает во время матча, плагин проверяет его пул спавна BetterStructures. Любая таблица добычи, чей список spawnPools содержит пул спавна моба, генерирует дроп в месте гибели моба. Уровень моба передаётся в EliteMobs для генерации предметов соответствующего уровня.

Поведение предметов при эвакуации

  • Игроки, успешно эвакуировавшиеся, сохраняют все предметы. Предметы в их инвентаре получают привязку к душе (используя чары soulbind от EliteMobs) при выходе.
  • Игроки, не сумевшие эвакуироваться (вышли, отключились или были поглощены границей мира), теряют все предметы инвентаря, когда deleteItemsOnFailToExtract установлен в true в config.yml.