Ежедневный кит с кулдауном
Классический паттерн ежедневного кита: игрок забирает кит, блокируется на 24 часа, потом снова может забрать. Построено на временных переменных (автоистечение через заданный срок), паттерне с двумя предметами (разный вид во время кулдауна) и подстановке шаблонов, чтобы метаданные кита расшаривались между обоими состояниями.
Что показывает пример
Заголовок раздела «Что показывает пример»- Сокращение для временных переменных:
setVarp: "name::value::1d"(автоистечение через 1 день) - Плейсхолдер
%varpt_:name%для отображения “оставшееся время” - Подстановка шаблона:
${defaultKitTemplate}переиспользуется в состояниях ДОСТУПЕН и КУЛДАУН - Расширение lore:
lore: ${defaultKitTemplate.lore} [ ... extra lines ... ]дописывает к lore из шаблона - Правило
group:для гейтинга через LuckPerms на VIP-ките
Как работают временные переменные
Заголовок раздела «Как работают временные переменные»setVarp: "ame_kit_default::1::1d" парсится так:
- Имя переменной:
ame_kit_default - Значение:
1(само значение не используется, важен только факт существования) - Срок:
1d(один день - другие единицы:s,m,h,d,w)
Через 24 часа переменная автоматически удаляется. Правило existVarp после этого даёт false, предмет с кулдауном пропадает, и снова показывается предмет ДОСТУПЕН.
Плейсхолдер %varpt_:ame_kit_default% возвращает оставшееся до истечения время в человекочитаемом виде (“23h 47m” или похожее). Удобно для сообщений “доступно через X”.
Подстановка шаблона + расширение lore
Заголовок раздела «Подстановка шаблона + расширение lore»Каждый кит один раз в начале файла определяет свой слот, материал, имя и базовый lore:
defaultKitTemplate { slot: 11 material: WOODEN_SWORD name: "&aDefault Kit" lore: [ "&7Includes:", "&7- Leather armor set", ... ]}Оба предмета - ДОСТУПЕН и КУЛДАУН - ссылаются на этот шаблон:
# ДОСТУПЕН: дополняет lore строкой "Click to claim"${defaultKitTemplate} { lore: ${defaultKitTemplate.lore} [ "", "&aClick to claim" ] click { ... claim logic ... }}
# КУЛДАУН: дополняет lore строкой с оставшимся временем${defaultKitTemplate} { material: GRAY_DYE lore: ${defaultKitTemplate.lore} [ "", "&cAvailable in &e%varpt_:ame_kit_default%" ] rules { existVarp: "ame_kit_default" }}Синтаксис ${defaultKitTemplate.lore} [ ... ]: взять существующий массив lore и дописать в конец новые элементы. Базовый lore не нужно копипастить.
Когда переменной не существует, у предмета КУЛДАУН проваливается правило existVarp, и он не отрисовывается. На его место встаёт предмет ДОСТУПЕН (без правил). Когда переменная есть, отрисовывается КУЛДАУН, а ДОСТУПЕН подавляется по логике конфликта слотов.
Кастомизация
Заголовок раздела «Кастомизация»Чтобы добавить ещё тиры китов:
- Добавь блок
xxxKitTemplateв начале со своимиslot:,material:,name:, базовымlore:. - Добавь предмет ДОСТУПЕН на основе шаблона +
click { ... }с содержимым кита и уникальным именемsetVarp. - Добавь предмет КУЛДАУН на основе шаблона +
rules { existVarp: "..." }с тем же именем переменной.
Для гейтинга по правам на конкретный тир добавь rules { group: "tier_name" } в click-блок (или permission: "..." для более простой проверки).
Попробовать
Заголовок раздела «Попробовать»После установки пакета примеров:
- Положи бандл в
plugins/AbstractMenus/menus/example/. /am reload.- Введи
/ame_daily_kitв игре. - Забери обычный кит. Предмет станет серым и покажет “Доступен через 23h 59m…”