Empacotador de Masmorras
O que são masmorras?
Podes encontrar informação sobre masmorras, incluindo sobre as masmorras pré-feitas, aqui.
O que é o empacotador de masmorras?
O empacotador de masmorras permite aos administradores não só criar e empacotar masmorras, mas também empacotar qualquer tipo de conteúdo do EliteMobs. Isto inclui coisas como packs de eventos, packs de modelos, arenas, packs de NPCs, packs de itens, e por aí fora.
Porquê usar pacotes de masmorra?
- Masmorras instanciadas! As masmorras instanciadas só podem ser criadas através do sistema de pacotes de masmorra.
- Cópias de segurança seguras de Minidungeons! Se fizeres um Pacote de Masmorra, poderás implementá-lo e reimplementá-lo em qualquer servidor que queiras, a qualquer altura e por qualquer motivo.
- Fácil de ligar e desligar! Podes sempre fazer
/em setupe ligar ou desligar Pacotes de Masmorra, temporária ou permanentemente. - Fácil de partilhar! Se quiseres partilhar as tuas criações, basta comprimir os Pacotes de Masmorra num zip e enviá-los a outras pessoas. Existe uma sala no Discord dedicada às criações da comunidade, se tiveres interesse!
- Teletransportes! Os pacotes de masmorra criam automaticamente localizações de teletransporte, acessíveis na página de Teleports do menu
/em, o que pode ser muito útil em muitas configurações.
Criar Masmorras
As definições seguintes são usadas para criar um ficheiro de configuração que deve ir para a pasta content_packages. Estas definições servem especificamente para criar masmorras, e não são necessárias se apenas quiseres usar o empacotador de masmorras para distribuir conteúdo que não seja masmorra, como um pack de itens ou de eventos.
Plugins necessários
Nenhum. A proteção das masmorras é tratada pelo próprio EliteMobs: definir protect: true aplica ao mundo do pacote o conjunto de proteções por mundo do próprio EliteMobs, sem qualquer plugin de regiões envolvido.
O WorldGuard continua a ser uma dependência opcional (soft dependency). Quando está instalado, as flags de região específicas do EliteMobs ficam disponíveis, mas não é necessário para que um pacote de masmorra fique protegido.
Criar uma masmorra, passo a passo
O EliteMobs costumava ter dois grandes tipos de masmorras: baseadas em mundo e baseadas em schematic.
As masmorras baseadas em schematic estavam associadas a uma construção em schematic. Foram descontinuadas e já não são suportadas.
Todas as masmorras do EliteMobs são agora baseadas em mundo.
Ficheiro pack.meta obrigatório
O teu pacote de masmorra deve incluir um ficheiro pack.meta, que é simplesmente um ficheiro .txt renomeado com a extensão .meta. Este ficheiro deve conter apenas uma palavra, indicando a que plugin o pacote se destina (por exemplo, "elitemobs", escrito em minúsculas). O ficheiro pack.meta tem de estar no diretório raiz do teu pacote, junto de todas as outras pastas.
Valores globais
Os valores seguintes aplicam-se a todas as masmorras
isEnabled
Define se o pacote de masmorra está ativado.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
isEnabled | Boolean | false | ✅ |
Exemplo
isEnabled: true
name
Define o nome do conteúdo. Suporta Color Codes.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
name | String | none | ✅ |
Exemplo
name: '&c[lvl 999] &aThe Green Dungeon'

contentType
Define o tipo de masmorra.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
contentType | OPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGE | nenhum | ✅ |
Exemplo
contentType: INSTANCED_DUNGEON
SCHEMATIC_DUNGEON está mortoO SCHEMATIC_DUNGEON continua a ser aceite pelo parser, mas as masmorras em schematic foram removidas no EliteMobs 9.0 e substituídas por masmorras em mundo. Um pacote que o use não carrega nada e imprime um aviso na consola a dizer-te para apagares a entrada. Se quiseres a experiência de schematic, usa antes o BetterStructures com os pacotes de elite shrines.
customInfo
Define a informação adicional que aparecerá no ecrã do /em setup. Apenas para efeitos informativos. Suporta Color Codes.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
customInfo | String List | nenhum | ✅ |
Exemplo
customInfo:
- '&aThe best dungeon.'
- '&aMade by: CoolPlayer'

setupMenuDescription
Define a descrição que aparecerá no menu /em setup para este pacote de masmorra. Suporta Color Codes.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
setupMenuDescription | String List | nenhum | ❌ |
Exemplo
setupMenuDescription:
- '&2A cool dungeon for levels 10-20!'
- '&2Features 3 bosses and custom loot!'
downloadLink
Define a ligação de transferência mostrada aos jogadores no menu /em setup quando o conteúdo ainda não foi transferido.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
downloadLink | String | string vazia | ❌ |
Exemplo
downloadLink: http://www.example.org

dungeonSizeCategory
Define a categoria de tamanho do pacote de masmorra. Apenas para efeitos informativos.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
dungeonSizeCategory | Especial [1] | nenhum | ✅ |
Exemplo
dungeonSizeCategory: MINIDUNGEON

Especial [1]
Expandir Tabela
| Chave | Descrição |
|---|---|
LAIR | Os covis (lairs) são um tipo de masmorra pequena focada num grande combate de boss. |
SANCTUM | Os santuários são o equivalente instanciado dos covis. Ou seja, giram em torno de um enorme combate de boss. |
MINIDUNGEON | As minidungeons são um tipo de masmorra de tamanho médio que normalmente contém 3-15 minibosses e um grande boss, bem como muitos mobs "trash" pensados para serem "farmados" pelos jogadores em busca de moedas e equipamento. |
DUNGEON | As dungeons são o equivalente instanciado das minidungeons. É o tipo de masmorra mais tradicional dos MMORPG, em que os jogadores formam grupo e atravessam um corredor de mobs trash e minibosses até enfrentarem um boss final. |
RAID | Brevemente! |
ADVENTURE | As adventures são mapas de aventura completos. Incluem linhas de missões, NPCs, grandes quantidades de minibosses e bosses, e podem até conter as suas próprias arenas ou masmorras lá dentro. |
ARENA | As arenas são áreas de sobrevivência baseadas em vagas, em que os jogadores são recompensados por derrotarem vagas. |
OTHER | Qualquer outra coisa que não caiba nas categorias anteriores. |
REALM | Os realms são mundos grandes e persistentes, com conteúdo extenso e sistemas de progressão. |
Para descrições mais detalhadas, consulta Masmorras
protect
Define se o mundo do pacote de masmorra deve ser protegido. Isto não usa o WorldGuard — o EliteMobs regista o mundo no seu próprio conjunto de proteções, que bloqueia partir e colocar blocos, queima/desvanecimento/ignição de blocos, decomposição de folhas, farinha de osso, baldes de líquidos, edição de placas, acesso a contentores (exceto baús de tesouro), abertura de portas/alçapões/portões, interação com ovos de dragão e vasos, manipulação de item frames e armor stands, e o spawn de mobs vanilla. Vários destes comportamentos são ainda ajustados por allowExplosionBlockDamage, allowLiquidFlow e allowElytra.
Quando protect é false, nada disto se aplica e o mundo comporta-se como um mundo normal qualquer.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
protect | Boolean | true | ❌ |
Exemplo
protect: true
dungeonVersion
Define a versão do pacote de masmorra.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
dungeonVersion | Integer | nenhum | ✅ |
Exemplo
dungeonVersion: 1
playerInfo
Define a informação que aparece no menu. Suporta Color Codes.
Só funciona quando o /em está em modo livro, usando /em alt.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
playerInfo | String | nenhum | ✅ |
Exemplo
playerInfo: 'Difficulty: &a1-man easy content!'

regionEnterMessage
Define a mensagem que aparece quando um jogador entra na zona da masmorra. Suporta Color Codes.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
regionEnterMessage | String | nenhum | ❌ |
Exemplo
regionEnterMessage: '&aYou have entered the dungeon!'

regionLeaveMessage
Define a mensagem que aparece quando um jogador sai da zona da masmorra. Suporta Color Codes.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
regionLeaveMessage | String | nenhum | ❌ |
Exemplo
regionLeaveMessage: '&aYou have left the dungeon!'

hasCustomModels
Assinala que o pacote de masmorra inclui modelos personalizados (para o ModelEngine ou o FreeMinecraftModels). A chave é lida e escrita, mas nada no EliteMobs atua atualmente sobre ela — os modelos são instalados apenas por a pasta models estar presente no pacote. Trata-a como um marcador de documentação.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
hasCustomModels | Boolean | false | ❌ |
Exemplo
hasCustomModels: false
dungeonConfigFolderName
Define o nome das pastas usadas para os ficheiros associados a esta masmorra.
Obrigatório para masmorras instanciadas!
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
dungeonConfigFolderName | String | nenhum | ❌ |
Exemplo
dungeonConfigFolderName: my_dungeon_folder
anchorPoint
Define o ponto de referência a partir do qual o /em relativecoords <package> mede. Com um ponto de âncora definido, um administrador que esteja em qualquer sítio dentro do pacote instalado pode executar esse comando e obter as coordenadas do sítio onde está relativamente à âncora, que é o formato usado por coisas como os offsets de reforços e as localizações de scripts.
Se calculatedRotation for diferente de zero, o vetor devolvido é rodado em torno da âncora no eixo Y antes de ser mostrado, para que os números continuem corretos em colocações rodadas.
Sem um ponto de âncora, o comando informa o administrador de que o ponto de âncora é inválido e não faz mais nada.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
anchorPoint | Location | nenhum | ❌ |
calculatedRotation | Integer (graus) | 0 | ❌ |
Exemplo
anchorPoint: my_dungeon_world,100,64,100,0,0
calculatedRotation: 0
contentLevel
Define o nível de conteúdo que a masmorra deve apresentar no menu do EM.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
contentLevel | Integer | nenhum | ❌ |
Exemplo
contentLevel: 20
enchantmentChallenge
Define se a masmorra deve ser uma masmorra de Desafio de Encantamento.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
enchantmentChallenge | Boolean | false | ❌ |
Exemplo
enchantmentChallenge: false
song
Define se a masmorra deve ter uma banda sonora.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
song | String | none | ❌ |
name= É aqui que defines qual o ficheiro do resource pack que deve ser reproduzido.
length= A duração da banda sonora em milissegundos. O EliteMobs converte isto internamente para ticks, pelo que tem de ser a duração real do som, caso contrário a faixa reinicia demasiado cedo ou demasiado tarde.
As duas partes são separadas por um espaço. Podem encadear-se duas faixas com ->, caso em que a segunda entrada usa a mesma sintaxe name=/length=.
Exemplo
song: name=elitemobs:dark_cathedral.ambient length=93830
Forma com duas faixas:
song: name=elitemobs:intro length=12000->name=elitemobs:dark_cathedral.ambient length=93830
dungeonLockoutMinutes
Define um temporizador de bloqueio da masmorra depois de o boss da masmorra ter sido derrotado. O valor indicado é em minutos. A predefinição é 4320 (72 horas) desde o EliteMobs 10.3.1 e aplica-se a todos os pacotes de conteúdo pré-feitos — define isto como 0 no teu YAML para desativar o bloqueio num pacote específico, ou como outro número positivo para o substituir. Os jogadores bloqueados também não ganham XP de habilidade do boss para o qual estão em cooldown.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
dungeonLockoutMinutes | Integer | 4320 | ❌ |
Exemplo
dungeonLockoutMinutes: 1440
containedPackages
Define a lista de pacotes de masmorra contidos num meta-pacote. É usado quando o contentType está definido como META_PACKAGE, para listar todos os subpacotes que pertencem à masmorra maior.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
containedPackages | String List | nenhum | ❌ |
Exemplo
containedPackages:
- my_dungeon_adventure.yml
- my_dungeon_sanctum.yml
- my_dungeon_boss_fight.yml
customItemFilenames
Define a lista de ficheiros de itens personalizados de um pacote de itens. Definir este valor coloca automaticamente o contentType em ITEMS_PACKAGE.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
customItemFilenames | String List | nenhum | ❌ |
Exemplo
customItemFilenames:
- my_custom_sword.yml
- my_custom_armor.yml
customEventFilenames
Define a lista de ficheiros de eventos personalizados de um pacote de eventos. Definir este valor coloca automaticamente o contentType em EVENTS_PACKAGE.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
customEventFilenames | String List | nenhum | ❌ |
Exemplo
customEventFilenames:
- my_custom_event.yml
modelNames
Define a lista de nomes de modelos de um pacote de modelos. Definir este valor coloca automaticamente o contentType em MODELS_PACKAGE.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
modelNames | String List | nenhum | ❌ |
Exemplo
modelNames:
- my_custom_model
Chaves traduzíveis
Seis dos valores acima são registados no sistema de tradução quando o pacote é carregado: name, customInfo, playerInfo, regionEnterMessage, regionLeaveMessage e o name de cada entrada em difficulties. Num servidor a correr num idioma que não o inglês, estes são procurados no CSV desse idioma, e o texto que escreveres no YAML é aquilo com que a coluna inglesa é reconciliada. Escreve-os em inglês se quiseres que o teu pacote seja traduzível.
Pacotes de masmorra baseados em mundo
Os valores seguintes aplicam-se apenas a masmorras baseadas em mundo.
worldName
Define o nome do mundo que deve ser empacotado.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
worldName | String | nenhum | ✅ |
Exemplo
worldName: my_minecraft_world
wormholeWorldName
Esta função define o nome do mundo de wormholes, que serve de mundo secundário ligado ao mundo principal. É usado para funcionalidades como hubs de teletransporte ou câmaras de boss únicas.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
wormholeWorldName | String | nenhum | ❌ |
Exemplo
wormholeWorldName: my_minecraft_world_wormhole
environment
Define o ambiente do mundo.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
environment | Environment | nenhum | ✅ |
Exemplo
environment: NORMAL
teleportLocation
Define a localização de teletransporte do pacote de masmorra. É para aqui que os jogadores são teletransportados ao entrarem na masmorra.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
teleportLocation | String | nenhum | ✅ |
Exemplo
teleportLocation: my_minecraft_world,-1.5,68,0.5,0.0,0.0
allowExplosionBlockDamage
Permite ou impede que as explosões danifiquem blocos numa masmorra. As explosões são consideradas explosões de elite, pelo que qualquer dano em blocos é regenerado no espaço de 2 minutos.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
allowExplosionBlockDamage | Boolean | false | ❌ |
Exemplo
allowExplosionBlockDamage: true
allowLiquidFlow
Define se os líquidos (água, lava) podem fluir na masmorra.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
allowLiquidFlow | Boolean | true | ❌ |
Exemplo
allowLiquidFlow: false
allowElytra
Define se os jogadores podem planar com elytra dentro do mundo deste pacote de conteúdo. Quando é false (a predefinição), o EliteMobs cancela as tentativas de planar no mundo do pacote e reafirma o estado de não-planar a cada tick — útil para impedir que os jogadores saltem a travessia desenhada da masmorra.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
allowElytra | Boolean | false | ❌ |
Exemplo
allowElytra: true
listedInTeleports
Define se o pacote de masmorra aparece no menu de teletransportes. Quando definido como false, os jogadores não conseguem teletransportar-se para a masmorra através do menu de teleports do /em.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
listedInTeleports | Boolean | true | ❌ |
Exemplo
listedInTeleports: false
teleportLocationOffset
Define um offset para a localização de teletransporte do pacote de masmorra.
Esta chave é interpretada mas atualmente não é usada — nada no EliteMobs lê o offset resultante, pelo que defini-la não tem efeito no sítio onde os jogadores aterram. Ajusta antes o próprio teleportLocation.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
teleportLocationOffset | String | nenhum | ❌ |
Exemplo
teleportLocationOffset: my_minecraft_world,0.5,2,0.5,0.0,0.0
Masmorras instanciadas
As masmorras instanciadas criam um mundo novo de cada vez que um grupo de jogadores quer completar uma masmorra, e apagam-no quando terminam. Para isto funcionar corretamente, tens de colocar uma pasta com o nome indicado em dungeonConfigFolderName na pasta de configuração world_blueprints do EliteMobs.
Depois colocas dentro dessa pasta o mundo que vais usar, certificando-te de que o ficheiro session.lock do mundo é apagado.
Os valores seguintes aplicam-se apenas a masmorras instanciadas. Repara que todas as masmorras instanciadas são masmorras de mundo, pelo que também usam os valores das masmorras de mundo.
startLocation
Define a localização de teletransporte do ponto de partida da masmorra instanciada. É para aqui que os jogadores são teletransportados ao iniciarem a masmorra instanciada com /em start.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
startLocation | String | nenhum | ✅ |
Exemplo
startLocation: my_minecraft_world,10.5,70,10.5,0.0,0.0
permission
Define a permissão necessária para entrar na instância da masmorra.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
permission | String | nenhum | ❌ |
Exemplo
permission: elitedungeon.mypermission
minPlayerCount
Define o número mínimo de jogadores necessário para iniciar uma masmorra.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
minPlayerCount | Integer | 1 | ❌ |
Exemplo
minPlayerCount: 1
maxPlayerCount
Define o número máximo de jogadores permitido numa masmorra.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
maxPlayerCount | Integer | 5 | ❌ |
Exemplo
maxPlayerCount: 5
dungeonObjectives
Define a lista de objetivos da masmorra necessários para que esta seja considerada concluída.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
dungeonObjectives | String List | nenhum | ✅ |
Exemplos
Existem atualmente dois tipos de objetivo de masmorra:
- Matar um alvo:
filename=boss.yml:amount=X - Limpar uma percentagem da masmorra:
clearpercentage=X.Y
dungeonObjectives:
- filename=dungeon_final_boss.yml
- filename=dungeon_miniboss_one.yml
- filename=dungeon_miniboss_two.yml
dungeonObjectives:
- clearpercentage=0.8
Um simples boss.yml sem o prefixo filename= continua a ser aceite e é silenciosamente tratado como filename=boss.yml, para que os pacotes mais antigos continuem a funcionar. Os pacotes novos devem usar a forma explícita.
difficulties
Define a lista de dificuldades da masmorra instanciada.
Obrigatório para masmorras instanciadas!
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
difficulties | Especial [1] | nenhum | ❌ |
Exemplos
difficulties:
- levelSync: 25
id: 0
name: normal
- levelSync: 20
id: 1
name: hard
- levelSync: 15
id: 2
name: mythic

Especial [1]
Expandir Tabela
Definir as dificuldades da masmorra instanciada cria automaticamente diferentes opções de dificuldade ao entrar na masmorra.
Os nomes de dificuldade aqui definidos serão os usados na pasta de bosses personalizados, onde podes definir que poderes os bosses têm consoante a dificuldade.
As dificuldades estão em formato de lista e têm os seguintes campos:
| Chave | Descrição | Valores | Obrigatório |
|---|---|---|---|
name | Nome da dificuldade para os jogadores. | String | ✅ |
id | ID da dificuldade, usado em bosses e itens personalizados para as funcionalidades baseadas em dificuldade. | String | ❌ |
levelSync | Define o nível do level sync, se existir. O level sync faz com que todo o equipamento dos jogadores fique limitado ao valor definido, tornando impossível aos jogadores estarem sobrenivelados para uma masmorra e mantendo-a relevante em corridas posteriores. Baseado no sistema de level sync do Final Fantasy 14. | Nível absoluto (25) ou um valor relativo ao contentLevel (+5, -3) | ❌ |
Level sync relativo: um levelSync que comece por + ou - é aplicado sobre o contentLevel do pacote e limitado a um mínimo de 1. Por exemplo, contentLevel: 40 com levelSync: -5 sincroniza os jogadores para o nível 35. Numa masmorra dinâmica, cujo nível de conteúdo só é decidido quando a instância é criada, o valor relativo é resolvido nesse momento. Um valor que não possa ser interpretado desativa o level sync (0) e regista um aviso.
Masmorras dinâmicas
As masmorras dinâmicas são uma extensão das masmorras instanciadas, mas com uma diferença fundamental: permitem que o conteúdo da masmorra escale para o nível de dificuldade escolhido pelo jogador. As opções de nível disponíveis para o jogador são determinadas pelo nível de Guilda desbloqueado do jogador.
Ao desenhar bosses e mobs para uma masmorra dinâmica, usa a definição level: dynamic. Todo o loot em masmorras dinâmicas deve ser definido com scalability: scalable.
Os valores seguintes são necessários para as masmorras dinâmicas.
Como todas as masmorras dinâmicas são também masmorras instanciadas, usam adicionalmente todos os valores e definições das masmorras instanciadas.
contentType
Define o tipo de masmorra. Tem de estar definido como DYNAMIC_DUNGEON.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
contentType | OPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGE | nenhum | ✅ |
Exemplo
contentType: DYNAMIC_DUNGEON
contentLevel
Define o nível de conteúdo que a masmorra deve apresentar no menu do EM. Tem de estar definido com o valor -1 para que a masmorra apareça como masmorra dinâmica.
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
contentLevel | Integer | nenhum | ✅ |
Exemplo
contentLevel: -1
difficulties
Define a lista de dificuldades disponíveis e o level sync na masmorra dinâmica.
Obrigatório para masmorras instanciadas!
| Chave | Valores | Predefinição | Obrigatório |
|---|---|---|---|
difficulties | Especial [1] | nenhum | ✅ |
Exemplos
difficulties:
- levelSync: '+5'
name: normal
id: 0
- levelSync: '+0'
name: hard
id: 1
- levelSync: '-5'
name: mythic
id: 2

Especial [1]
Expandir Tabela
Definir as dificuldades da masmorra instanciada cria automaticamente diferentes opções de dificuldade ao entrar na masmorra.
Os nomes de dificuldade aqui definidos serão os usados na pasta de bosses personalizados, onde podes definir que poderes os bosses têm consoante a dificuldade.
Definir valores de levelSync positivos ou negativos entre aspas controla como o equipamento do jogador é sincronizado dentro da masmorra. Estes valores não afetam o nível da própria masmorra — o conteúdo da masmorra sincroniza sempre diretamente com o nível escolhido pelo jogador à entrada.
Por exemplo, se levelSync estiver definido como "+0", o equipamento do jogador será sincronizado para corresponder exatamente ao nível de conteúdo da masmorra.
Se estiver definido como "+5", o equipamento do jogador será sincronizado 5 níveis acima do conteúdo da masmorra.
Se estiver definido como "-5", o equipamento será sincronizado 5 níveis abaixo do conteúdo da masmorra.
As dificuldades estão em formato de lista e têm os seguintes campos:
| Chave | Descrição | Valores | Obrigatório |
|---|---|---|---|
name | Nome da dificuldade para os jogadores. | String | ✅ |
id | ID da dificuldade, usado em bosses e itens personalizados para as funcionalidades baseadas em dificuldade. | String | ❌ |
levelSync | Define o nível de escalonamento do equipamento do jogador. Determina como o nível do equipamento de um jogador é ajustado em relação ao conteúdo da masmorra, permitindo que o equipamento fique alguns níveis acima ou abaixo da dificuldade de masmorra escolhida. Baseado no sistema de level sync do Final Fantasy 14. | Integer | ❌ |
Usar o ficheiro de pacote meta_pack.yml para masmorras grandes.
Por vezes podes estar a trabalhar numa masmorra grande que inclui outras masmorras mais pequenas dentro de si, permitindo aos jogadores viajar entre elas através do mundo da masmorra principal. Um ótimo exemplo disto é a Adventure Dungeon Primis do EliteMobs.
A Primis apresenta um mundo vasto onde os jogadores podem explorar e completar missões, mas inclui também duas masmorras instanciadas dentro do seu mundo — uma das quais serve de combate contra o boss final. Em casos como este, existirão vários ficheiros de pacote de masmorra, embora todos pertençam à mesma masmorra global.
Para gerir isto, usamos um ficheiro de meta-pacote de masmorra. Este ficheiro funciona como um diretório central, indicando a masmorra principal e listando todo o conteúdo de masmorra adicional a ela associado.
Vejamos mais de perto como está estruturado o meta-pacote de masmorra da Primis:
isEnabled: true
name: '&2[000-020] The Primis Adventure!'
customInfo:
- The tutorial adventure for players
- new to EliteMobs!
downloadLink: https://discord.gg/9f5QSka
dungeonSizeCategory: LAIR
environment: NORMAL
protect: true
contentType: META_PACKAGE
containedPackages:
- primis_adventure.yml
- primis_blood_temple_sanctum.yml
- primis_gladius_invasion_dungeon.yml
setupMenuDescription:
- '&2A soft tutorial adventure for players between levels 0-20!'
- '&2Adventures are massive maps with quests,'
- '&2many bosses and npcs, among other things!'
- '&2Also has custom models!'
dungeonVersion: 21 #added dungeon meta package file
Como podes ver, o ficheiro de meta-pacote de masmorra é muito semelhante a um pacote de masmorra normal, com algumas diferenças importantes. O contentType: está definido como META_PACKAGE, e existe uma definição adicional chamada containedPackages:. Esta definição lista todos os outros pacotes de masmorra que fazem parte da masmorra maior.
Ao criares o teu meta-pacote, não te esqueças de incluir a definição containedPackages: e de listar todos os pacotes de masmorra que fazem parte da tua masmorra maior. Isto garante que tudo fica devidamente ligado e organizado dentro da estrutura global.
Ao versionares a tua masmorra, toda a gestão de versões deve ser feita através do meta-pacote. Isto porque o meta-pacote serve de pacote principal que determina a versão de toda a masmorra e é também o pacote usado para mostrar informação no menu /em setup.
Tem em conta que as masmorras individuais listadas no meta-pacote podem continuar a aparecer no menu de teleports do /em setup. Para evitar isso, terás de desativar manualmente as opções de teletransporte de cada uma dessas masmorras nos respetivos ficheiros de configuração.
Por exemplo, no caso da masmorra Primis:
Desativa as entradas de teletransporte no menu para primis_blood_temple_sanctum.yml e primis_gladius_invasion_dungeon.yml.
Deixa as opções de teletransporte ativas para primis_adventure.yml, já que este serve de hub principal onde os jogadores começam a sua jornada e acedem às restantes masmorras.
Esta configuração garante uma experiência fluida para os jogadores, mantendo a estrutura e a funcionalidade adequadas para o sistema de masmorras.
Ao dar nome ao ficheiro, recomendamos a seguinte convenção:
your_dungeon_name_meta_pack.yml
Valores de Boss Recomendados
Criar um mob de masmorra médio
Recomendamos deixar a definição normalizedCombat como true. Esta definição normaliza todos os mobs para escalarem de igual forma em vida e dano, independentemente do seu tipo de entidade.
Repara que, para conteúdo de masmorra, isto normalmente já está decidido por ti: enquanto normalizeRegionalBosses for true no MobCombatSettings.yml (a predefinição), todos os bosses regionais e todos os bosses de masmorras instanciadas são forçados a combate normalizado, independentemente do que diga o ficheiro do boss. Os multiplicadores abaixo são, portanto, os valores que realmente importam.
normalizedCombat: true
healthMultiplier: 1.0 #~3 sword hits to slay
damageMultiplier: 1.0 #1.5 hearts of dmg
Nota: dado que 1.0 é o valor predefinido para vida e dano, podes simplesmente omitir a definição de healthMultiplier ou damageMultiplier e definir normalizedCombat como true.
Criar grupos de trash
Os grupos de trash são numerosos mas não muito perigosos:
normalizedCombat: true
healthMultiplier: 0.7 #~2 sword hits to slay
damageMultiplier: 0.5 #0.5 hearts of dmg
Criar reforços
Os reforços devem morrer muito facilmente, mas representar um perigo em termos de dano (estes valores são recomendados para 4 ou mais entidades corpo a corpo; o uso real pode variar):
normalizedCombat: true
healthMultiplier: 0.25 #~1 sword hit to slay
damageMultiplier: 0.6 #1 heart of dmg
Criar minibosses
Os minibosses devem aguentar-se e representar um desafio de mecânicas para os jogadores. Deve ser um teste de perícia que dure algum tempo, mas não algo extremamente letal:
normalizedCombat: true
healthMultiplier: 3.0 #~10 sword hits to slay
damageMultiplier: 1.2 #2 hearts of dmg
Criar bosses
Os bosses são um verdadeiro desafio, o culminar de uma escalada numa masmorra e um verdadeiro teste de perícia com tudo em jogo. Os encontros devem ser longos e a morte deve ser uma ameaça presente.
normalizedCombat: true
healthMultiplier: 7.0 #~23 sword hits to slay
damageMultiplier: 1.4 #2.5 hearts of dmg
Estes valores recomendados são meras estimativas aproximadas, e os valores finais devem ser ajustados de acordo com os encontros específicos.
Isto é particularmente importante para os bosses finais de masmorra; podes querer ultrapassar significativamente o valor recomendado de 7.0 para o healthMultiplier, para dar ao último combate aquela sensação épica.
healthMultiplierA vida dos bosses é limitada pelo settings.attribute.maxHealth.max do servidor (2048 num servidor por predefinição) e o dano dos bosses não é limitado. Cada multiplicador tem, por isso, um nível a partir do qual o boss deixa de ganhar vida enquanto o seu dano continua a escalar — 7.0 atinge o limite no nível 36, 10.0 no nível 33, 40.0 no nível 23. Subir o multiplicador acima do ponto em que já atinge o limite não te dá nada além de um boss mais frágil. Consulta healthMultiplier para a tabela completa e para saberes como aumentar o teto.
Empacotar conteúdo do EliteMobs para distribuição
Por fim, provavelmente vais querer empacotar a tua masmorra, seja para arquivo, seja para distribuição.
O EliteMobs tem um sistema de importação que permite aos administradores importar, instalar e desinstalar conteúdo rapidamente. Podes ver como funciona aqui.
Distribuir Resource Packs de Masmorras
A partir do EliteMobs 9.6.0, as masmorras podem ser empacotadas e distribuídas com os seus próprios resource packs! Isto permite-te fazer coisas fixes, como usar texturas ou modelos personalizados para o loot largado na masmorra, ou acrescentar sons personalizados — como fizemos na nossa masmorra The Hallowed Haunt.
Para distribuir um resource pack com a tua masmorra, cria-o como qualquer resource pack normal. Se quiseres um modelo, podes usar como referência o resource pack predefinido do EliteMobs, que o EliteMobs exporta no arranque para plugins/EliteMobs/resource_pack/em_rsp_defaults/. O resource pack tem de ser distribuído descomprimido, por isso cria uma pasta com o nome da tua masmorra, por exemplo: my_cool_dungeon_rsp. Coloca dentro dessa pasta todos os ficheiros do resource pack que normalmente iriam para o zip. Depois, coloca essa pasta dentro de uma nova pasta chamada resource_pack — a mesma pasta que o EliteMobs usa para guardar o seu resource pack predefinido.
Não edites o próprio em_rsp_defaults: o EliteMobs calcula o checksum da cópia existente no seu jar a cada arranque e apaga e reexporta a pasta sempre que as duas divergem, pelo que as tuas alterações se perderiam.
Depois de organizares os ficheiros, a estrutura de diretórios deve ficar assim:
resource_pack
└── my_cool_dungeon_rsp
└── [resource pack files]
Uma vez concluído, o resource pack da tua masmorra deverá ser importado com sucesso quando a masmorra for instalada.
Recortar Mundos
Por vezes, pode ser necessário reduzir o tamanho do teu mundo Minecraft para o tornar mais leve e, consequentemente, mais fácil de distribuir. Isto pode ser conseguido através do plugin WorldBorder. Apesar de o plugin estar listado como suportando o MineCraft apenas até à versão 1.19, funciona sem problemas na versão mais recente do MineCraft à data de 25 de janeiro de 2024.
Details
Dica
Se estás a fazer isto pela primeira vez, pode ser boa ideia criares uma cópia de segurança do teu mundo, caso algo corra mal.Depois de instalares o plugin, dirige-te ao meio do mundo ou à área específica que queres recortar. Depois, executa o comando /wb set x, em que x representa o raio aproximado que queres para a tua área.
Details
Dica
Se o/wb não estiver a funcionar, experimenta /worldborder:wb.Depois de executares este comando, voa até aos limites do teu mundo para confirmares que a fronteira do mundo foi corretamente definida e cobre o tamanho pretendido. Vais perceber que chegaste ao limite quando fores empurrado para trás, acompanhado de uma mensagem no chat.

Na imagem acima, o objetivo é recortar o mundo em torno dos blocos roxos, deixando apenas alguns chunks à volta deles. Para isso, colocamo-nos no meio da área roxa, sobre os quadrados vermelhos, e executamos /wb set 50, definindo a fronteira do mundo logo a seguir à área roxa.
De seguida, usamos o comando /wb trim [freq] [pad], com a frequência definida como 200 e o pad como 20. O pad determina quantos chunks devem ficar à volta da fronteira do mundo (a área roxa), e a frequência determina quantos chunks devem ser processados por segundo. Depois de executar /wb trim 200 20, ser-nos-á pedido que confirmemos executando /wb trim confirm. Confirmamos a ação e, passado algum tempo, o nosso mundo ficará recortado, reduzindo o seu tamanho e tornando-o mais conveniente para distribuição.
Podes agora remover a fronteira do mundo com /wb clear all ou simplesmente deixá-la, se preferires.
Recortar a pasta do mundo
Existem vários ficheiros e pastas na pasta do teu mundo que podemos descartar, já que os plugins não usam todos. Isto reduz o tamanho do teu mundo e torna-o mais fácil de distribuir.
Para um ambiente de mundo NORMAL:
Para preparares o teu mundo, mantém os seguintes ficheiros e pastas:
- pasta region
- raids.dat de dentro da pasta data (certifica-te de que fica dentro da pasta data ao copiar)
- ficheiro level.dat
Podes apagar em segurança todos os outros ficheiros e pastas da pasta do mundo. Isto configura corretamente o teu mundo para o ambiente NORMAL.
Para os ambientes de mundo NETHER e THE_END:
Para preparares o teu mundo, mantém os seguintes ficheiros e pastas:
- pasta region dentro da pasta DIM-1 (certifica-te de que fica dentro da pasta DIM-1 ao copiar)
- raids.dat de dentro da pasta data (certifica-te de que fica dentro da pasta data ao copiar)
- ficheiro level.dat
Podes apagar em segurança todos os outros ficheiros e pastas da pasta do mundo. Isto configura corretamente o teu mundo para os ambientes NETHER e THE_END.
Executar o comando de empacotamento
O EliteMobs tem o comando /em package <dungeonName> <version>. Este comando procura uma subpasta chamada dungeonName dentro de cada uma das pastas de conteúdo abaixo e copia o que encontrar para exports/<dungeonName>/, comprimindo depois isso em exports/<dungeonName>_packaged.zip.
As pastas que analisa são, por ordem:
custombosses, customevents, npcs, customitems, customquests, customarenas, customspawns, customtreasurechests, wormholes, world_blueprints, powers
Tudo o que não conseguir encontrar imprime um aviso de "no subdirectory" e é ignorado, o que é normal num pacote que não usa todos os tipos de conteúdo.
Por esta razão, é altamente recomendável que mantenhas o conteúdo que queres empacotar em pastas com o mesmo nome do teu pacote. Caso contrário, terás de reunir e empacotar manualmente os ficheiros na estrutura adequada para distribuição.
Repara que o /em package não recolhe content_packages, worldcontainer, models nem resource_pack. Essas quatro têm de ser acrescentadas à pasta de exportação à mão antes de comprimires.
Adicionar o ficheiro do pacote de masmorra
Se estás a criar uma masmorra, terás de acrescentar manualmente o ficheiro do pacote de masmorra à pasta acabada de gerar na pasta exports. O teu ficheiro de configuração de pacote de masmorra deve seguir o formato descrito acima e ser colocado numa pasta chamada content_packages. Consulta a secção Estrutura de ficheiros abaixo para mais detalhes.
Não te esqueças de comprimir a tua masmorra quando terminares!
Estrutura de ficheiros
Se fizeste tudo corretamente, a estrutura de ficheiros deverá ser semelhante a este exemplo, em que chamámos à masmorra my_cool_dungeon:
Exemplo de estrutura de ficheiros de my_cool_dungeon
- my_cool_dungeon.zip
- content_packages
- my_cool_dungeon.yml <- É aqui que vai o teu ficheiro de configuração do pacote de masmorra
- worldcontainer
- [As tuas pastas de mundo vão aqui]
- wormholes
- my_cool_dungeon
- [Os teus wormholes vão aqui]
- my_cool_dungeon
- npcs
- my_cool_dungeon
- [Os teus NPCs vão aqui]
- my_cool_dungeon
- customtreasurechests
- my_cool_dungeon
- [Os teus baús de tesouro vão aqui]
- my_cool_dungeon
- customquests
- my_cool_dungeon
- [As tuas missões vão aqui]
- my_cool_dungeon
- customitems
- my_cool_dungeon
- [Os teus itens personalizados vão aqui]
- my_cool_dungeon
- custombosses
- my_cool_dungeon
- [Os teus bosses personalizados vão aqui]
- my_cool_dungeon
- customarenas
- my_cool_dungeon
- [As tuas arenas personalizadas vão aqui]
- my_cool_dungeon
- powers
- my_cool_dungeon
- [Os teus poderes personalizados vão aqui]
- my_cool_dungeon
- world_blueprints
- my_cool_dungeon
- [A tua pasta de mundo vai aqui, usada para masmorras instanciadas]
- my_cool_dungeon
- customevents
- my_cool_dungeon
- [Os teus eventos personalizados vão aqui]
- my_cool_dungeon
- customspawns
- my_cool_dungeon
- [Os teus spawns personalizados vão aqui]
- my_cool_dungeon
- models
- [Os teus modelos em formato bbmodel vão aqui; aceita pastas]
- scripts
- [Os teus scripts Lua do FreeMinecraftModels vão aqui]
- resource_pack
- my_cool_dungeon_rsp
- [Os ficheiros do teu resource pack vão aqui]
- my_cool_dungeon_rsp
- content_packages
Isto permite que a maioria dos utilizadores arraste e largue os ficheiros diretamente no seu servidor e tenha tudo a funcionar de imediato.
Pastas de nível superior reconhecidas
O importador só reconhece um conjunto fixo de nomes de nível superior. Para um pacote do EliteMobs (pack.meta a conter elitemobs), são estes:
| Pasta | Onde é instalada |
|---|---|
content_packages | plugins/EliteMobs/content_packages |
dungeonpackages | plugins/EliteMobs/content_packages (alias legado) |
custombosses | plugins/EliteMobs/custombosses |
customitems | plugins/EliteMobs/customitems |
customtreasurechests | plugins/EliteMobs/customtreasurechests |
customevents | plugins/EliteMobs/customevents |
customspawns | plugins/EliteMobs/customspawns |
customquests | plugins/EliteMobs/customquests |
customarenas | plugins/EliteMobs/customarenas |
npcs | plugins/EliteMobs/npcs |
wormholes | plugins/EliteMobs/wormholes |
powers | plugins/EliteMobs/powers |
world_blueprints | plugins/EliteMobs/world_blueprints |
resource_pack | plugins/EliteMobs/resource_pack |
worldcontainer | o contentor de mundos do servidor |
models ou modelengine | a pasta de modelos do FreeMinecraftModels se este estiver instalado; caso contrário, a pasta blueprints do ModelEngine |
scripts | plugins/FreeMinecraftModels/scripts |
pack.meta | não é instalada em lado nenhum — é apenas lida para identificar o pacote |
Qualquer outra coisa no nível superior do zip não é reconhecida e não será instalada, por isso mantém ficheiros readme soltos, capturas de ecrã e pastas __MACOSX fora da raiz do arquivo.
schematics é um caso especial: importá-la para o EliteMobs imprime um aviso a informar-te de que as masmorras em schematic foram removidas no EliteMobs 9.0.
Importante: ao empacotar para distribuição, certifica-te de que DESINSTALAS PRIMEIRO A MINIDUNGEON! Não queres distribuir minidungeons instaladas; queres que os administradores as configurem nos seus próprios servidores!
Partilhar com a comunidade os Pacotes de Masmorra que criaste
O Discord tem uma secção #community_dungeons onde as pessoas podem partilhar as suas criações de Minidungeons. Fica à vontade para contribuir!
