Audio
Visão geral
O Audio adiciona um pequeno mixer sobre os sons do Minecraft. Todo som tocado pela extensão pertence a uma de cinco camadas: MASTER, MUSIC, AMBIENT, SFX e VOICE. Cada jogador tem um volume para cada camada (de 0.0 a 1.0), e a extensão multiplica o volume da camada pelo volume master ao tocar um som. Os volumes são salvos por jogador, então uma configuração sobrevive a uma reconexão.
Sobre o mixer, você ganha zonas de som ambiente ligadas às regiões do Protection, sequências de sons cronometradas, uma trilha de música dinâmica que reage a um fact, um perfil de "voz de digitação" para diálogos e um menu no jogo em que os jogadores ajustam seus próprios volumes.
A extensão roda na build BTC do TypeWriter (BTC Core, Paper/Folia) e é documentada aqui como referência. As entries de menu são construídas sobre a extensão GUI.
Recursos
- Cinco camadas de áudio —
MASTER,MUSIC,AMBIENT,SFXeVOICE, cada uma com seu próprio volume por jogador. - Volumes salvos — um artifact Player Audio Volume armazena as configurações de cada jogador.
- Zonas de som ambiente — toque um som enquanto o jogador está em uma região do Protection, com uma prioridade quando as zonas se sobrepõem.
- Sequências de sons — dispare vários sons com atrasos escolhidos a partir de uma única action.
- Música dinâmica — inicie uma trilha base e ative e desative camadas extras a partir do valor de um fact.
- Vozes de diálogo — toque um som por caractere digitado, com sons separados para vogais, pontuação e espaços e uma variação aleatória de tom.
- Action de volume — defina o volume de uma camada para um jogador, instantaneamente ou com uma mudança progressiva.
- Menu de configurações — um GUI em que os jogadores aumentam, diminuem ou silenciam cada camada, utilizável como menu próprio ou como botões dentro de qualquer página do GUI.
Instalação
- Instale a extensão GUI: a extensão Audio é compilada contra ela e usa seu sistema de menus para a tela de configurações.
- Se quiser zonas de som ambiente, instale a extensão Protection e crie regiões com ela.
- Coloque o JAR do Audio em
plugins/Typewriter/extensions/e reinicie o servidor. - Toque seus próprios sons normalmente: os sons personalizados vêm do seu resource pack, e a extensão apenas os toca pelo id do som.
Primeiros passos
Adicione uma ambientação em estilo de loop a uma região de floresta e dê aos jogadores um menu de volume:
- No painel web do TypeWriter, crie uma região com a extensão Protection e anote o ID de sua entry.
- Abra uma página static e adicione uma entry Ambient Sound Zone.
- Defina
protectionRegionIdcom o ID da entry da região, escolha osounde mantenhalayeremAMBIENT. - Adicione um artifact Player Audio Volume em uma página de manifest, para que os volumes sejam salvos.
- Adicione uma action Audio Settings Menu. Construa seu layout em
layoutPool, definamainLayoutIde coloque itens cuja tag sejaaudio_button:AUDIO_LAYER:MASTER,audio_button:AUDIO_LAYER:MUSICe assim por diante (o nome da camada é escrito em maiúsculas). - Adicione uma action Open Audio Settings apontando para o menu em
menue dispare-a a partir de uma opção de diálogo de NPC, de um comando ou de um item. - Publique, entre na região e depois abra o menu e teste os volumes.
Fades não são suportados. O Minecraft não consegue alterar o volume de um som que já está tocando, então fadeIn e fadeOut não fazem nada: um som começa com o volume total e para de imediato. Os campos continuam nas zonas, sequências e perfis de diálogo, mas o valor deles não muda nada. Da mesma forma, looping não está implementado: o som toca uma vez e não é repetido, então use um som longo o bastante para a zona.
Como funciona
As zonas ambiente, as sequências de sons, os perfis de diálogo e a Dynamic Music Track passam todos pelo mixer, então seguem o volume do jogador para a sua camada. Um som começa direto no volume final: o volume do som, vezes o volume da camada (com o volume master), vezes um multiplicador próprio da entry (zoneVolume de uma zona ambiente, volumeOverride de um segmento de sequência). Como o Minecraft não consegue alterar o volume de um som que já está tocando, um volume de camada alterado depois só vale para os sons iniciados após a mudança.
Menus
O Audio Settings Menu é uma entry de GUI. Seus campos (inventoryTitle, inventoryRows, guiType, layoutPool, mainLayoutId, audio) funcionam como na extensão GUI. O Audio adiciona botões especiais: dê a um item do layout a tag audio_button: seguida de um tipo de botão.
| Tipo de botão | O que faz |
|---|---|
AUDIO_LAYER:<LAYER> | Mostra a camada (por exemplo AUDIO_LAYER:MASTER) com seu ícone, porcentagem e uma barra de dez passos. O clique esquerdo soma 10 por cento, o clique direito subtrai 10 por cento, Shift + clique esquerdo silencia ou restaura a camada. |
AUDIO_CLOSE | Fecha o menu. |
A tag é lida como audio_button:<TYPE>:<LAYER>. Na prática, AUDIO_LAYER:<LAYER> é o botão a usar. Os tipos AUDIO_VOLUME_UP, AUDIO_VOLUME_DOWN e AUDIO_LAYER_MUTE também são reconhecidos, mas só agem quando a camada é informada da mesma forma (por exemplo audio_button:AUDIO_VOLUME_UP:MUSIC), e então são renderizados exatamente como AUDIO_LAYER:MUSIC: os três cliques estão sempre disponíveis.
Os botões são registrados para toda página do GUI, então você pode colocá-los em um menu geral de "Configurações" e não apenas no Audio Settings Menu. Os itens de camada gerados usam nomes de exibição e lore em francês ("Volume general", "Musique", "Clic gauche"); esses textos são fixos na extensão.
Os jogadores alteram os volumes por meio de um comando interno chamado audio_button, registrado na inicialização. Ele não foi feito para ser digitado manualmente e não tem verificação de permissão própria.
Configuração
A extensão não tem arquivo de configuração. Os volumes são armazenados por meio do artifact Player Audio Volume (artifactId é player_audio_volumes por padrão). As alterações são gravadas cerca de cinco segundos após a última mudança e novamente quando o TypeWriter é descarregado. Sem esse artifact em uma página publicada, os volumes só existem na memória e são perdidos quando o jogador sai.
Entries
8 entradas, geradas a partir do código-fonte da extensão.
Ações5
- 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
Artefatos1
- Player Audio Volume ArtifactStores per-player audio layer volumes
Definições2
- Ambient Sound ZonePlay ambient sound in a region
- Dialogue Audio ProfileAudio profile for dialogue typing sounds
Solução de problemas
A zona ambiente não toca nada. A zona é comparada com protectionRegionId, o ID de uma região da extensão Protection. worldGuardRegionId só é lido quando protectionRegionId está vazio, e exige o plugin WorldGuard; uma zona sem nenhum dos dois nunca corresponde. Verifique também se sound não está vazio e se o jogador realmente cruza uma fronteira de bloco dentro da região, pois as zonas são verificadas quando o jogador se move para outro bloco.
A voz do diálogo nunca toca. O listener só inicia quando o sound do falante aponta para uma entry cujo ID é o ID do perfil e essa entry também é encontrada como uma entry de ID de som. A entry Dialogue Audio Profile é uma entry static simples, então teste-a com um diálogo curto antes de depender dela. Um diálogo com texto vazio ou duração zero é ignorado.
As alterações de volume se perdem após uma reconexão. Adicione um artifact Player Audio Volume a uma página publicada. Sem ele, nada é salvo.
Um botão do menu não faz nada e mostra o item simples. A tag deve começar com audio_button: e terminar com um nome de camada escrito em maiúsculas, por exemplo audio_button:AUDIO_LAYER:SFX. Sem uma camada válida, o item permanece como você o configurou.
O menu de configurações não abre. O menu é construído sobre a extensão GUI. Confirme que ela está instalada e que a action Open Audio Settings tem o campo menu definido.
Extensões relacionadas
- GUI — layouts e itens de menu usados pelo menu de configurações.
- Protection — regiões que conduzem as zonas de som ambiente.