Система добычи 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/. Каждый файл определяет список записей пулов добычи, где каждая запись имеет независимый шанс выдать предмет.
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
isEnabled | Boolean | true | Активна ли данная таблица добычи |
spawnPools | String list | [] | Имена пулов спавна BetterStructures. Когда EliteMob, связанный с подходящим пулом спавна, убит, эта таблица добычи используется для его дропа. |
lootTable | List 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/. Каждый пул определяет набор возможных предметов. При броске пула один предмет выбирается на основе взвешенной вероятности.
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
isEnabled | Boolean | true | Активен ли данный пул добычи |
eliteMobsLoot | List of objects | [] | Пользовательские предметы EliteMobs, которые могут выпасть |
vanillaLoot | List 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. Когда игрок нажимает правой кнопкой мыши на сундук или бочку:
- Игрок должен стоять неподвижно 3 секунды, пока контейнер открывается.
- Движение отменяет взаимодействие.
- При успехе одна таблица добычи выбирается из списка
chestLootTablesилиbarrelLootTablesпакета контента (взвешенный выбор). - Записи выбранной таблицы добычи бросаются независимо, и полученные предметы выпадают в месте расположения контейнера.
- Контейнер уничтожается после разграбления (заменяется воздухом).
Контейнеры отображают частицы портала каждые 10 тиков, пока активны в матче, что делает их видимыми для игроков.
Добыча при убийстве мобов
Когда EliteMob погибает во время матча, плагин проверяет его пул спавна BetterStructures. Любая таблица добычи, чей список spawnPools содержит пул спавна моба, генерирует дроп в месте гибели моба. Уровень моба передаётся в EliteMobs для генерации предметов соответствующего уровня.
Поведение предметов при эвакуации
- Игроки, успешно эвакуировавшиеся, сохраняют все предметы. Предметы в их инвентаре получают привязку к душе (используя чары soulbind от EliteMobs) при выходе.
- Игроки, не сумевшие эвакуироваться (вышли, отключились или были поглощены границей мира), теряют все предметы инвентаря, когда
deleteItemsOnFailToExtractустановлен вtrueвconfig.yml.