modsmith Войти Войти Рус / Eng

GD656FrontVoice

gd656frontvoice · 636929 загрузок · MIT

утилиты

клиент: required · сервер: required (заявлено автором мода)

В GD656FrontVoice добавлены боевые голосовые оповещения на основе фракций — перезарядка, гранаты, убийства, оповещения о подавлении — с голосовыми пакетами CN/US/RU. Работает с TACZ, обнаруживает врагов ванильной командой.

Описание

Обзор

GD656FrontVoice — это мод Minecraft, который добавляет динамическую боевую голосовую систему на многопользовательские серверы. Он воспроизводит голосовые сигналы, специфичные для каждой фракции — китайские (CN), американские (США) и русские (RU) — инициируемые боевыми событиями: получение урона, бросание гранат, перезарядка, убийство врагов, подавление артиллерийским огнем и многое другое.

Последнее обновление: 25 июля 2026 г.. Некоторые функции могут быть не полностью задокументированы или могут быть изменены.

Совместимость

  • Настоятельно рекомендуется использовать исправление TACZ (Timeless и Classics Zero) 1.1.7 или более поздней версии — большинство триггеров боевых событий зависят от системы событий TACZ и API типа оружия;
  • Мягкая совместимость с LR Tactical — обнаруживает бросаемые объекты для оповещения о гранате и сигналов о броске, а также дебафф огня для обнаружения горения;
  • Мягкая совместимость с GD656Conquest — разрешает информацию о фракции/лагере для маршрутизации голосового пакета;
  • В настоящее время поддерживает только Minecraft 1.20.1 Forge.

Установка сервера

Этот мод разделен на клиентскую и серверную функциональность. Обе стороны требуют установки для полной функциональности.

Функции только для сервера:

| Особенность | Заметки | |------|------| | Обнаружение боевых событий | Слушает стрельбу из пистолета TACZ, события перезарядки, убийства и ванильные события повреждения/смерти | | Коридорная система пожаротушения | Накапливает эффекты подавления, когда пули проходят рядом с игроком, активирует голосовые сигналы при пороговых значениях | | Обнаружение попадания снаряда | Отслеживает снайперские пули и ракеты РПГ, предупреждает игроков, когда снаряды проходят поблизости | | Сканирование оповещений о гранатах | Сканирует ближайшие враждебные метательные предметы каждый тик и предупреждает игроков об угрозе | | Опрос без патронов | Проверяет наличие у игрока боеприпасов для пистолета TACZ каждый такт | | Обнаружение ожогов | Обнаруживает, когда игрок горит (ванильный или LR Tactical воспламеняющийся эффект) | | Обнаружение броска гранаты | Обнаруживает, когда игрок начинает зажигать гранату/молотов/дым | | Голосовая маршрутизация с учетом лагеря | Решает, какой голосовой пакет (CN/US/RU) использовать для каждого игрока | | Аудио пакетное вещание | Отправляет ClientboundPlayAudioPacket целевым клиентам |

Функции, доступные только для клиента:

| Особенность | Заметки | |------|------| | Воспроизведение голосовых сигналов | Получает пакеты, обрабатывает голосовые сигналы через CueRouter и воспроизводит звуки | | Маршрутизация от первого/третьего лица | Воспроизводит локальные (непозиционные) звуки для себя, позиционные звуки для других | | Регулирование звука | Ограничивает одновременные звуки для каждого игрока и для каждого типа, чтобы предотвратить спам | | Система конфигурации и команд | /gdfv клиентские команды для отладки и управления конфигурациями | | Переопределение перспективы лагеря | Обнаружение союзников/врагов на стороне клиента может переопределить голосовой пакет, назначенный сервером |

Вкратце: сервер обнаруживает и запускает все голосовые события; клиент управляет воспроизведением, маршрутизацией и регулированием. Сетевой трафик минимален (один тип пакета с самоописанием, ClientboundPlayAudioPacket).

Конфигурация и команды

Все параметры можно настроить через экран конфигурации мода Forge или с помощью внутриигровых команд:

/gdfv debug summary              Show audio manifest statistics
/gdfv debug list [filter]        List registered sound events
/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              Hot-reload configuration files

Для команд требуется уровень разрешений 2 (оператор сервера). Изменения конфигурации вступают в силу немедленно; Горячая перезагрузка среды выполнения поддерживается посредством перезагрузки конфигурации на основе отражения.

Ключевые параметры конфигурации

Конфигурация сервера (общая):

| Конфигурация | По умолчанию | Описание | |------|------|------| | audio.serverEnabled | true | Главный серверный коммутатор для трансляции аудио | | audio.serverMasterVolume | 1.0 | Глобальный множитель объема (0,0–4,0) |

Конфигурация клиента:

| Конфигурация | По умолчанию | Описание | |------|------|------| | audio.enabled | true | Переключатель воспроизведения главного клиента | | audio.friendlyVoicePack | CN | Голосовой пакет для игроков-союзников (если Conquest не установлен или игнорируется) | | audio.enemyVoicePack | US | Голосовой пакет для вражеских игроков (если Conquest не установлен или игнорируется) | | audio.detectEnemyByVanillaTeam | true | Обнаруживайте вражеских игроков, используя стандартную команду (isAlliedTo), работает без Завоевания | | audio.ignoreConquestCamp | false | Игнорировать назначение лагеря в Завоевании, вместо этого использовать конфигурацию «дружественный/вражеский» | | 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 (блоки) |


Особенности

Голосовые сигналы, управляемые событиями

Следующие голосовые сигналы вызываются определенными внутриигровыми событиями на сервере:

| Голосовой сигнал | Условие триггера | Воспроизведение | |------|------|------| | СМЕРТЬ | Умирает игрок (LivingDeathEvent), а не зритель | Многоуровневое: смерть 1P + звуковые эффекты для себя; Реакция смерти союзника 3P на ближайших товарищей по команде | | EXPLOSION_CLOSE | Игрок получает урон от взрыва, но выживает (здоровье > 0) | 1P на себя, время восстановления 1 секунда | | LOW_HEALTH_PANIC | Здоровье игрока падает ниже 5,0 (половина сердца × 5) | 1P самому себе, стреляет один раз за эпизод с низким уровнем здоровья | | HEAVY_HURT | Игрок получает урон от пули TACZ (не снайперской, не РПГ, невзрывной), выживает | 1P самому себе, время восстановления 10 секунд, подавляется, если сигнал с более высоким приоритетом срабатывает в том же тике | | ГОРЕНИЕ | Игрок горит (ваниль) или имеет эффект LR Tactical lrtactical:flammable | Многоуровневый 1P: крик + пламя + искра, срабатывает один раз за эпизод горения | | REQUEST_AMMO | В пистолете TACZ, находящемся в руках игрока, нет патронов для магазина, нет патронов для ствола и нет соответствующих патронов в инвентаре | 1P самому себе, срабатывает один раз за пустой эпизод; перепроверяет каждые 1 секунду, когда пусто, и 3 секунды, когда загружено | | ГРЕНАДА_ALERT | Вражеская взрывная граната LR Tactical находится в радиусе 5 блоков | 1P самому себе, сканирует каждые 5 тиков; исключает собственные гранаты |

| THROW_GRENADE | Игрок начинает заряжать взрывную гранату LR Tactical или Молотов (удерживать правую кнопку мыши) | 3P-трансляция для отслеживания игроков | | THROW_SMOKE | Игрок начинает готовить дымовую гранату LR Tactical (удерживать правую кнопку мыши) | 3P-трансляция для отслеживания игроков | | ПЕРЕЗАГРУЗКА | Игрок перезаряжает пистолет TACZ (GunReloadEvent) | 3P-трансляция для отслеживания игроков, время восстановления 1 секунда | | ПОДАЛЕНО | 6+ стаков подавления от огня, не являющегося пулеметным, накапливаются за 1 секунду (см. Коридор подавляющего огня ) | 1P в цель, время восстановления 4 секунды | | MACHINE_GUN_ALERT | 6+ стеков подавления от пулеметного огня накапливаются за 1 секунду | 1P в цель, время восстановления 4 секунды | | ПОДАВЛЕНИЕ_ВРАЖНОГО | Стрелок накапливает на врагах 9+ стаков подавления за 1 секунду | 1P на стрелка, время восстановления 4 секунды, с 1-секундным разделением агрессивного сигнала | | СНАЙПЕР_АЛЕРТ | Снайперская пуля проходит в пределах 5 блоков от игрока, ИЛИ игрок первым поражен снайпером | 1P в цель, время восстановления 3 секунды | | RPG_ALERT | Ракета РПГ проходит в пределах 10 блоков от игрока, ИЛИ игрок первым попадает под удар РПГ | 1P в цель, время восстановления 3 секунды |

| KILL_ENEMY | Игрок убивает врага из пистолета TACZ (без выстрела в голову или без союзников поблизости для хорошего выстрела) | 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 секунды на цель для подавления, 4 секунды на стрелка для подавления противника, с 1-секундными разделительными воротами для агрессивного сигнала.

Обнаружение попадания снаряда на грани попадания

Когда появляются объекты пули TACZ (EntityJoinLevelEvent), сервер начинает их отслеживать. Каждый тик, гусеничные снаряды классифицируются по типу орудия:

  • Снайперские пули (тип оружия sniper): радиус ближнего прохода 5 блоков
  • РПГ (тип пушки rpg): радиус ближнего прохода 10 блоков

Для каждого снаряда сегмент движения между его последней и текущей позицией проверяется относительно ограничивающих рамок ближайших враждебных игроков с использованием пересечения сегмента и надутой коробки. Обнаружение также срабатывает при первом прямом попадании снайпера или РПГ. Обе реплики имеют перезарядку 3 секунды на каждую цель.

Нераспознанные снаряды удаляются после 5 пробных тиков; мертвые или удаленные снаряды удаляются автоматически.

Оповещение о гранате и обнаружение броска

  • Сканирование предупреждений: каждые 5 тактов сервер сканирует радиус 5 блоков вокруг каждого игрока на предмет LR Tactical ThrowableItemEntity объектов типа EXPLOSIVE_GRENADE. Собственные гранаты исключены.
  • Обнаружение броска: каждый тик проверяет, активно ли игрок использует (удерживая правую кнопку мыши) метательный предмет LR Tactical. Когда игрок начинает зарядку или переключается на другой тип гранаты, срабатывает соответствующий сигнал — THROW_SMOKE для дымовых гранат, THROW_GRENADE для взрывных гранат и коктейлей Молотова.

Режимы воспроизведения аудио

Клиент поддерживает три режима воспроизведения:

| Режим | Поведение | Вариант использования | |------|------|------| | МЕСТНЫЙ | Непозиционный, плоский объем (SoundSource.PLAYERS, relative=true) | Обратная связь от первого лица (например, боль, смерть, низкое здоровье) | | ПОЛОЖЕНИЕ | Статическое мировое положение, ослабление на основе расстояния | Мировые звуки | | СУЩНОСТЬ | Прикреплен к живому существу, следует за его движением при каждом такте, останавливается при удалении объекта | Звуки от третьего лица, прикрепленные игроком (например, перезарядка, бросание гранат) |

При воспроизведении от первого лица громкость масштабируется на firstPersonVolume; для третьего лица — на thirdPersonVolume. Если в реплике отсутствует вариант звука от первого лица, клиент может вернуться к варианту от третьего лица (управляется fallbackThirdPersonForLocal).

Регулирование звука

Чтобы предотвратить перегрузку звука в интенсивных перестрелках, клиент принудительно применяет регулирование:

  • Ограничение на вид от первого лица для каждого игрока: одновременно активен только один звук от первого лица, за исключением BURNING (собственный список сигналов) и сигналов с неограниченным приоритетом (DEATH, FINAL_DEATH и всех звуков оживления)
  • Ограничение на звук от третьего лица для каждого игрока: у одного игрока не может быть двух активных звуков от третьего лица.
  • Ограничение присутствия третьего лица для каждого типа: не более maxSimultaneousSingleTpSound (по умолчанию 2) экземпляров одного и того же типа сигнала во всем мире.
  • Ограничение количества игроков на лагерь: не более maxSimultaneousTpPlayersFriendly (по умолчанию 3) дружественных и maxSimultaneousTpPlayersEnemy (по умолчанию 3) вражеских игроков, издающих звуки от третьего лица. Когда лимит достигнут, самый дальний игрок выселяется, если новый игрок находится ближе.

Наложение аудио

Некоторые реплики воспроизводят несколько звуковых слоев одновременно:

  • СМЕРТЬ: слой от первого лица fp.death.death + слой SFX fp.death.sfx; Реакция союзника от третьего лица через tp.{camp}.death
  • ГОРЕНИЕ: три слоя от первого лица — fp.burning.scream + fp.burning.flame + fp.burning.spark.

Интеграция GD656Conquest

Когда GD656Conquest установлен на сервере, GD656FrontVoice автоматически обнаруживает его посредством отражения и использует его API для трех целей:

  1. Разрешение лагеря: resolveCamp(player) возвращает фракцию игрока (CN/US/RU) из командной системы Conquest. Назначенный голосовой пакет соответствует фактической фракции игрока, а не возвращается к настройкам по умолчанию.
  2. Проверка враждебности: isSameCamp(left, right) определяет, принадлежат ли два игрока к одной команде завоевания. Это заменяет стандартную проверку враждебности isAlliedTo, что означает, что только игроки из разных команд завоевания считаются враждебными для целей подавления, снайперской тревоги и оповещения о РПГ.
  3. Отсрочка сигнала смерти: shouldDeferDeathCue(player) позволяет Conquest контролировать, будет ли голосовой сигнал смерти воспроизводиться немедленно или отложенно (например, для сбитых/оживленных систем).

Без GD656Conquest: все игроки по умолчанию используют голосовой пакет CN; Враждебность на базе лагерей сводится к проверкам ванильного альянса.

В клиенте опция конфигурации ignoreConquestCamp позволяет игрокам переопределять лагерь, предоставленный сервером, и вместо этого использовать свои собственные настройки friendlyVoicePack/enemyVoicePack.


Примечания

  • Этот мод требует установки как клиента, так и сервера для полной функциональности;
  • Этот мод находится в активной разработке (0.x); функции могут продолжать развиваться;
  • Части кода были созданы с помощью технологии искусственного интеллекта;
  • Лицензировано по лицензии MIT.

Версии (0)

ВерсияMinecraftЗагрузчикиФайл

Страница на Modrinth →