
GD656FrontVoice
Мод GD656FrontVoice добавляет динамическую озвучку боя на серверах Minecraft: перезарядка, гранаты, убийства, подавление огнём. Работает с TACZ, поддерживает голосовые пакеты CN/US/RU и определяет врагов по ванильным командам или GD656Conquest.
GD656FrontVoice - это мод для Майнкрафт, который кардинально меняет атмосферу PvP-сражений на серверах с военными модами вроде TACZ. Если вы когда-нибудь хотели, чтобы перестрелки звучали как в настоящем тактическом шутере - с криками "Граната!", "Перезаряжаюсь!", "Подавление!" - то это именно то, что нужно. Мод анализирует события боя и проигрывает соответствующие голосовые реплики на русском, английском или китайском языке в зависимости от фракции игрока.
Зачем это нужно
В ванильном Майнкрафте нет никакой звуковой обратной связи во время боя, кроме звуков ударов и выстрелов. На серверах с TACZ (Timeless and Classics Zero) перестрелки становятся интенсивными, но игроки часто не замечают, что их подавляют, что рядом упала граната или что союзник погиб. GD656FrontVoice решает эту проблему: вы всегда слышите, что происходит вокруг, даже если не видите противника. Это повышает ситуационную осведомлённость и делает геймплей глубже.
Совместимость
- TACZ 1.1.7-hotfix или новее - настоятельно рекомендуется, большинство триггеров завязано на событиях TACZ.
- LR Tactical - мягкая совместимость: определяет метаемые гранаты и эффект горения.
- GD656Conquest - мягкая совместимость: определяет фракцию игрока для выбора голосового пакета.
- Поддерживается только Minecraft 1.20.1 Forge.
Установка на сервер
Мод разделён на клиентскую и серверную части. Обе стороны должны быть установлены для полной функциональности.
Серверные функции:
| Функция | Описание |
|---|---|
| Обнаружение боевых событий | Слушает события стрельбы, перезарядки, убийств TACZ и ванильные события урона/смерти |
| Система коридора подавления | Накопление стаков подавления, когда пули пролетают рядом с игроком |
| Обнаружение промахов снайперских пуль и РПГ | Отслеживает пули и ракеты, предупреждает при пролёте рядом |
| Сканирование гранат | Каждый тик проверяет наличие вражеских гранат в радиусе 5 блоков |
| Проверка пустого магазина | Опрашивает состояние патронов в текущем оружии TACZ |
| Обнаружение горения | Определяет, когда игрок горит (ванильный огонь или эффект LR Tactical) |
| Маршрутизация голосовых пакетов по фракциям | Определяет, какой пакет (CN/US/RU) использовать для каждого игрока |
| Рассылка аудиопакетов | Отправляет ClientboundPlayAudioPacket целевым клиентам |
Клиентские функции:
| Функция | Описание |
|---|---|
| Воспроизведение голосовых реплик | Получает пакеты, определяет реплику через CueRouter и проигрывает звук |
| Маршрутизация от первого/третьего лица | Для себя - локальный звук (без позиции), для других - позиционный |
| Троттлинг звуков | Ограничивает одновременные звуки на игрока и по типу, чтобы не было спама |
| Конфиг и команды | /gdfv клиентские команды для отладки и управления настройками |
| Переопределение фракции | Клиент может вручную задать голосовой пакет для союзников/врагов |
Короче: сервер детектит и запускает все события, клиент отвечает за воспроизведение и троттлинг. Сетевой трафик минимальный - один самодостаточный тип пакета.
Команды и конфигурация
Все параметры можно менять через экран конфига Forge или через игровые команды:
/gdfv debug summary Показать статистику звуковых манифестов
/gdfv debug list [filter] Список зарегистрированных звуковых событий
/gdfv debug play local <sound_event> [volume] [pitch]
/gdfv debug play position <sound_event> <pos> [volume] [pitch] [distance]
/gdfv debug play entity <sound_event> <entity> [volume] [pitch] [distance]
/gdfv debug play cue <voice_cue> <camp> <entity> [volume]
/gdfv config reload Горячая перезагрузка конфигов
Команды требуют уровень прав 2 (оператор сервера). Изменения в конфиге применяются мгновенно.
Ключевые настройки
Серверный конфиг (common):
| Параметр | По умолчанию | Описание |
|---|---|---|
audio.serverEnabled | true | Глобальный серверный выключатель рассылки звука |
audio.serverMasterVolume | 1.0 | Глобальный множитель громкости (0.0-4.0) |
Клиентский конфиг:
| Параметр | По умолчанию | Описание |
|---|---|---|
audio.enabled | true | Воспроизведение звуков на клиенте |
audio.friendlyVoicePack | CN | Голосовой пакет для союзников (если Conquest не установлен или игнорируется) |
audio.enemyVoicePack | US | Голосовой пакет для врагов |
audio.detectEnemyByVanillaTeam | true | Определять врагов по ванильной команде (isAlliedTo) |
audio.ignoreConquestCamp | false | Игнорировать фракцию Conquest, использовать ручные настройки |
audio.fallbackThirdPersonForLocal | true | Если нет звука от первого лица - использовать от третьего |
audio.masterVolume | 1.0 | Общая громкость клиента (0.0-4.0) |
audio.firstPersonVolume | 1.0 | Дополнительный множитель для звуков от первого лица |
audio.thirdPersonVolume | 1.0 | Дополнительный множитель для звуков от третьего лица |
audio.maxSimultaneousSingleTpSound | 2 | Максимум однотипных звуков от третьего лица одновременно |
audio.maxSimultaneousTpPlayersFriendly | 3 | Максимум союзников, издающих звуки от третьего лица |
audio.maxSimultaneousTpPlayersEnemy | 3 | Максимум врагов, издающих звуки от третьего лица |
audio.maxThirdPersonDistance | 48.0 | Максимальная дистанция слышимости звуков от третьего лица (блоки) |
Голосовые реплики по событиям
Мод отслеживает кучу событий и проигрывает соответствующие реплики. Вот полный список:
| Реплика | Условие срабатывания | Воспроизведение |
|---|---|---|
| DEATH | Игрок умирает (не зритель) | Слои: 1P смерть + SFX себе; 3P реакция союзников рядом |
| EXPLOSION_CLOSE | Игрок получает урон от взрыва, но выживает (здоровье > 0) | 1P себе, кулдаун 1 сек |
| LOW_HEALTH_PANIC | Здоровье падает ниже 5 (половина сердца × 5) | 1P себе, один раз за эпизод низкого здоровья |
| HEAVY_HURT | Игрок получает урон от пули TACZ (не снайпер, не РПГ, не взрыв), выживает | 1P себе, кулдаун 10 сек, подавляется если в том же тике более приоритетная реплика |
| BURNING | Игрок горит (ванильный огонь или эффект LR Tactical) | Слои 1P: крик + пламя + искры, один раз за эпизод горения |
| REQUEST_AMMO | В магазине ноль патронов, в стволе ноль, в инвентаре нет подходящих патронов | 1P себе, один раз за эпизод; проверка каждую секунду пока пусто, каждые 3 сек когда заряжено |
| GRENADE_ALERT | Вражеская граната LR Tactical в радиусе 5 блоков | 1P себе, сканирование каждые 5 тиков; свои гранаты исключены |
| THROW_GRENADE | Игрок начинает заряжать взрывную гранату или коктейль Молотова (зажатие ПКМ) | 3P трансляция всем рядом |
| THROW_SMOKE | Игрок начинает заряжать дымовую гранату | 3P трансляция всем рядом |
| RELOADING | Игрок перезаряжает оружие TACZ (GunReloadEvent) | 3P трансляция всем рядом, кулдаун 1 сек |
| SUPPRESSED | 6+ стаков подавления от не-пулемётного огня за 1 секунду (см. систему коридора) | 1P цели, кулдаун 4 сек |
| MACHINE_GUN_ALERT | 6+ стаков подавления от пулемётного огня за 1 секунду | 1P цели, кулдаун 4 сек |
| SUPPRESSING_HOSTILE | Стрелок набирает 9+ стаков подавления на врагах за 1 секунду | 1P стрелку, кулдаун 4 сек, разделение агрессивных реплик 1 сек |
| SNIPER_ALERT | Снайперская пуля пролетает в 5 блоках от игрока ИЛИ игрок впервые ранен снайпером | 1P цели, кулдаун 3 сек |
| RPG_ALERT | Ракета РПГ пролетает в 10 блоках от игрока ИЛИ игрок впервые ранен РПГ | 1P цели, кулдаун 3 сек |
| KILL_ENEMY | Игрок убивает врага из оружия TACZ (не хедшот, или нет союзников рядом для nice-shot) | 1P убийце |
| NICE_SHOT | Игрок делает хедшот и союзник-наблюдатель в радиусе 5 блоков | 3P ближайшему союзнику-наблюдателю |
| FRIENDLY_FIRE | Игрок убивает союзника и наблюдатель в радиусе 2 блоков | 3P ближайшему наблюдателю, кулдаун 4 сек |
| TEAMMATE_DOWNED | Союзник убит рядом | 3P трансляция ближайшим союзникам (через GDCQ deferred death) |
Система коридора подавления
Когда игрок стреляет из оружия TACZ, сервер вычисляет "коридор огня" - цилиндр длиной 24 блока от глаз стрелка с радиусом 1.6 блока вдоль направления взгляда. Каждый враг внутри этого коридора получает один стак подавления.
- Стаки исчезают через 20 тиков (1 секунду) после первого стака
- 6 стаков: срабатывает
SUPPRESSEDна цели (илиMACHINE_GUN_ALERT, если все стаки от пулемёта) - 9 стаков: дополнительно срабатывает
SUPPRESSING_HOSTILEна стрелке - Кулдауны: 4 секунды на цель для подавления, 4 секунды на стрелка для подавления врага, разделение агрессивных реплик 1 секунда
Обнаружение промахов снарядов
Когда создаются пули TACZ (EntityJoinLevelEvent), сервер начинает их отслеживать. Каждый тик классифицирует снаряды по типу оружия:
- Снайперские пули (тип
sniper): радиус пролёта 5 блоков - Ракеты РПГ (тип
rpg): радиус пролёта 10 блоков
Для каждого снаряда проверяется пересечение отрезка между предыдущей и текущей позицией с увеличенным bounding box вражеских игроков. Также срабатывает при первом прямом попадании из снайперки или РПГ. Кулдаун - 3 секунды на цель.
Неопознанные снаряды удаляются после 5 тиков проверки; мёртвые или удалённые снаряды очищаются автоматически.
Обнаружение гранат и бросков
- Сканирование: каждые 5 тиков сервер проверяет радиус 5 блоков вокруг каждого игрока на наличие
ThrowableItemEntityтипаEXPLOSIVE_GRENADEот LR Tactical. Свои гранаты исключены. - Обнаружение броска: каждый тик проверяется, использует ли игрок метаемый предмет (зажатие ПКМ). Когда игрок начинает заряжать или переключается на другой тип гранаты, срабатывает соответствующая реплика -
THROW_SMOKEдля дымовых,THROW_GRENADEдля взрывных и коктейлей Молотова.
Режимы воспроизведения звука
Клиент поддерживает три режима:
| Режим | Поведение | Применение |
|---|---|---|
| LOCAL | Непозиционный, фиксированная громкость (SoundSource.PLAYERS, relative=true) | Обратная связь от первого лица (боль, смерть, низкое здоровье) |
| POSITION | Статическая позиция в мире, затухание по расстоянию | Звуки в конкретной точке мира |
| ENTITY | Привязан к живому существу, следует за ним каждый тик, останавливается при удалении сущности | Звуки от третьего лица, привязанные к игроку (перезарядка, бросок гранаты) |
Для воспроизведения от первого лица громкость умножается на firstPersonVolume, для третьего - на thirdPersonVolume. Если у реплики нет варианта от первого лица, клиент может использовать вариант от третьего (настройка fallbackThirdPersonForLocal).
Троттлинг звуков
Чтобы избежать каши в интенсивных перестрелках, клиент ограничивает воспроизведение:
- На одного игрока от первого лица: только один активный звук одновременно, кроме
BURNING(свой список) и реплик с бесконечным приоритетом (DEATH,FINAL_DEATH, все звуки возрождения) - На одного игрока от третьего лица: не может быть двух активных звуков одновременно
- По типу от третьего лица: не более
maxSimultaneousSingleTpSound(по умолчанию 2) экземпляров одного типа глобально - По фракции: не более
maxSimultaneousTpPlayersFriendly(3) союзников иmaxSimultaneousTpPlayersEnemy(3) врагов, издающих звуки от третьего лица. При достижении лимита самый дальний игрок вытесняется, если новый ближе.
Наложение звуков
Некоторые реплики проигрывают несколько слоёв одновременно:
- DEATH: слой от первого лица
fp.death.death+ SFX слойfp.death.sfx; реакция союзников от третьего лица черезtp.{camp}.death - BURNING: три слоя от первого лица -
fp.burning.scream+fp.burning.flame+fp.burning.spark
Интеграция с GD656Conquest
Если на сервере установлен GD656Conquest, GD656FrontVoice автоматически определяет его через рефлексию и использует его API для трёх целей:
- Определение фракции:
resolveCamp(player)возвращает фракцию игрока (CN/US/RU) из системы команд Conquest. Голосовой пакет назначается по реальной фракции. - Проверка враждебности:
isSameCamp(left, right)определяет, принадлежат ли два игрока к одной команде Conquest. Это заменяет ванильную проверкуisAlliedTo, то есть врагами считаются только игроки из разных команд Conquest (для подавления, снайперского и РПГ-предупреждений). - Отложенная смерть:
shouldDeferDeathCue(player)позволяет Conquest контролировать, воспроизводить ли реплику смерти сразу или отложить (например, для систем нокдауна/возрождения).
Без GD656Conquest: все игроки по умолчанию получают голосовой пакет CN; враждебность определяется по ванильным командам.
На клиенте настройка ignoreConquestCamp позволяет переопределить серверную фракцию и использовать свои friendlyVoicePack / enemyVoicePack.
Важно знать
- Мод требует установки и на сервер, и на клиент для полной работы.
- Находится в активной разработке (версия 0.x), фичи могут меняться.
- Если вы собираете PvP-сервер с TACZ - это практически must-have. Атмосфера становится намного реалистичнее, а игроки получают важную тактическую информацию через звук.
- На слабых машинах троттлинг и ограничения помогут избежать лагов звука.
Скачайте мод GD656FrontVoice и превратите свои перестрелки в Майнкрафт в настоящий боевик!
Как поиграть с друзьями с модом GD656FrontVoice?
Мод GD656FrontVoice куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода GD656FrontVoice будет готов за пару минут - BungeeHost сделает всё за вас.
