ViScriptTeam
Добавляет системы фракций и групп с репутацией, позволяя настраивать враждебность между фракциями и совместную игру в группах.
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 181
- Подписчиков на Modrinth
- 0
- версии
- 2
- Обновлён
- 1 августа 20261 авг.
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
ViScriptTeam
Легковесный мод на отношения фракций для RPG-карт, PVE-карт и сюжетных серверов Minecraft. Он предоставляет данные фракций, назначение фракций сущностям, репутацию для каждого игрока, враждебность между фракциями, контроль дружественного огня, нацеливание мобов с учётом фракций и цветные никнеймы. Этот мод не является заменой ванильной системы команд. Он задуман как отдельный слой фракций для создателей карт, которым нужно моделировать отношения между монстрами, NPC, силами и игроками.
Основные концепции
Фракции
Фракция — базовая единица для назначения сущностей и репутации игроков. ID фракций автоматически приводятся к нижнему регистру (например, Guards становится guards). Каждая фракция определяет:
- Очки репутации по умолчанию — стартовая репутация каждого игрока к этой фракции.
- Порог нейтралитета — репутация ниже этого значения считается Враждебной; на этом значении или выше игрок как минимум Нейтрален.
- Порог дружелюбия — репутация на этом значении или выше считается Дружелюбной.
- Переключатель дружественного огня — могут ли сущности одной фракции или дружественные игроки наносить друг другу урон.
- Переключатель атаки вражеских фракций — будут ли сущности этой фракции активно нацеливаться на членов вражеских фракций.
Список вражеских фракций — набор ID фракций, которые эта фракция считает враждебными. Конфигурация по умолчанию:
Диапазон Отношение < 50Враждебное 50 – 99Нейтральное >= 100Дружелюбное
Фракции сущностей
Любая сущность, кроме игрока, может быть назначена на фракцию. Это предназначено для мобов, NPC, стражников, существ из спавнеров и сущностей карт-механик. Назначение фракции сущности хранится по UUID, поэтому оно сохраняется при перезагрузке сущностей, пока сущность остаётся в мире. Игроки не используют систему фракций сущностей для выражения принадлежности. Вместо этого отношения игрока с фракциями выражаются через репутацию для каждого игрока, что сохраняет гибкость системы для будущего дизайна групп.
Репутация игрока
Каждый игрок поддерживает независимый счёт репутации для каждой фракции. Счёт определяет отношение фракции к этому игроку:
- Враждебное — фракция считает игрока врагом. Сущности этой фракции будут активно нацеливаться на игрока и наносить урон.
- Нейтральное — фракция не атакует и не защищает игрока.
- Дружелюбное — фракция считает игрока союзником. Применяются правила дружественного огня, и игрок защищён от урона сущностей той же фракции, если фракция не разрешает дружественный огонь. Репутацию можно установить в абсолютное значение или изменить на дельту, что делает её подходящей для наград за задания, штрафов за убийства, сюжетных триггеров и прогрессивных систем репутации.
Группы
Группы — независимая система объединения, отдельная от фракций. Они предназначены для заданий, подземелий, сюжетных событий и скриптовой логики, которой нужно знать, «какие игроки сейчас объединены вместе». Каждая группа содержит:
- ID группы — уникальный нормализованный идентификатор.
- Лидер — игрок, который ведёт группу. Если лидер выходит, следующий участник автоматически становится лидером.
- Список участников — все игроки, currently в группе.
- Переключатель дружественного огня — могут ли участники группы наносить друг другу урон. Игрок может состоять только в одной группе одновременно. Присоединение к новой группе автоматически покидает предыдущую. Группы без оставшихся участников автоматически удаляются.
Враждебность между фракциями
Враждебность между фракциями однонаправленная. Если вы хотите, чтобы фракции A и B были взаимно враждебны, нужно добавить оба направления:
A -> Bне создаёт автоматическиB -> A. Такая конструкция позволяет асимметричные отношения, например фракцию, враждебную к другой, но без взаимности.
Детали поведения
Цвета никнеймов
Клиент отображает никнеймы сущностей с цветовыми подсказками на основе эффективного отношения игрока, который смотрит, к фракции сущности:
| Отношение | Цвет |
|---|---|
| Дружелюбное | Зелёный |
| Нейтральное | Жёлтый |
| Враждебное | Красный |
Мод не заставляет никнеймы появляться. Видимость по-прежнему контролируется ванильными механиками или другими модами (например, CustomNameVisible, правилами отображения имён сущностей, NBT-данными, заданными создателями карт). Данные никнеймов синхронизируются с клиентами при входе, возрождении, смене измерения и при любом изменении данных фракций/репутации. Если игрок состоит в группе, эффективное отношение рассчитывается с использованием стратегии положения группы.
Правила урона
Мод перехватывает события урона, чтобы обеспечить соблюдение правил фракций и групп как страховку, даже когда кастомный ИИ или другие механизмы обходят обычный выбор цели:
- Одна группа — участники группы не могут ранить друг друга, если в группе не включён дружественный огонь.
- Одна фракция — сущности одной фракции не могут ранить друг друга, если фракция не разрешает дружественный огонь.
- Игрок против дружелюбной фракции — когда у игрока дружелюбное отношение к фракции, ни игрок, ни сущности фракции не могут наносить друг другу урон, если фракция не разрешает дружественный огонь.
- Нейтральное — нейтральные отношения не дают защиты от урона, но сущности также не будут активно нацеливаться на нейтральных игроков.
- Враждебное — урон всегда разрешён.
Нацеливание мобов
Мод внедряет цель нацеливания на фракции с низким приоритетом во все сущности Mob на стороне сервера:
- Сущности без назначенной фракции полностью не затронуты — никаких дополнительных затрат на сканирование.
Сущности с фракцией будут:
- Активно нацеливаться на игроков, враждебных к их фракции.
- Активно нацеливаться на сущности, принадлежащие вражеским фракциям (если у фракции включён переключатель «атаковать вражеские фракции»).
- Никогда не нацеливаться на сущности той же фракции.
Цель нацеливания работает с низким приоритетом, что делает её совместимой с ванильным ИИ и большинством модифицированных сущностей, использующих стандартную систему целей.
- Проверка на каждом тике очищает недействительные цели и останавливает навигацию, если моб почему-то нацелен на защищённую сущность. Для полностью кастомных реализаций ИИ мод предоставляет методы
FactionApi, которые можно вызывать напрямую.
Эффективное положение группы
Группы не хранят собственную репутацию фракции. Вместо этого эффективное положение вычисляется динамически из репутаций участников, когда нужно определить отношение фракции. Стратегия по умолчанию — min — самая низкая репутация среди всех участников группы. Это не позволяет враждебному игроку присоединиться к дружественной группе, чтобы обойти враждебность стражи, ИИ мобов, доступ в подземелья или права фракции. Встроенные стратегии:
| Стратегия | Описание | Рекомендуемое применение |
|---|---|---|
min | Самая низкая репутация участника (по умолчанию) | Враждебность стражи, обнаружение врагов, контроль доступа в подземелья |
average | Средняя репутация участников, округлённая вниз | Отображение поселений, мягкие оценки |
leader | Только репутация лидера | Триггеры сюжета, точки входа в квесты |
max | Самая высокая репутация участника | Особые скрипты, где достаточно, чтобы «кто-то в группе знал эту фракцию» |
Все ванильные и модифицированные механики нацеливания, перехвата урона и цвета ников используют стратегию по умолчанию min. Репутации отдельных игроков всегда хранятся независимо — группа — лишь временная линза для оценки отношений с фракциями.
Сохранение данных
Все данные фракций, привязки сущностей, репутации игроков и членство в группах хранятся в сохранённых данных мира (привязаны к оверворлду). Это значит:
- Данные сохраняются между перезапусками сервера.
- Удаление фракции автоматически очищает все связанные привязки сущностей, репутации игроков и ссылки на враждебные фракции в других фракциях.
- Изменения состава группы сохраняются сразу.
Частые вопросы
Как установить ViScriptTeam?
Установите NeoForge под свою версию Minecraft, скачайте ViScriptTeam под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть ViScriptTeam?
У ViScriptTeam есть сборки для Minecraft 1.21.1.
Нужен ли ViScriptTeam на сервере?
Нужен и в игре, и на сервере