Audio
Обзор
Audio добавляет небольшой микшер поверх звуков Minecraft. Каждый звук, воспроизводимый через расширение, принадлежит одному из пяти слоёв: MASTER, MUSIC, AMBIENT, SFX и VOICE. У каждого игрока есть громкость для каждого слоя (от 0.0 до 1.0), и при воспроизведении звука расширение умножает громкость слоя на общую громкость. Громкость сохраняется для каждого игрока, поэтому настройка переживает переподключение.
Поверх микшера вы получаете зоны фоновых звуков, привязанные к регионам Protection, звуковые последовательности по таймеру, динамическую музыкальную дорожку, реагирующую на факт, профиль «голоса печати» для диалогов и внутриигровое меню, где игроки регулируют собственную громкость.
Расширение работает на сборке BTC TypeWriter (BTC Core, Paper/Folia) и документировано здесь для справки. Записи меню построены на расширении GUI.
Возможности
- Пять аудиослоёв —
MASTER,MUSIC,AMBIENT,SFXиVOICE, у каждого своя громкость для каждого игрока. - Сохранённая громкость — артефакт Player Audio Volume хранит настройки каждого игрока.
- Зоны фоновых звуков — воспроизведение звука, пока игрок стоит в регионе Protection, с приоритетом при пересечении зон.
- Звуковые последовательности — запуск нескольких звуков с выбранными задержками одним действием.
- Динамическая музыка — запуск базовой дорожки и включение и выключение дополнительных слоёв по значению факта.
- Голоса диалогов — один звук на каждый напечатанный символ, с отдельными звуками для гласных, знаков препинания и пробелов и случайным разбросом высоты.
- Действие громкости — установка громкости слоя для игрока мгновенно или с постепенным изменением.
- Меню настроек — GUI, где игроки повышают, понижают или отключают каждый слой; используется как отдельное меню или как кнопки внутри любой страницы GUI.
Установка
- Установите расширение GUI: расширение Audio собрано под него и использует его систему меню для экрана настроек.
- Если вам нужны зоны фоновых звуков, установите расширение Protection и создайте с его помощью регионы.
- Положите JAR-файл Audio в
plugins/Typewriter/extensions/и перезапустите сервер. - Воспроизводите свои звуки как обычно: пользовательские звуки берутся из вашего ресурспака, а расширение лишь воспроизводит их по id звука.
Быстрый старт
Добавим зацикленную атмосферу в лесной регион и дадим игрокам меню громкости:
- В веб-панели TypeWriter создайте регион с помощью расширения Protection и запомните id его записи.
- Откройте страницу static и добавьте запись Ambient Sound Zone.
- Задайте
protectionRegionIdравным id записи региона, выберитеsoundи оставьтеlayerравнымAMBIENT. - Добавьте артефакт Player Audio Volume на страницу manifest, чтобы громкость сохранялась.
- Добавьте действие Audio Settings Menu. Постройте его макет в
layoutPool, задайтеmainLayoutIdи разместите предметы с тегомaudio_button:AUDIO_LAYER:MASTER,audio_button:AUDIO_LAYER:MUSICи так далее (название слоя пишется заглавными буквами). - Добавьте действие Open Audio Settings, указывающее в
menuна меню, и запустите его из варианта диалога NPC, команды или предмета. - Опубликуйте, зайдите в регион, затем откройте меню и проверьте громкость.
Затухания не поддерживаются. Minecraft не может изменить громкость уже играющего звука, поэтому fadeIn и fadeOut ничего не делают: звук начинается с полной громкости и обрывается сразу. Поля остаются у зон, последовательностей и профилей диалогов, но их значение ничего не меняет. Аналогично, looping не реализован: звук проигрывается один раз и не повторяется, поэтому используйте звук, достаточно длинный для зоны.
Как это работает
Зоны фоновых звуков, звуковые последовательности, профили диалогов и Dynamic Music Track проходят через микшер, поэтому следуют громкости игрока для своего слоя. Звук сразу начинается с итоговой громкости: громкость самого звука, умноженная на громкость слоя (с учётом общей громкости), умноженная на коэффициент записи (zoneVolume у зоны фонового звука, volumeOverride у сегмента последовательности). Поскольку Minecraft не может изменить громкость уже играющего звука, изменённая позже громкость слоя действует только на звуки, запущенные после изменения.
Меню
Audio Settings Menu — запись GUI. Её поля (inventoryTitle, inventoryRows, guiType, layoutPool, mainLayoutId, audio) работают так же, как в расширении GUI. Audio добавляет особые кнопки: задайте предмету макета тег audio_button:, за которым следует тип кнопки.
| Тип кнопки | Что делает |
|---|---|
AUDIO_LAYER:<LAYER> | Показывает слой (например AUDIO_LAYER:MASTER) с его значком, процентом и десятиступенчатой шкалой. Левый клик добавляет 10 процентов, правый клик убавляет 10 процентов, Shift + левый клик отключает или восстанавливает слой. |
AUDIO_CLOSE | Закрывает меню. |
Тег читается как audio_button:<TYPE>:<LAYER>. На практике следует использовать кнопку AUDIO_LAYER:<LAYER>. Типы AUDIO_VOLUME_UP, AUDIO_VOLUME_DOWN и AUDIO_LAYER_MUTE тоже распознаются, но действуют только тогда, когда слой задан тем же способом (например audio_button:AUDIO_VOLUME_UP:MUSIC), и тогда отображаются точно так же, как AUDIO_LAYER:MUSIC: все три клика всегда доступны.
Кнопки регистрируются для каждой страницы GUI, поэтому их можно размещать в общем меню «Настройки», а не только в Audio Settings Menu. Генерируемые предметы слоёв используют французские отображаемые названия и описания («Volume general», «Musique», «Clic gauche»); эти тексты зафиксированы в расширении.
Игроки меняют громкость через внутреннюю команду audio_button, регистрируемую при запуске. Вводить её вручную не предполагается, и собственной проверки прав у неё нет.
Конфигурация
У расширения нет файла конфигурации. Громкость хранится через артефакт Player Audio Volume (artifactId по умолчанию player_audio_volumes). Изменения записываются примерно через пять секунд после последнего изменения и ещё раз при выгрузке TypeWriter. Без этого артефакта на опубликованной странице громкость живёт только в памяти и теряется, когда игрок выходит.
Записи
Записей: 8, сгенерированы из исходного кода расширения.
Действия5
- Audio Settings MenuAudio Settings Menu
- Dynamic Music TrackMusic track that reacts to game facts
- Open Audio SettingsOpen Audio Settings Menu
- Set Master VolumeSet the master or layer volume for a player
- Sound SequenceA sequence of sounds to play
Артефакты1
- Player Audio Volume ArtifactStores per-player audio layer volumes
Определения2
- Ambient Sound ZonePlay ambient sound in a region
- Dialogue Audio ProfileAudio profile for dialogue typing sounds
Устранение неполадок
Зона фонового звука ничего не воспроизводит. Зона сопоставляется с protectionRegionId — id региона из расширения Protection. worldGuardRegionId читается только когда protectionRegionId пуст, и требует плагин WorldGuard; зона без обоих никогда не подходит. Также проверьте, что sound не пуст и что игрок действительно пересекает границу блока внутри региона, потому что зоны проверяются, когда игрок переходит на другой блок.
Голос диалога никогда не воспроизводится. Обработчик запускается, только когда sound говорящего указывает на запись, id которой совпадает с id профиля и которая также найдена как запись id звука. Запись Dialogue Audio Profile — это обычная статическая запись, поэтому проверьте её на коротком диалоге, прежде чем на неё полагаться. Диалог с пустым текстом или нулевой длительностью пропускается.
Изменения громкости теряются после переподключения. Добавьте артефакт Player Audio Volume на опубликованную страницу. Без него ничего не сохраняется.
Кнопка меню ничего не делает и показывает обычный предмет. Тег должен начинаться с audio_button: и заканчиваться названием слоя, написанным заглавными буквами, например audio_button:AUDIO_LAYER:SFX. Без корректного слоя предмет остаётся таким, как вы его настроили.
Меню настроек не открывается. Меню построено на расширении GUI. Убедитесь, что оно установлено и что у действия Open Audio Settings задано поле menu.
Связанные расширения
- GUI — макеты и предметы меню, используемые меню настроек.
- Protection — регионы, управляющие зонами фоновых звуков.