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

Создание сундуков с сокровищами

webapp_banner.jpg

Сундуки с сокровищами выдают добычу или создают враждебного босса-мимика. Размещайте их конфигурационные файлы в plugins/EliteMobs/customtreasurechests.

Значения​

isEnabled​

Определяет, включён ли сундук с сокровищами.

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

Файл без этого ключа загружается как включённый. Отключённые сундуки пропускаются полностью: они не размещаются в мире и не предлагаются (и не принимаются) командой /em place treasureChest.

Пример
isEnabled: true

chestType​

Задаёт материал блока. Используйте контейнер с направлением, например CHEST или BARREL. Настройка не заполняет обычный инвентарь контейнера: добыча берётся из lootList при взаимодействии игрока.

КлючЗначенияПо умолчанию
chestTypeMaterialCHEST
Пример
chestType: CHEST

Это должен быть допустимый материал сундука, например CHEST или BARREL.

create_chest_material.jpg


facing​

Задаёт направление, в которое повёрнут сундук.

КлючЗначенияПо умолчанию
facingОсобое [1]NORTH
Пример
facing: NORTH

Это задаёт направление, в которое повёрнут сундук. Допустимые значения: NORTH, SOUTH, EAST или WEST.

Особое [1]

Развернуть таблицу
Направление
NORTH
SOUTH
WEST
EAST

dropStyle​

Определяет, предназначен ли сундук для одного игрока или для нескольких.

Сундук SINGLE расходуется первым взаимодействующим игроком. Блок заменяется воздухом и сохраняется срок пополнения. Через restockTimer минут он появляется снова, когда чанк загружен. Отдельного учёта по игрокам нет. Сундук активируется как левой, так и правой кнопкой мыши.

Сундук GROUP остаётся в мире и ведёт отдельную перезарядку для каждого игрока. Вне инстансов все размещения из одного файла разделяют перезарядку этого игрока через restockTimers. Для независимого получения добычи используйте разные файлы. В инстансе каждый действующий сундук хранит собственный список игроков, уже получивших добычу.

Оба режима выдают личную добычу взаимодействующему игроку. GROUP не запускает групповое голосование за добычу и не награждает всех поблизости. Взаимодействия, уже отменённые другим плагином, игнорируются; обычное разрушение блока запрещено. Ранг гильдии для открытия не требуется.

КлючЗначенияПо умолчанию
dropStyleSINGLE / GROUPSINGLE
Пример
dropStyle: SINGLE

lootList​

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

Каждая подходящая запись разыгрывается независимо, поэтому одно открытие может дать несколько наград. Разрешения, количество и применимые фильтры сложности подземелья продолжают действовать. putLootDirectlyIntoPlayerInventory в ItemSettings.yml выбирает выдачу в инвентарь или выпадение у сундука. Элитные предметы, не поместившиеся при прямой выдаче, падают рядом с игроком с назначением его владельцем.

КлючЗначенияПо умолчанию
lootListEM Loot Tableнет
Пример
lootList:
- filename=elite_scrap_tiny.yml:chance=0.90
- filename=magmaguys_toothpick.yml:chance=1.0

Если ни одна запись не выдала награду, игрок получает treasureChestNoDropMessage из config.yml. Это относится как к неудачным розыгрышам, так и к записям, не способным создать награду. Перезарядка всё равно расходуется.


mimicChance​

Задаёт вероятность появления враждебного босса вместо выдачи добычи.

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

При каждом допустимом взаимодействии розыгрыш мимика происходит до создания добычи. Успех вызывает попытку появления мимика вместо выдачи добычи, но не оба действия сразу. Используйте значение от 0 до 1; 0.5 означает 50%. Перезарядка расходуется даже при отсутствии выбранного босса или неудачном появлении.

Пример
mimicChance: 0.5

mimicCustomBossesList​

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

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

КлючЗначенияПо умолчанию
mimicCustomBossesListString Listнет
Пример
mimicCustomBossesList:
- my_cool_mimic_boss.yml
- weak_mimic_boss.yml

Если вы хотите назначить боссам веса, список следует оформить так:

mimicCustomBossesList:
- my_cool_mimic_boss.yml:60
- weak_mimic_boss.yml:40

При такой конфигурации my_cool_mimic_boss.yml с большей вероятностью будет выбран для появления, чем weak_mimic_boss.yml.

Запись без суффикса веса, а также запись, чей вес не читается как число, обе откатываются к весу 1.

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

С каким уровнем появляется мимик?

Файл босса выбирает способ расчёта; фиксированный числовой уровень заменяется расчётом по уровню сундука:

level босса-мимикаУровень, с которым он появляется
Фиксированное числоchestTier × 10 плюс случайные 0-10
dynamic (-1) внутри динамического подземельяВыбранный уровень подземелья, ±1
dynamic (-1) в любом другом местеЕстественный уровень спавна открывшего игрока, ±1

Если файл босса, названный в списке, не удаётся найти, мимик не появляется и логируется предупреждение — игрок не получает ничего, включая добычу.

Результат вычислений ±1 не ниже уровня 1. Если вне динамического подземелья недоступны данные инвентаря открывшего игрока, динамический мимик использует обычный путь появления босса. Мимики, созданные в подземелье, относятся к этому столкновению.


restockTimer​

Задаёт время в минутах, через которое сундук снова наполняется добычей.

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

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

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

Пример
restockTimer: 30

effects​

Примечание: настройка не действует. Загрузчик читает её, но поведение сундука не использует полученное значение. Частицы она не создаёт.

Если вам нужны частицы вокруг сундука, порождайте их пока что из другого источника.

КлючЗначенияПо умолчанию
effectsString Listнет

locations​

Задаёт местоположения, где будет появляться сундук с сокровищами.

Выполните /em place treasureChest <treasurechestfilename.yml> на нужном блоке. Требуются игрок с разрешением elitemobs.place.admin и загруженная, включённая конфигурация сундука. Команда записывает координаты блока в файл и сразу размещает сундук. Если выполнить её на блоке, который уже есть в списке, она сбрасывает срок пополнения этого размещения, а не добавляет вторую запись.

КлючЗначенияПо умолчанию
locationsString Listнет

Каждая запись использует формат worldName,x,y,z,yaw,pitch. Более короткая форма worldName,x,y,z также принимается, при этом yaw и pitch считаются равными 0.

Необязательный суффикс :unixTimestamp хранит срок пополнения этого размещения в секундах Unix. EliteMobs записывает его после получения добычи из SINGLE. Перед ручным удалением срока остановите сервер. Изменение действует после загрузки конфигурации и не сбрасывает уже работающий сундук.

Один файл может содержать несколько местоположений. Сроки SINGLE независимы; размещения GROUP вне инстансов разделяют список перезарядок по игрокам.

Дробные координаты округляются вниз до блока, в который они попадают. Не объединяйте старый location с locations. Загрузчик предпочитает location, но сохраняет сроки в непустой список locations. Удаление сундука командой /em remove убирает из файла только выбранное размещение и оставляет остальные на месте.

Пример
locations:
- my_world,10,50,10,0,0
- my_nether_world,12,58,12,0,0
- my_world,80,64,-30,0,0:1707394380

chestTier​

Задаёт уровень (tier) сундука, который является базой для уровня роняемой им добычи. Базовый уровень равен chestTier * 10.

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

Насколько chestTier на самом деле важен, зависит от того, где находится сундук и какого рода предмет лежит в таблице добычи:

СитуацияУровень, с которым выпадает добыча
Сундук открыт вне какого-либо инстансаЭлитные предметы scalable следуют естественному уровню спавна открывшего игрока, ±1. Всё остальное использует chestTier * 10.
Сундук внутри динамического подземельяВыбранный уровень подземелья используется для всего, элитные предметы scalable получают ±1. chestTier игнорируется.
Сундук внутри любого другого инстансаchestTier * 10 для всего.

Это уровни, передаваемые генерации предметов. Предметы fixed сохраняют заданные автором характеристики, а limited соблюдают свой предел; сундук не переопределяет эти правила масштабирования. В обычном мире выживания scalable следуют за открывшим игроком. Мимики используют другую формулу, см. mimicCustomBossesList.

Результат вычислений ±1 не ниже уровня 1. При отсутствии данных инвентаря игрока вне инстанса добыча использует chestTier * 10.

Оставленное по умолчанию значение 0 даёт базовый уровень добычи 0.

Пример
chestTier: 3

instanced​

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

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

НЕ ЗАДАВАЙТЕ ЭТО ЗНАЧЕНИЕ ВРУЧНУЮ.

КлючЗначенияПо умолчанию
instancedBooleanfalse
Пример
instanced: true

restockTime​

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

Это используется только устаревшим форматом одиночного сундука, где позиция сундука лежит в ключе location, а не в списке locations. Как только в файле появляются любые записи locations, время пополнения вместо этого записывается как суффикс :unixTimestamp у соответствующей записи locations, а этот ключ не трогается.

НЕ ЗАДАВАЙТЕ ЭТО ЗНАЧЕНИЕ ВРУЧНУЮ.

КлючЗначенияПо умолчанию
restockTimeМетка времени Unix в секундах0
Пример
restockTime: 1707394380

restockTimers​

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

Инстансовые сундуки не используют этот список — внутри инстанса перезарядка по игрокам хранится в памяти только на время жизни этого инстанса.

НЕ ЗАДАВАЙТЕ ЭТО ЗНАЧЕНИЕ ВРУЧНУЮ.

КлючЗначенияПо умолчанию
restockTimersString Listнет
Пример
restockTimers:
- '12345678-abcd-4ef0-8123-123456789012:1707394380'
- '09876543-abcd-4ef0-8123-098765432109:1707395000'

Каждая запись содержит UUID игрока и метку времени Unix в секундах, разделённые двоеточием.


Пример конфигурации сундука с сокровищами
isEnabled: true
chestType: CHEST
facing: NORTH
chestTier: 3
dropStyle: GROUP
lootList:
- filename=elite_scrap_tiny.yml:chance=0.90
- filename=magmaguys_toothpick.yml:chance=0.95
mimicChance: 0.50
mimicCustomBossesList:
- balrog.yml
- killer_rabbit_of_caerbannog.yml
restockTimer: 1
locations:
- world,0.0,-60.0,-14.0,0.0,0.0

Учтите, что каждая запись добычи выше использует префикс filename=. Запись magmaguys_toothpick.yml:chance=0.95 вместо этого была бы прочитана как устаревший формат filename.yml:chance, а chance=0.95 не является числом, поэтому запись выводила бы предупреждение разбора при каждом запуске.

create_chest_chest.jpg