Empacotar conteúdo personalizado para o EternalTD
O EternalTD carrega conteúdo personalizado das pastas abaixo. As importações ZIP usam o importador partilhado do MagmaCore; os metadados do pacote controlam a apresentação em /etd setup.
Pasta de importação
As importações manuais passam por:
plugins/EternalTD/imports/
Após importar conteúdo manualmente, execute:
/etd reload
Pastas de conteúdo oficiais
O plugin atual procura conteúdo nestas pastas em minúsculas:
plugins/EternalTD/levels/
plugins/EternalTD/waves/
plugins/EternalTD/npcs/
plugins/EternalTD/worlds/
Sobre nomes antigos:
Levels/eNPCs/são nomes de versões anteriores.- O EternalTD migra-os para
levels/enpcs/no arranque e recarregamento.
Regras de empacotamento de mundos
O EternalTD trata os mundos em:
plugins/EternalTD/worlds/
como mundos de origem para as instâncias.
Quando um jogador inicia um nível, o EternalTD copia o mundo correspondente para a pasta de mundos do servidor e executa a sessão nessa cópia.
A raiz do mundo de origem é validada antes da cópia; os ficheiros e subpastas são verificados durante a cópia. Uma falha elimina a cópia parcial. A cópia é recusada se:
- não existir
level.datna raiz - a pasta de origem for uma ligação simbólica ou contiver qualquer ligação simbólica
- existir um ficheiro chamado
.eternaltd-instance
Este último nome está reservado. O EternalTD escreve-o nas cópias usadas em execução como marcador de propriedade e verifica a identidade e a propriedade da instância antes da limpeza. Nunca o inclua num mundo empacotado.
Na prática:
- coloque os mundos de origem em
plugins/EternalTD/worlds/ - não use as cópias criadas durante as sessões como originais do conteúdo distribuído
- os mundos de origem devem estar em subpastas diretas de
worlds/; nomes que contenham qualquer.são excluídos da deteção - os nomes também não podem conter separadores de caminho,
:ou caracteres de controlo e devem corresponder exatamente aoworldNamedo nível
O hub oficial é uma exceção e é acompanhado diretamente na pasta de mundos do servidor como:
etd_spawn
O que permite ativar e desativar um pacote
Só é possível ativar e desativar um pacote em /etd setup se este disponibilizar ficheiros de configuração acompanhados.
Os campos de recursos acompanhados são:
levelFileswaveFilesnpcFilesworldFoldersworldContainerFoldersmarkerFileName
Na prática:
- pacotes de níveis, vagas e NPCs podem ser ativados ou desativados alterando
isEnablednos respetivos ficheiros YAML - os ficheiros são procurados recursivamente pelo nome, pelo que podem estar em subpastas de
levels/,waves/enpcs/ - conteúdo partilhado da pasta de mundos e pacotes de recursos apenas com marcador não podem ser ativados e desativados da mesma forma
Campos de metadados dos pacotes
O modelo atual de configuração aceita:
isEnablednamedescriptiondownloadLinkversionnightbreakSluglevelFileswaveFilesnpcFilesworldFoldersworldContainerFoldersmarkerFileNamecategorytoggleable
Para mostrar conteúdo personalizado no menu, coloque o YAML de metadados diretamente em plugins/EternalTD/content_packages/ ou inclua-o na pasta content_packages/ do ZIP (consulte a Estrutura do ZIP). Indique os nomes reais dos ficheiros e mundos e pelo menos um recurso acompanhado. Uma lista de recursos vazia nunca conta como transferida. O campo isEnabled do pacote por si só não desativa os seus níveis: o controlo do menu escreve esse campo em cada ficheiro acompanhado de nível, vagas e NPC, guarda o campo do pacote e reinicia o EternalTD.
Existe ainda markerFallbackFolders, que lista pastas em plugins/ cuja presença não vazia também conta como instalação. Serve para conteúdo que pode chegar ao servidor sem o processo de transferência escrever um marcador. Este campo só é definido no código; escrevê-lo no YAML do pacote não tem efeito.
Empacotamento de modelos
O pacote atual EternalTD Custom Models é acompanhado por um ficheiro marcador, em vez de ficheiros de configuração EternalTD normais.
Assim:
- o EternalTD consegue acompanhar a transferência do pacote de modelos partilhado
- os modelos propriamente ditos ficam no FreeMinecraftModels quando o FMM está instalado
- a remoção é manual, seguida de
/etd reload
Estrutura do ZIP
Coloque as pastas reconhecidas diretamente na raiz do arquivo, sem uma pasta exterior. Uma estrutura mínima é:
pack.meta
levels/my_level.yml
waves/my_waves.yml
npcs/my_npc.yml
worlds/my_world/level.dat
worlds/my_world/region/...
O texto simples em pack.meta é eternaltd. Um ZIP sem esse ficheiro usa a plataforma do plugin que o importa; uma pasta extraída só é processada se contiver pack.meta. Coloque os ficheiros .zip na pasta de importação e recarregue.
| Entrada na raiz do arquivo | Destino |
|---|---|
levels, waves, npcs, worlds | Pastas correspondentes em plugins/EternalTD/ |
content_packages | plugins/EternalTD/content_packages/; metadados do pacote que o listam em /etd setup |
content_markers | plugins/EternalTD/content_markers/; marcadores de instalação com o nome <markerFileName>.marker |
worldcontainer | Pasta de mundos do servidor, para mundos partilhados como etd_spawn |
models, modelengine | Pasta de modelos do FMM se estiver ativo; caso contrário, blueprints do ModelEngine se estiver ativo; caso contrário, pasta do FMM para utilização posterior |
scripts | plugins/FreeMinecraftModels/scripts/ |
freeminecraftmodels, elitemobs, betterstructures | Pasta de dados desse plugin (plugins/FreeMinecraftModels/, plugins/EliteMobs/, plugins/BetterStructures/); organize o conteúdo como nessa pasta |
O destino de modelos do FMM usa a pasta antiga Models se existir; caso contrário, usa models; uma pasta freeminecraftmodels/models no arquivo é fundida na mesma pasta. Qualquer importação para as pastas do FMM desencadeia o recarregamento do conteúdo importado do FMM, se este estiver ativo. O conteúdo colocado na pasta do BetterStructures desencadeia um recarregamento de conteúdo do BetterStructures quando este terminar o arranque.
O importador corre antes de o EternalTD carregar content_packages/, por isso o YAML de um pacote incluído no ZIP aparece em /etd setup depois do recarregamento que o importa. Um marcador incluído em content_markers/ conta como o recurso de marcador do pacote, pelo que esse recurso aparece como presente sem passar pelo processo de transferência do menu de configuração. O pacote continua a precisar dos restantes ficheiros acompanhados para contar como transferido.
Uma entrada de raiz desconhecida faz rejeitar o arquivo antes da instalação. O importador conserva os ZIPs com falhas para nova tentativa e tenta restaurar os destinos alterados por esse arquivo; consulte os erros de restauro nos registos antes de repetir. Substituir um mundo partilhado descarrega primeiro o mundo anterior da memória: os jogadores que lá estejam são movidos para o spawn de outro mundo carregado. Se um jogador não puder ser movido ou o mundo se recusar a descarregar, o arquivo é conservado para nova tentativa. As importações bem-sucedidas eliminam o ZIP; isso não confirma que o nível seja jogável.