Modelos Personalizados
O EliteMobs suporta Modelos Personalizados através do Model Engine e do FreeMineCraftModels.
Prefácio
Da perspetiva do EliteMobs, o sistema de Modelos Personalizados é muito simples, pois a única coisa que os administradores têm de fazer é adicionar uma linha ao ficheiro de configuração de um NPC ou Boss Personalizado a indicar qual o Modelo Personalizado a usar. No entanto, é necessário seguir os passos corretos com o Model Engine e o Minecraft para conseguir que este sistema fique totalmente funcional, e estes não são assim tão fáceis de aprender.
Este guia entrará em detalhe no que diz respeito à interação com o Model Engine e o Minecraft. Não te dirá como usar o Blockbench para criar bosses personalizados, nem entrará em detalhe sobre como o Model Engine funciona. Já existem muitos guias sobre como fazer isso noutros lugares, e se quiseres aprender mais sobre esses sistemas, serás mais bem servido consultando diretamente a documentação deles.
FreeMineCraft Models
Se quiseres aprender como podes usar o FMM para pôr os teus modelos a funcionar, então podes consultar esta página da wiki para saberes mais.
O FreeMinecraftModels atual usa um osso tag_ definido pelo autor, como tag_head, quando existe; caso contrário, coloca o nome acima da hitbox do modelo. A âncora permite escolher a posição, mas já não é obrigatória para mostrar um nome. O FMM gere toda a placa, incluindo as linhas de nome e função dos NPCs do EliteMobs. Versões antigas do FMM podem continuar a exigir uma âncora.
Suporte Bedrock (Geyser)
A possibilidade de os jogadores Bedrock (que se ligam através do Geyser/Floodgate) verem modelos personalizados depende inteiramente do teu plugin de modelos (ModelEngine ou FreeMinecraftModels) e da configuração do teu resource pack, não do EliteMobs. O EliteMobs deteta os clientes Bedrock, mas usa essa informação para coisas como a renderização de menus e o posicionamento de nametags — não gera nem fornece um modelo separado compatível com Bedrock. Consulta a documentação do teu plugin de modelos para suporte de modelos Bedrock/Geyser.
Integração com o LibsDisguises
O EliteMobs também suporta o LibsDisguises como alternativa aos modelos personalizados. Um modelo configurado e disponível tem prioridade sobre um disfarce; quando não há um modelo utilizável selecionado, pode ser usado o disfarce configurado. A integração sincroniza a visibilidade do nome.
Para usar o LibsDisguises, configura o disfarce do boss/NPC sem especificar customModel.
Modelos de itens e armas mágicas (FMM)
Usa fmmItemModel para a apresentação de itens pelo FMM, com weaponType: WANDS ou weaponType: STAVES para uma arma mágica definida pelo autor. O EliteMobs mantém nome, lore, encantamentos e nível. O FMM fornece o modelo e, nas armas mágicas, a definição do ataque.
A antiga ligação scriptedItem continua disponível para identidade e apresentação de itens. Já não executa scripts Lua de itens equipados, e o FMM rejeita definições de itens com uma lista scripts não vazia. Não a combines com uma arma mágica definida pelo autor.
# Example EliteMobs custom item config
material: IRON_SWORD
name: "&cFlame Blade"
enchantments:
- "FIRE_ASPECT,2"
scalability: scalable
fmmItemModel: flame_blade
O item ou modelo FMM referenciado tem de existir. Um modelo de apresentação em falta pode deixar o material vanilla visível e gerar um aviso; um weaponType explícito que não corresponda a uma arma definida e disponível impede a construção do item. Consulta as armas mágicas do FMM e a configuração de itens personalizados.
Requisitos mínimos
EliteMobs, uma versão compatível do FreeMinecraftModels ou integração ModelEngine*, Blockbench** e um resource pack de Minecraft. A integração ModelEngine usa a API R3: o EliteMobs só a seleciona quando o ModelEngine está ativado e a sua versão contém R3. Uma versão principal mais recente não é automaticamente compatível.
* Este plugin pode ter mais dependências. Consulta a documentação do lado deles.
** Necessário para criar e editar Modelos Personalizados. Não é necessário se apenas pretendes instalar conteúdo sem o modificar.
Se tanto o ModelEngine como o FreeMinecraftModels estiverem instalados, o EliteMobs usará o FreeMinecraftModels por predefinição. Apenas um plugin de modelos personalizados estará ativo de cada vez.
Definir manualmente um Modelo Personalizado
Nota: Este guia assume que já tens um Modelo Personalizado válido. Estes vêm em formatos de ficheiro do Blockbench (.bbmodel).
O EliteMobs é capaz de usar Modelos Personalizados para NPCs e Bosses Personalizados. O processo para fazer isto é o mesmo para ambos, e é o seguinte:
Passo 1. Definir a configuração do EliteMobs
Vai ao ficheiro de configuração do Boss Personalizado ou NPC que queres modificar e adiciona a seguinte linha:
customModel: modelname
Substitui modelname pelo nome do teu modelo. O nome é o nome do ficheiro do Modelo Personalizado que estás a usar. Como exemplo, o ficheiro do Modelo Personalizado do Test Boss é showcase_boss.bbmodel. Como tal, a opção de configuração deve ser
customModel: showcase_boss
E é só isto para o EliteMobs! Agora fica um pouco mais complicado.
Passo 2. Gerar os dados do Model Engine
Os caminhos seguintes vêm do guia arquivado de importação do ModelEngine. Segue as instruções da tua versão instalada do ModelEngine.
- Coloca o teu ficheiro Blockbench do Modelo Personalizado (
.bbmodel) no diretório(yourServer)/plugins/ModelEngine/blueprints. - Executa o comando de recarregamento de modelos da tua versão do ModelEngine; o guia arquivado usa
/meg reload models. Confirma que o modelo consta do registo carregado e verifica os erros na consola.
Passo 3. Distribuir o Resource Pack
Esta é possivelmente a parte mais complicada se pretendes fazer com que o teu servidor faça a gestão dos downloads. Tenta verificar se o sistema funciona quando tens o resource pack no teu cliente antes de tratares de o distribuir automaticamente!
- Vai ao diretório
(yourServer)/plugins/ModelEngine/resource packe cria um resource pack usando esses dados ou adiciona a pastaassetsque está aí aosassetsdo teu resource pack- Num pacote novo, coloca
assetse umpack.mcmetaválido na raiz do ZIP. Usa metadados compatíveis com a versão do cliente; não copies os números de formato antigos dos exemplos arquivados. Mais informação. - Se já tens um resource pack, certifica-te de que não estás a substituir acidentalmente modelos existentes. Mais informação.
- Num pacote novo, coloca
- Distribui o teu resource pack aos teus jogadores. Apenas os jogadores que tiverem o resource pack conseguirão ver os Modelos Personalizados, e ficará muito estranho e partido para todos os outros. Se pretendes fazer um uso intensivo destes, podes querer forçar o uso do resource pack.
- (Opcional) Para permitir que os jogadores descarreguem um resource pack ao iniciar sessão, terás de alojar o ficheiro algures online e alterar o campo
resource-pack=do server.properties para apontar para esse endereço.* - Para transferências automáticas, define
resource-pack-sha1=com o SHA-1 do ZIP final. Calcula-o localmente no PowerShell com(Get-FileHash -LiteralPath "pack.zip" -Algorithm SHA1).Hash.ToLowerInvariant()ou no Linux comsha1sum pack.zip. Copia apenas o hash de 40 caracteres e atualiza-o sempre que o ZIP mudar. - (Opcional) Para forçar os jogadores a usar resource packs, usa a opção
require-resource-pack=trueno server.properties.*
- (Opcional) Para permitir que os jogadores descarreguem um resource pack ao iniciar sessão, terás de alojar o ficheiro algures online e alterar o campo
Se modificaste o server.properties terás de reiniciar!
* Nota: Existem muitos guias online que te podem ajudar a pôr isto a funcionar caso estas instruções não te estejam a ajudar.
Combinar resource packs
Podes combinar pacotes manualmente ou usar o ResourcePackManager para o sistema de pacotes Nightbreak. Uma ferramenta externa como o merge.elmakers pode combinar ZIPs, mas tens de resolver conflitos entre IDs de modelos e verificar o resultado no cliente de destino.
Passo 4. Verificar o modelo
Com o registo de modelos carregado e o pacote correspondente aplicado no cliente, verifica o modelo num boss ou NPC real. Estes comandos exigem um jogador e a respetiva permissão:
- Boss personalizado:
/em spawn boss filename.yml—elitemobs.place.admin, aparece na posição para onde estás a olhar. - NPC:
/em place npc filename.yml—elitemobs.place.npc, guarda uma colocação permanente onde estás.
/em remove alterna o modo de remoção. Bate no alvo para o remover e volta a executar o comando para sair desse modo. Remover assim um NPC colocado também apaga a sua colocação guardada.
Criar e adaptar Modelos Personalizados para o EliteMobs
Usa um modelo suportado e carregado corretamente pelo fornecedor selecionado. Continuam a aplicar-se a compatibilidade do fornecedor e as funcionalidades de modelo que suporta.
No entanto, no que diz respeito às animações, é necessário o uso de nomes específicos para as animações para garantir que os bosses possam usar as animações.
Estes nomes de animação são os definidos no Blockbench no separador de animações. Podes renomeá-los a qualquer momento, o que significa que podes adaptar quaisquer modelos existentes para funcionarem com o EliteMobs.
Animações
Usa os seguintes nomes de animação para os hooks automáticos do EliteMobs.
idle
idle é o nome convencional da animação de repouso. O EliteMobs inicia um modelo ModelEngine no estado de repouso predefinido; a seleção posterior das animações de repouso e movimento pertence ao fornecedor.
walk
walk é o nome convencional da animação de movimento. O EliteMobs não inicia explicitamente essa animação ao associar o modelo; a seleção pertence ao ModelEngine/FMM.
attack
Existem três tipos de animações de ataque:
attack
attack é o nome de animação genérico correto para quando um boss ataca.
attack_melee
attack_melee substitui attack quando um boss personalizado é o causador direto num evento Bukkit de dano entre entidades. A animação é pedida durante o processamento do evento, não como uma preparação que atrase o golpe. Eventos já cancelados são ignorados, mas um listener posterior ainda pode cancelar o dano. Usa uma animação curta e não dependas dela para agendar o dano.
attack_ranged
attack_ranged substitui attack quando um evento de aparecimento de projétil identifica um boss personalizado como atirador vivo. Responde ao aparecimento do projétil, sem atrasar o disparo até a animação terminar. Projéteis sem essa associação ao atirador não ativam o hook automático.
Sistema de Animação de Recurso (Fallback)
O EliteMobs usa um sistema de recurso para as animações de ataque:
- Se
attack_meleenão estiver definido, recorre aattack - Se
attack_rangednão estiver definido, recorre aattack - O FMM verifica se
attackexiste antes de a reproduzir; o adaptador ModelEngine passa esse nome alternativo ao seu gestor de animações
Isto permite-te criar uma única animação de ataque que funciona para todos os tipos de ataque, ou criar animações especializadas para ataques corpo a corpo vs. à distância.
damaged
O EliteMobs não regista um hook automático para damaged. A coloração de dano ou outras respostas visuais do fornecedor são independentes da reprodução dessa animação.
death
Em EliteMobDeathEvent, o EliteMobs pede death no modelo de um boss personalizado, se essa animação existir. Remoção e mudanças de fase não equivalem a um evento de morte. A reprodução e a limpeza do modelo continuam sujeitas ao ciclo de vida do fornecedor.
powers
Não há correspondência automática entre nomes de poderes e nomes de animações do modelo.
Ainda não há correspondência automática de nomes, mas ambos os sistemas de scripts podem iniciar explicitamente uma animação pelo nome:
- EliteScript: a ação
PLAY_ANIMATION, com o nome da animação como valor. Resolve cada alvo como boss personalizado e reproduz a animação no respetivo modelo. - Lua:
context.boss:play_model_animation("animation_name").
Em ambos os casos, a animação é ignorada sem aviso se o modelo não a tiver ou se o boss não tiver um modelo personalizado.
Importar Modelos Personalizados a partir de masmorras
Passo 1. Importação normal
Ao importar uma pasta comprimida do dungeon packager que contém Modelos Personalizados, os Modelos Personalizados são movidos para o plugin de modelos que estiver instalado:
- FreeMinecraftModels instalado — os modelos vão para
(yourServer)/plugins/FreeMinecraftModels/models(ou para a pasta legadaModels, se ela já existir), e os ficheiros.bbmodelsão convertidos para.fmmodeldurante o processo. O EliteMobs dispara depois um evento de instalação de modelos para que o FMM reconstrua o seu registo de modelos. - Apenas ModelEngine instalado — os modelos vão para
(yourServer)/plugins/ModelEngine/blueprints. O importador partilhado atual não recarrega o ModelEngine automaticamente; reconstrói os modelos e o resource pack com o comando adequado à versão.
Depois de uma importação iniciar a reconstrução de modelos do FMM, o EliteMobs espera até 300 segundos (cinco minutos) que o FMM alcance o estado inicializado. Uma falha ou desativação do FMM, o fim do prazo ou uma espera interrompida param a inicialização do EliteMobs antes de carregar modelos e itens incompletos. Consulta os erros de ambos os plugins, resolve o problema e reinicia; não é um arranque bem-sucedido que apenas omita algumas entidades com modelo.
Passo 2. Resource Pack
O EliteMobs exporta o pacote integrado para (yourServer)/plugins/EliteMobs/resource_pack/em_rsp_defaults no arranque e guarda .rsp_checksum na pasta superior. Ignora a cópia quando a soma integrada coincide com a guardada e em_rsp_defaults existe. Uma mudança de versão não força a exportação; somas iguais não verificam cada ficheiro exportado quanto a alterações ou eliminações locais. A substituição usa uma troca de pastas preparada previamente; mantém as tuas próprias alterações ao pacote fora desta pasta gerada.
Terás de combinar estes ficheiros de resource pack com quaisquer ficheiros de resource pack do Model Engine e distribuir o resource pack combinado aos teus jogadores. Apenas os jogadores que tiverem o resource pack conseguirão ver os Modelos Personalizados.
Resolução de Problemas
Problemas comuns:
-
Modelo não visível:
- Confirma que o registo do fornecedor selecionado contém o modelo; usa o comando de recarregamento adequado ao fornecedor e à versão
- Verifica que o resource pack está instalado no cliente
- Confirma que
customModelcorresponde ao ID registado, normalmente o nome do ficheiro sem extensão
-
Animações não são reproduzidas:
- Verifica que os nomes das animações no Blockbench correspondem exatamente aos nomes documentados
- Verifica que as animações não estão definidas para repetir em loop se deveriam ser reproduzidas uma só vez
- Testa cada animação com os comandos do fornecedor selecionado
-
Ambos os plugins instalados:
- O EliteMobs usará o FreeMinecraftModels se ambos estiverem presentes
- Não existe um seletor de fornecedor por modelo. Para usar o ModelEngine, desativa o FreeMinecraftModels e usa uma versão R3 do ModelEngine
-
O boss ou NPC não tem nome visível (FMM):
- Verifica primeiro
name, a definiçãoalwaysShowNamedo boss e o carregamento do modelo. - O FMM atual coloca o nome acima da hitbox quando não há âncora
tag_. Verifica a altura da hitbox ou acrescenta uma âncora se o nome aparecer na posição errada. - Os modelos de NPCs voltam a ser associados quando o FMM emite o evento de recarregamento concluído. Consulta os avisos na consola se um modelo desaparecer após recarregar o FMM.
- Verifica primeiro