Клик по NPC
Если NPC-торговец - это один конкретный NPC, открывающий один конкретный магазин, то это меню - обобщённый интерфейс “что это за NPC”, который может вызвать любой из нескольких NPC. Меню читает id, имя и мир кликнутого NPC через контекстные плейсхолдеры и предлагает действия, которые работают для любого из них.
Что показывает пример
Заголовок раздела «Что показывает пример»- Перечисление нескольких ID NPC в
clickNPC: [1, 2, 3], чтобы любой из них открывал это меню - Персонализацию меню через
%activator_npc_name%,%activator_npc_id%,%activator_npc_world%в заголовке, именах предметов и lore - Использование
skullOwner: "%activator_npc_name%", чтобы текстура головы в заголовке соответствовала имени кликнутого NPC - Маршрутизацию разных NPC в разные меню (оставлено как упражнение через действие openMenu)
Паттерн маршрутизации NPC
Заголовок раздела «Паттерн маршрутизации NPC»Плитка “Поговорить с торговцем” в примере открывает ame_shop для любого NPC. На реальном сервере можно маршрутизировать по-разному в зависимости от NPC:
click { actions { rules { and { # Гипотетически: только NPC #2 открывает редкий магазин if: "%activator_npc_id% == 2" } actions { openMenu: "ame_rare_shop" } denyActions { openMenu: "ame_shop" } } }}Для более чем 2 маршрутов используйте oneof:
oneof: [ { if: "%activator_npc_id% == 1", actions { openMenu: "ame_blacksmith_shop" } } { if: "%activator_npc_id% == 2", actions { openMenu: "ame_alchemy_shop" } } { if: "%activator_npc_id% == 3", actions { openMenu: "ame_armorer_shop" } }]oneof останавливается на первом совпадении, так что каждый ID NPC попадает ровно в одну ветку.
Попробовать
Заголовок раздела «Попробовать»- Установите Citizens.
- Заспавните трёх NPC, запомните их ID.
- Положите бандл в
plugins/AbstractMenus/menus/example/. ЗаменитеclickNPC: [1, 2, 3]на ваши реальные ID NPC. /am reload.- Кликните правой кнопкой по любому из NPC. Меню откроется с данными этого NPC в заголовке.