GD656FrontVoice
GD656FrontVoice добавляет фракционные боевые голосовые оповещения — перезарядка, гранаты, убийства, предупреждения о подавлении — с голосовыми пакетами CN/US/RU. Работает с TACZ, определяет врагов по ванильной команде.
- Загрузчики
- Forge
- Скачиваний на Modrinth
- 709 тыс.
- Подписчиков на Modrinth
- 3
- версий
- 5
- Обновлён
- 29 июля 202629 июл.
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
Обзор
GD656FrontVoice — это мод для Minecraft, который добавляет динамическую систему боевых голосовых реплик на мультиплеерные серверы. Он воспроизводит фракционные голосовые сигналы — китайские (CN), американские (US) и русские (RU) — срабатывающие при боевых событиях: получение урона, бросок гранаты, перезарядка, убийство врагов, подавление огнём и другое.
Последнее обновление: 25 июля 2026 г. Некоторые функции могут быть не полностью задокументированы или могут измениться.
Совместимость
- Настоятельно рекомендуется TACZ (Timeless and Classics Zero) 1.1.7-hotfix или новее — большинство триггеров боевых событий зависят от системы событий и API типов оружия TACZ;
- Мягкая совместимость с LR Tactical — определяет метаемые сущности для предупреждения о гранатах и сигналов при броске, а также эффект огня для обнаружения горения;
- Мягкая совместимость с GD656Conquest — определяет информацию о фракции/лагере для маршрутизации голосовых пакетов;
- На данный момент поддерживается только Minecraft 1.20.1 Forge.
Установка на сервер
Этот мод разделён на клиентскую и серверную функциональность. Для полной работы требуется установка на обе стороны.
Функции только для сервера:
| Функция | Примечания |
|---|---|
| Обнаружение боевых событий | Слушает события выстрела, перезарядки, убийства из TACZ и ванильные события урона/смерти |
| Система коридора подавляющего огня | Накапливает стаки подавления, когда пули пролетают рядом с игроком, и запускает голосовые сигналы при достижении порогов |
| Обнаружение близкого пролёта снарядов | Отслеживает снайперские пули и ракеты RPG, предупреждает игроков, когда снаряды пролетают рядом |
| Сканирование предупреждений о гранатах | Каждый тик сканирует ближайшие враждебные метаемые предметы и предупреждает находящихся под угрозой игроков |
| Опрос пустого боезапаса | Каждый тик проверяет состояние боезапаса удерживаемого игроком оружия TACZ |
| Обнаружение горения | Определяет, когда игрок горит (ванильный огонь или эффект горючести из LR Tactical) |
| Обнаружение броска гранаты | Определяет, когда игрок начинает готовить гранату/коктейль Молотова/дымовую шашку |
| Маршрутизация голоса с учётом лагеря | Определяет, какой голосовой пакет (CN/US/RU) использовать для каждого игрока |
| Рассылка аудиопакетов | Отправляет ClientboundPlayAudioPacket целевым клиентам |
Функции только для клиента:
| Функция | Примечания |
|---|---|
| Воспроизведение голосовых сигналов | Принимает пакеты, определяет голосовые сигналы через CueRouter и воспроизводит звуки |
| Маршрутизация от первого/третьего лица | Воспроизводит локальные (непозиционные) звуки для себя, позиционные звуки для других |
| Ограничение звука | Ограничивает одновременные звуки на игрока и на тип, чтобы предотвратить спам |
| Система конфигурации и команд | Клиентские команды /gdfv для отладки и управления конфигурацией |
| Переопределение перспективы лагеря | Клиентское определение союзник/враг может переопределить назначенный сервером голосовой пакет |
Короче говоря: сервер обнаруживает и запускает все голосовые события; клиент отвечает за воспроизведение, маршрутизацию и ограничение. Сетевой трафик минимален (единственный самоописывающий тип пакета, ClientboundPlayAudioPacket).
Конфигурация и команды
Все параметры можно настроить через экран конфигурации мода 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):
| Config | По умолчанию | Описание |
|---|---|---|
audio.serverEnabled | true | Главный переключатель сервера для трансляции звука |
audio.serverMasterVolume | 1.0 | Глобальный множитель громкости (0.0–4.0) |
Клиентский конфиг:
| Config | По умолчанию | Описание |
|---|---|---|
audio.enabled | true | Главный переключатель воспроизведения на клиенте |
audio.friendlyVoicePack | CN | Голосовой пак для союзных игроков (когда Conquest не установлен или игнорируется) |
audio.enemyVoicePack | US | Голосовой пак для вражеских игроков (когда Conquest не установлен или игнорируется) |
audio.detectEnemyByVanillaTeam | true | Определять вражеских игроков через ванильную команду (isAlliedTo), работает без Conquest |
audio.ignoreConquestCamp | false | Игнорировать назначение лагеря Conquest, использовать конфиг friendly/enemy вместо этого |
audio.fallbackThirdPersonForLocal | true | Использовать 3P-звук, если вариант 1P отсутствует |
audio.masterVolume | 1.0 | Общая громкость на клиенте (0.0–4.0) |
audio.firstPersonVolume | 1.0 | Дополнительный множитель громкости для звуков от первого лица (0.0–4.0) |
audio.thirdPersonVolume | 1.0 | Дополнительный множитель громкости для звуков от третьего лица (0.0–4.0) |
audio.maxSimultaneousSingleTpSound | 2 | Максимум одновременно играющих 3P-звуков одного типа |
audio.maxSimultaneousTpPlayersFriendly | 3 | Максимум союзных игроков, одновременно издающих 3P-звуки |
audio.maxSimultaneousTpPlayersEnemy | 3 | Максимум вражеских игроков, одновременно издающих 3P-звуки |
audio.maxThirdPersonDistance | 48.0 | Максимальная дистанция слышимости 3P-звуков (блоки) |
Возможности
Голосовые реплики по событиям
Следующие голосовые реплики срабатывают от определённых игровых событий на сервере:
| Голосовая реплика | Условие срабатывания | Воспроизведение |
|---|---|---|
| DEATH | Игрок умирает (LivingDeathEvent), не наблюдатель | Слоями: 1P смерть + SFX себе; 3P реакция на смерть союзника для ближайших товарищей по команде |
| EXPLOSION_CLOSE | Игрок получает урон от взрыва, но выживает (здоровье > 0) | 1P себе, перезарядка 1 секунда |
| LOW_HEALTH_PANIC | Здоровье игрока падает ниже 5.0 (полсердца × 5) | 1P себе, срабатывает один раз за эпизод низкого здоровья |
| HEAVY_HURT | Игрок получает урон от пули TACZ (не снайперской, не RPG, не от взрыва), выживает | 1P себе, перезарядка 10 секунд, подавляется, если в тот же тик срабатывает реплика с более высоким приоритетом |
| BURNING | Игрок горит (ванильно) или имеет эффект LR Tactical lrtactical:flammable | Слоями 1P: крик + пламя + искра, срабатывает один раз за эпизод горения |
| REQUEST_AMMO | У держимого оружия TACZ игрока ноль патронов в магазине, ноль патронов в стволе и нет подходящих патронов в инвентаре | 1P себе, срабатывает один раз за эпизод пустого магазина; перепроверяет каждые 1с при пустом, 3с при заряженном |
| GRENADE_ALERT | Враг с гранатой LR Tactical находится в радиусе 5 блоков | 1P себе, сканирует каждые 5 тиков; исключает свои гранаты |
| THROW_GRENADE | Игрок начинает подготовку взрывной гранаты или коктейля Молотова LR Tactical (удержание ПКМ) | 3P-трансляция отслеживающим игрокам |
| THROW_SMOKE | Игрок начинает подготовку дымовой гранаты LR Tactical (удержание ПКМ) | 3P-трансляция отслеживающим игрокам |
| RELOADING | Игрок перезаряжает оружие TACZ (GunReloadEvent) | 3P-трансляция отслеживающим игрокам, перезарядка 1 секунда |
| SUPPRESSED | 6+ стаков подавления от огня не из пулемёта накапливаются за 1 секунду (см. Suppression Fire Corridor) | 1P цели, перезарядка 4 секунды |
| MACHINE_GUN_ALERT | 6+ стаков подавления от огня пулемёта накапливаются за 1 секунду | 1P цели, перезарядка 4 секунды |
| SUPPRESSING_HOSTILE | Стрелок накапливает 9+ стаков подавления на врагах за 1 секунду | 1P стрелку, перезарядка 4 секунды, ограничено 1-секундным разделением агрессивных реплик |
| SNIPER_ALERT | Снайперская пуля пролетает в пределах 5 блоков от игрока, ИЛИ игрок впервые получает попадание от снайпера | 1P цели, перезарядка 3 секунды |
| RPG_ALERT | Ракета RPG пролетает в пределах 10 блоков от игрока, ИЛИ игрок впервые получает попадание от RPG | 1P цели, перезарядка 3 секунды |
| KILL_ENEMY | Игрок убивает врага из оружия TACZ (не в голову, или рядом нет союзников для nice-shot) | 1P убийце |
| NICE_SHOT | Игрок совершает убийство в голову, и союзный наблюдатель находится в пределах 5 блоков | 3P ближайшему союзному наблюдателю |
| FRIENDLY_FIRE | Игрок убивает товарища по команде, и союзный наблюдатель находится в пределах 2 блоков | 3P ближайшему союзному наблюдателю, перезарядка 4 секунды |
| TEAMMATE_DOWNED | Товарищ по команде убит поблизости | 3P-трансляция ближайшим союзникам (срабатывает через отложенную смерть GDCQ) |
Коридор подавляющего огня
Когда игрок стреляет из оружия TACZ, сервер вычисляет коридор огня — цилиндрический объём, простирающийся на 24 блока вперёд от позиции глаз стрелка с радиусом 1.6 блока вдоль направления взгляда. Каждый враждебный, живой игрок, не находящийся в режиме наблюдателя, внутри этого коридора получает один стак подавления.
- Стаки подавления на цели истекают через 20 тиков (1 секунду) с момента первого стака
- 6 стаков: вызывает
SUPPRESSEDна цели (илиMACHINE_GUN_ALERT, если все стаки пришли от пулемёта) - 9 стаков: дополнительно вызывает
SUPPRESSING_HOSTILEна стрелке - Кулдауны предотвращают повторный спам: 4 секунды на цель для suppressed, 4 секунды на стрелка для suppressing hostile, с 1-секундным разделительным гейтом для агрессивного сигнала
Обнаружение близкого пролёта снарядов
Когда спавнятся сущности пуль TACZ (EntityJoinLevelEvent), сервер начинает их отслеживать. Каждый тик отслеживаемые снаряды классифицируются по типу оружия:
- Снайперские пули (тип оружия
sniper): радиус близкого пролёта 5 блоков - Ракеты RPG (тип оружия
rpg): радиус близкого пролёта 10 блоков
Для каждого снаряда сегмент перемещения между его последней и текущей позицией проверяется на пересечение с хитбоксами ближайших враждебных игроков с помощью пересечения сегмента с расширенным боксом. Обнаружение также срабатывает при первом прямом попадании из снайперской винтовки или RPG. Оба сигнала имеют 3-секундный кулдаун на цель.
Нераспознанные снаряды удаляются после 5 тиков проверки; мёртвые или удалённые снаряды очищаются автоматически.
Оповещение о гранатах и обнаружение броска
- Сканирование оповещений: Каждые 5 тиков сервер сканирует радиус в 5 блоков вокруг каждого игрока на предмет сущностей
ThrowableItemEntityиз LR Tactical типа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+ слой SFXfp.death.sfx; реакция союзника от третьего лица черезtp.{camp}.death - BURNING: три слоя от первого лица —
fp.burning.scream+fp.burning.flame+fp.burning.spark
Интеграция с GD656Conquest
Когда на сервере установлен GD656Conquest, GD656FrontVoice автоматически обнаруживает его через reflection и использует его API для трёх целей:
- Определение фракции:
resolveCamp(player)возвращает фракцию игрока (CN/US/RU) из командной системы Conquest. Назначенный голосовой пак следует за фактической фракцией игрока, а не откатывается к значениям по умолчанию. - Проверка враждебности:
isSameCamp(left, right)определяет, принадлежат ли два игрока к одной команде Conquest. Это заменяет ванильную проверкуisAlliedToдля враждебности, то есть враждебными для подавления, предупреждения снайпера и предупреждения об RPG считаются только игроки из разных команд Conquest. - Отложка сигнала смерти:
shouldDeferDeathCue(player)позволяет Conquest управлять тем, воспроизводится ли голосовой сигнал смерти сразу или откладывается (например, для систем downed/revive).
Без GD656Conquest: все игроки по умолчанию используют голосовой пак CN; враждебность по фракциям откатывается к ванильным проверкам альянса.
На клиенте опция конфига ignoreConquestCamp позволяет игрокам переопределить фракцию, полученную от сервера, и вместо неё использовать свои настройки friendlyVoicePack / enemyVoicePack.
Примечания
- Для полной функциональности мод требует установки как на клиенте, так и на сервере;
- Мод находится в активной разработке (0.x); функции могут продолжать развиваться;
- Часть кода была создана с помощью ИИ-технологий;
- Лицензировано под MIT License.
Частые вопросы
Как установить GD656FrontVoice?
Установите Forge под свою версию Minecraft, скачайте GD656FrontVoice под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть GD656FrontVoice?
У GD656FrontVoice есть сборки для Minecraft 1.20.1.
Нужен ли GD656FrontVoice на сервере?
Нужен и в игре, и на сервере