Перейти к основному содержимому

Audio

Аудиослои для каждого игрока, зоны атмосферы, звуковые последовательности, голоса диалогов и меню громкости.

Приватныеv0.1.0Утилиты
ТребуетсяTypeWriter0.9GUIProtectionнеобязательно

Создано для сети BornToCraft. Это расширение описано для справки и не распространяется.

Обзор​

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.

Установка​

  1. Установите расширение GUI: расширение Audio собрано под него и использует его систему меню для экрана настроек.
  2. Если вам нужны зоны фоновых звуков, установите расширение Protection и создайте с его помощью регионы.
  3. Положите JAR-файл Audio в plugins/Typewriter/extensions/ и перезапустите сервер.
  4. Воспроизводите свои звуки как обычно: пользовательские звуки берутся из вашего ресурспака, а расширение лишь воспроизводит их по id звука.

Быстрый старт​

Добавим зацикленную атмосферу в лесной регион и дадим игрокам меню громкости:

  1. В веб-панели TypeWriter создайте регион с помощью расширения Protection и запомните id его записи.
  2. Откройте страницу static и добавьте запись Ambient Sound Zone.
  3. Задайте protectionRegionId равным id записи региона, выберите sound и оставьте layer равным AMBIENT.
  4. Добавьте артефакт Player Audio Volume на страницу manifest, чтобы громкость сохранялась.
  5. Добавьте действие Audio Settings Menu. Постройте его макет в layoutPool, задайте mainLayoutId и разместите предметы с тегом audio_button:AUDIO_LAYER:MASTER, audio_button:AUDIO_LAYER:MUSIC и так далее (название слоя пишется заглавными буквами).
  6. Добавьте действие Open Audio Settings, указывающее в menu на меню, и запустите его из варианта диалога NPC, команды или предмета.
  7. Опубликуйте, зайдите в регион, затем откройте меню и проверьте громкость.
Без затуханий и без зацикливания

Затухания не поддерживаются. 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
Артефакты1
Определения2

Устранение неполадок​

Зона фонового звука ничего не воспроизводит. Зона сопоставляется с 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 — регионы, управляющие зонами фоновых звуков.