Saltar para o conteúdo principal

Modelos e pacote de recursos do EternalTD

O EternalTD usa atualmente FreeMinecraftModels para os modelos e /etd install para configurar o pacote de recursos.

FreeMinecraftModels​

FreeMinecraftModels é uma dependência opcional.

  • O EternalTD carrega sem ele.
  • Quando está presente, pode substituir os corpos vanilla das torres por modelos estáticos FMM. Um modelo ausente gera um aviso e mantém o corpo vanilla.
  • Quando está ausente, o EternalTD usa os corpos vanilla sem impedir o arranque. O indicador de integração verifica a presença do plugin: uma instalação FMM desativada ou incompatível não equivale à ausência do plugin.

O pacote de modelos partilhado atual é:

  • EternalTD Custom Models

É transferido pelo sistema de conteúdo EternalTD e descrito no código como conteúdo importado para o FreeMinecraftModels quando o FMM está disponível.

O acompanhamento de pacotes do EternalTD também aceita qualquer uma destas pastas FMM não vazias como conteúdo instalado:

plugins/FreeMinecraftModels/models/EternalTD default towers/
plugins/FreeMinecraftModels/Models/EternalTD default towers/

A grafia com maiúscula corresponde à pasta antiga. Detetar qualquer uma das pastas não vazias faz o conteúdo contar como instalado e tenta escrever plugins/EternalTD/content_markers/eternaltd_custom_models.marker; uma falha de escrita é registada. Um marcador existente também conta mesmo que os modelos tenham sido removidos depois. Nenhuma destas verificações valida os modelos ou comprova o seu carregamento.

Efeito de /etd reload nos modelos​

/etd reload reinicia o EternalTD no servidor e processa as importações pendentes. Quando o importador partilhado instala modelos ou outros ficheiros nas pastas do FMM (como scripts) e o FMM está ativado, a notificação de instalação chama o recarregamento de conteúdo importado do FMM. Isto é condicional, não acontece em cada /etd reload. O método de encaminhamento separado do EternalTD não tem chamadas.

Se editar ou copiar ficheiros diretamente para as pastas FMM, use o comando de recarregamento do próprio FMM. Verifique os registos e um modelo no jogo; o marcador do pacote não basta.

/etd install​

/etd install não transfere um pacote de modelos. Aplica as definições de distribuição do pacote de recursos oficial.

A URL oficial atual é:

https://www.magmaguy.com/downloads/eternaltd_resource_pack.zip

Com ResourcePackManager instalado​

Se o ResourcePackManager estiver ativado, o EternalTD regista o pacote oficial e pede-lhe para recarregar o estado dos pacotes.

Neste modo:

  • o EternalTD não escreve a URL em server.properties
  • o ResourcePackManager distribui o pacote aos jogadores
  • o EternalTD regista /etd reload como comando de recarregamento posterior

A mensagem de registo confirma as chamadas à API, não a entrega bem-sucedida a um cliente. No arranque, o EternalTD apenas considera o ResourcePackManager ativado como uma configuração ativa; não efetua este registo. Execute /etd install para o solicitar e verifique o pacote com um jogador ligado.

Com ResourcePackManager indisponível ou falha de registo​

O EternalTD edita diretamente server.properties se o ResourcePackManager estiver desativado, ausente ou se o registo pela API lançar um erro.

Escreve estas propriedades:

  • resource-pack
  • resource-pack-sha1

Antes de alterar qualquer uma, transfere o pacote e calcula o SHA1 à medida que os bytes chegam, sem guardar o pacote no disco. A transferência usa um tempo limite de ligação de 10 segundos e um tempo limite de leitura de 30 segundos. Se a transferência ou o cálculo falhar, server.properties fica intacto. Se tudo correr bem, escreve ambos os valores em conjunto através de um ficheiro temporário e de substituição atómica quando o sistema operativo a permite. Se ambos os valores já coincidirem, o ficheiro não é reescrito.

Neste modo, o comando indica que é necessário reiniciar o servidor para aplicar as novas definições.

Verificação de atualização do SHA1​

Quando usa server.properties em vez do ResourcePackManager, o EternalTD também verifica no arranque (e em /etd reload) se o SHA1 do pacote oficial mudou.

A verificação só ocorre quando resource-pack é exatamente a URL oficial do EternalTD indicada acima; um pacote de qualquer outra URL não é alterado. Se o hash mudou, o EternalTD escreve o novo resource-pack-sha1, depois de confirmar que resource-pack ainda contém a URL oficial. Não anuncia a alteração; o servidor envia o novo hash aos jogadores após o próximo reinício. Se a escrita for ignorada ou falhar, a consola regista que a soma de verificação não foi atualizada. Com ResourcePackManager ativado, este ramo de arranque é ignorado.

Avisos aos operadores​

Quando se verificam todas estas condições:

  • FreeMinecraftModels está instalado
  • o jogador que entra é operador
  • o EternalTD não deteta uma configuração ativa de pacote de recursos

O EternalTD agenda um aviso para cinco segundos depois, desde que o jogador ainda seja válido. Indica:

  • /etd install
  • /etd initialize, que abre o menu inicial e exige eternaltd.*
  • /etd setup

A deteção significa apenas que o ResourcePackManager está ativado ou que server.properties contém um valor resource-pack não vazio. Não verifica a aceitação pelo cliente nem a presença dos recursos EternalTD no pacote. O aviso descreve a via de server.properties, mas /etd install continua a tentar primeiro o ResourcePackManager.

Remoção dos recursos​

O pacote de modelos personalizados é tratado como recurso partilhado, não como um pacote que possa ser ativado e desativado normalmente.

Para o remover:

  1. Remova os modelos importados pretendidos, verificando as pastas atuais e antigas do FMM.
  2. Remova plugins/EternalTD/content_markers/eternaltd_custom_models.marker para que o pacote deixe de contar como instalado. Uma pasta alternativa ainda não vazia voltará a criar esse estado na próxima verificação.
  3. Recarregue o FMM para aplicar as remoções diretas e execute /etd reload. Consulte /fmm setup se necessário. Estes passos não removem o registo do pacote de recursos nem as suas definições em server.properties.