
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Зависимости: Платформа: Paper / Folia (Spigot и другие устаревшие ответвления Bukkit не поддерживаются) Версия Java: Java 21+ (для новейших…
Зависимости: Платформа: Paper / Folia (Spigot и другие устаревшие ответвления Bukkit не поддерживаются) Версия Java: Java 21+ (для новейших сборок требуется Java 25) Версия Minecraft: 1.19.4 – 1.21.x Дополнительные библ
Зависимости:
Платформа: Paper / Folia (Spigot и другие устаревшие ответвления Bukkit не поддерживаются)
Версия Java: Java 21+ (для новейших сборок требуется Java 25)
Версия Minecraft: 1.19.4 – 1.21.x
Дополнительные библиотеки: PlaceholdersAPI (рекомендуется для интеграции переменных в интерфейс действий)
Создание интерактивных неигровых персонажей (NPC) на серверах Minecraft традиционно сопровождается значительными аппаратными затратами. Устаревшие решения регистрируют NPC как полноценные серверные сущности (Entity), что заставляет ядро обрабатывать их искусственный интеллект, физические коллизии, поиск пути и загрузку чанков. Это приводит к критическому снижению показателя TPS (Ticks Per Second) при росте количества персонажей. Плагин FancyNpcs предлагает альтернативный, пакетный метод рендеринга виртуальных персонажей, что позволяет держать сотни интерактивных фигур без какого-либо влияния на производительность серверного потока.
Пакетная архитектура и совместимость с Folia
Основная техническая особенность FancyNpcs заключается в том, что создаваемые персонажи существуют исключительно в памяти плагина и на стороне подключённых клиентов. Сервер не добавляет их в базу данных мира и не обрабатывает их в общем цикле обновления сущностей.
Когда игрок приближается к заданным координатам, плагин перехватывает сетевой трафик и отправляет клиенту пакеты ClientboundAddPlayerPacket (для человеческих моделей) или ClientboundAddEntityPacket (для других существ). Дальнейшее поведение, экипировка и статус отображения обновляются с помощью пакетов ClientboundSetEntityDataPacket (метаданные) и ClientboundSetEquipmentPacket (снаряжение). Для сервера этих персонажей не существует — они являются «виртуальными проекциями» для конечных пользователей.
Такой подход делает FancyNpcs идеальным выбором для многопоточных серверов на базе Folia. Поскольку Folia разделяет мир на отдельные регионы, каждый из которых работает в собственном потоке, традиционные NPC-плагины часто вызывают дедлоки и критические ошибки из-за попыток взаимодействия между потоками разных регионов. FancyNpcs обрабатывает данные асинхронно и отправляет пакеты игрокам напрямую, полностью избегая конфликтов планировщика задач Folia.
Возможности настройки внешнего вида
Плагин поддерживает широкий спектр типов сущностей и визуальных эффектов. Игроки могут создавать NPC в виде любых ванильных мобов (Player, Cow, Zombie, Skeleton, Villager, Pig и т. д.) и тонко настраивать их вид.
Управление скинами (для человеческих моделей)
Для персонажей типа player доступно несколько источников загрузки текстур:
@mirror: скин NPC динамически копирует скин того игрока, который на него смотрит в данный момент.Имя или UUID лицензионного аккаунта: плагин автоматически отправляет запрос к серверам Mojang сессии для загрузки соответствующей текстуры.
Прямая ссылка на веб-ресурс (URL): возможность загрузить любой сторонний .png файл с веб-сервера.
Локальные файлы: изображения, заранее размещённые в папке /plugins/FancyNpcs/skins/.
Флаг
--slim: активирует использование тонкой модели рук (Alex-стиль) для загруженных по ссылкам скинов.
Визуальные эффекты и атрибуты
Свечение (Glowing): добавляет цветной контур вокруг персонажа. Цвет привязывается к ванильным цветам команд (Team Colors).
Снаряжение (Equipment): персонажам можно выдать любые предметы в левую или правую руку, а также надеть шлем, нагрудник, поножи и ботинки.
Позы (Poses): поддерживаются специфические состояния отображения, такие как сидение, лежание (имитация сна на кровати), плавание и ползание.
Размер (Scale): в новых версиях плагина реализована поддержка масштабирования сущностей (изменение физического размера модели).
Система команд и синтаксис
Управление персонажами осуществляется исключительно с помощью команд в игровом чате или консоли сервера. Таблица ниже содержит описание базового синтаксиса:
Команда | Описание и параметры | Пример использования |
| Создание нового персонажа |
|
| Удаление существующего персонажа |
|
| Изменение скина (имя, url или @mirror) |
|
| Надевает на NPC предмет, который держит игрок |
|
| Включает цветное свечение вокруг модели |
|
| Заставляет персонажа поворачивать голову к игрокам |
|
| Устанавливает специфические позы или варианты мобов |
|
Для глобального администрирования плагина используются команды платформы:
/fancynpcs reload— перезагружает системные конфигурации./fancynpcs save— принудительно записывает текущее состояние всех NPC на диск в файл базы данных.
Система интерактивных действий (Actions)
FancyNpcs содержит встроенный скриптовый механизм действий, который активируется при взаимодействии игрока с персонажем. Действия можно настраивать на разные типы кликов (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
Плагин предлагает следующие типы действий для выполнения:
message: отправка сообщения игроку. Поддерживает MiniMessage (Hex-цвета) и переменные PlaceholdersAPI.player_command: выполнение команды от имени игрока.player_command_as_op: выполнение команды от имени игрока с временным предоставлением прав оператора (для активации команд, которые обычный игрок не может использовать).console_command: выполнение команды консолью сервера. Переменная {player} автоматически заменяется на имя игрока.send_to_server: мгновенное перемещение игрока на другой сервер в сети BungeeCord или Velocity.wait: создаёт паузу между действиями (задержка в тиках сервера).block_until_done: предотвращает повторные нажатия на NPC до завершения текущего сценария действий.execute_random_action: случайный выбор одного из следующих действий в списке.
Пример создания сложного интерактивного сценария для NPC с именем Bob:
Добавление приветственного сообщения:
/npc action Bob RIGHT_CLICK add message <yellow>Добро пожаловать на наш сервер, %player_name%!</yellow>Добавление паузы в 40 тиков (2 секунды):
/npc action Bob RIGHT_CLICK add wait 40Телепортация игрока на спавн консолью:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Благодаря возможности добавлять несколько последовательных шагов и регулировать очередь с помощью add_before, add_after и move_up/move_down, администраторы могут строить полноценные диалоговые деревья или сложные механики переходов между лобби-серверами без установки дополнительных плагинов вроде Denizen или MyCommand.
Структура файлов настроек
Все данные хранятся в каталоге plugins/FancyNpcs/. Работа плагина базируется на двух файлах:
1. config.yml
Этот файл определяет глобальное поведение плагина и содержит такие настройки:
turn_to_player_distance(по умолчанию 5): радиус в блоках, в пределах которого персонаж поворачивает голову к игрокам. Снижение этого параметра оптимизирует передачу сетевых пакетов в загруженных зонах.visibility_distance(по умолчанию 20): расстояние в блоках, на котором клиенту отправляются пакеты появления NPC. Уменьшение помогает скрыть персонажей за стенами или туманом рендеринга для экономии FPS игроков.enable_autosave: автоматическая периодическая запись изменений на диск.
2. npcs.yml
В этом файле плагин хранит базу данных созданных NPC. Каждый персонаж описывается отдельным блоком данных:
YAML
Bob: id: 104 type: PLAYER world: world x: 10.5 y: 64.0 z: -25.5 yaw: 90.0 pitch: 0.0 glowing: false turn_to_player: true skin: value: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUv..." signature: "d3G8h...==" actions: RIGHT_CLICK: - type: MESSAGE value: "<green>Добро пожаловать!</green>" |
Предупреждение: Ручное редактирование файла npcs.yml крайне не рекомендуется из-за риска повреждения синтаксиса или некорректного определения координат. Любые изменения конфигурации NPC следует выполнять исключительно через внутриигровые команды, а затем фиксировать их с помощью /fancynpcs save.
Заключение
Плагин FancyNpcs является современным и производительным решением для создания декоративных и интерактивных персонажей на серверах Minecraft Java Edition. Он устраняет главную проблему старых инструментов — потребление процессорного времени сервера на обслуживание сущностей.
Главное ограничение плагина — полное отсутствие искусственного интеллекта. Поскольку персонажи являются виртуальными проекциями на стороне клиента, они не могут самостоятельно перемещаться по миру, взаимодействовать с блоками или атаковать других мобов.
По сравнению с классическим плагином Citizens, который поддерживает сложные механики передвижения (навигация по вейпоинтам) и интеграцию с боевыми системами (мод Sentinel), FancyNpcs уступает по гибкости искусственного интеллекта. Однако Citizens создаёт колоссальную нагрузку на главный поток сервера и практически непригоден для использования на Folia. FancyNpcs предлагает идеальную альтернативу для лобби-серверов, Velocity-хабов и крупных SMP-проектов, где от персонажей требуется лишь статичное присутствие, хороший вид и быстрое выполнение команд при нажатии.
Установка
Базовая установка занимает около 5 минут. Общий процесс одинаков, отличается только лоадер и совместимый билд.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.











