Saltar para o conteúdo principal

Criar World Bosses

Os World Bosses também são por vezes referidos como Regional Bosses (bosses regionais).

O que são?​

Os World Bosses são Bosses Personalizados configurados para aparecer numa localização específica com um intervalo específico. Estes são também os bosses usados em Masmorras (Dungeons). No entanto, nesta secção vamos abordar especificamente a criação de World Bosses para uso fora de masmorras.

Para que servem?​

Os World Bosses permitem aos jogadores enfrentar um desafio fixo sabendo que o loot será gratificante.

O que preciso para criar um World Boss?​

  1. Uma localização. Recomenda-se uma sala de boss, com um raio de cerca de 15 blocos (30 blocos de diâmetro) devido ao alcance de aggro do Minecraft. Além disso, certifica-te de que o terreno está protegido através de uma região do WorldGuard (para que os jogadores não consigam construir armadilhas) e de que o terreno não pode ser explorado durante o combate.
  2. Um tempo de respawn. O temporizador de respawn é essencial. Não recomendo um temporizador de respawn inferior a 30 minutos, caso contrário o respawn do boss será menos um acontecimento. 1 hora é um tempo bastante bom, mas também podes querer fazer com que o boss reapareça uma vez por dia ou até uma vez por semana.
  3. Um tempo de fuga (escape). Quanto mais longo for o respawn, mais longo deve ser o tempo de fuga. Tem também em conta que o tempo de fuga deve ser longo o suficiente para que as pessoas possam desafiar o boss confortavelmente. Os temporizadores de fuga são importantes se não quiseres permitir que os jogadores se atirem em kamikaze contra o boss até o matarem. Isto não é obrigatório, nem sequer recomendado se quiseres fazer bosses de respawn massivos com uma semana de duração.
  4. Um Boss Personalizado. Os World Bosses são, na realidade, apenas Bosses Personalizados com regras de spawn personalizadas. Certifica-te de que selecionas powers com uma boa compatibilidade para combate em grupo (raid).
  5. Loot interessante. O grande atrativo dos World Bosses, para além do desafio, é o loot. Certifica-te de que os jogadores conseguem obter algo dele que simplesmente não conseguem obter noutro lado.
  6. Um tema. Um bom boss Regional deve ter um tema, com uma localização temática e loot temático.

Opções de configuração de World Bosses​

Estas definições são adicionadas aos ficheiros de configuração normais de Boss Personalizado. Podes encontrar uma página extensa da wiki sobre esses aqui.


isRegionalBoss​

Define se o boss é um boss regional. Os bosses regionais são outro nome para World Bosses, por isso queres definir isto como true.

KeyValuesDefault
isRegionalBossBooleanfalse
Exemplo
isRegionalBoss: true

spawnLocations​

As localizações de spawn devem ser definidas a partir do jogo usando o comando /em place boss <filename.yml>.

Executa-o como jogador com elitemobs.place.admin, depois de carregar uma configuração com isRegionalBoss: true. Cada utilização adiciona outra colocação do mesmo boss. O comando centra a posição num bloco e procura para cima um local transitável. Confirma que há espaço suficiente para o boss.

Embora seja possível adicionar localizações manualmente a partir da configuração, não recomendo tentar fazer isso, pois é demasiado fácil errar.

KeyValuesDefault
spawnLocationsString Listnenhum
Exemplo

Localizações nos ficheiros de configuração (para utilizadores avançados) Os ficheiros de configuração do Boss Regional armazenam todas as instâncias desse Boss Regional num único ficheiro, guardando várias localizações de spawn bem como temporizadores de respawn.

Em termos práticos, isso significa que esta entrada:

spawnLocations:
- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931
- elitemobs_sewer_maze,-135.02262355317436,168.2,-153.28849346821508,-98.53906,60.750263:1609026066482
- elitemobs_sewer_maze,-70.43846307626053,168.2,-174.13499832314378,-271.24023,64.19999:1610710886530
- elitemobs_sewer_maze,-130.39762674971664,168.2,-171.67396911490718,-47.532227,51.900173:1609026066482
- elitemobs_sewer_maze,-117.12782160766056,162.2,-166.40989416757444,-71.37402,-1.4997427:1610710974882
- elitemobs_sewer_maze,-105.13138759611667,168.2,-169.85898023126538,-124.34766,41.24988:1610710945331
- elitemobs_sewer_maze,-106.21847515732084,169.2,-152.3609257554766,-170.86523,21.450315:1610537606222

contém 7 Bosses Regionais diferentes, em localizações diferentes, e com temporizadores de respawn diferentes.

Vamos analisar os detalhes, olhando para o primeiro Boss Regional:

- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931

Como isto segue o formato world,x,y,z,yaw,pitch:unixTimeStamp, o boss aparece num mundo chamado elitemobs_sewer_maze em x = -70.17178578884845, y = 168.2, z = -173.17112099568718, yaw = -271.24023, pitch = 64.19999.

A marca temporal guarda o prazo de respawn em milissegundos desde a época Unix, preservando-o após reinícios. Usa um conversor que aceite milissegundos para a consultar.

Para remover um prazo guardado, para o servidor antes de editar e apaga o sufixo :unixTimeStamp, incluindo os dois pontos. Fica world,x,y,z,yaw,pitch. O plugin em execução guarda periodicamente as colocações e pode substituir alterações manuais. Sem prazo, o boss é restaurado sem anúncio de spawn quando o mundo e o chunk permitem a sua criação.


spawnCooldown​

Define o intervalo após a morte ou fuga por timeout até à próxima tentativa de spawn, em minutos. 0 agenda uma tentativa imediata; um valor negativo desativa o respawn agendado. O mundo e o chunk têm de estar disponíveis para a entidade aparecer. Bosses em patrulha também precisam de uma posição onde as entidades estejam a ser atualizadas.

Nota: recomendam-se respawns mais longos para bosses grandes!.

KeyValuesDefault
spawnCooldownInteger0
Exemplo
spawnCooldown: 20

timeout​

Define o prazo de fuga a partir do spawn, em minutos, não a partir do início do combate. Valores inferiores a 1 desativam-no. Restaurar um boss regional após carregar o chunk ou mundo, ou reiniciar o servidor, inicia novamente o prazo completo. Não é um prazo persistente. As mudanças de fase preservam o temporizador do encontro.

Nota: Isto deve ser tempo suficiente para que os jogadores completem a luta confortavelmente.

KeyValuesDefault
timeoutInteger0
Exemplo
timeout: 60

Define o boss para fugir após 60 minutos se não for derrotado.


leashRadius​

Define o limite de regresso em torno da colocação. Com navegação nativa, as criaturas compatíveis começam um regresso suave a metade do raio, e o regresso obrigatório usa o raio completo. O boss pode ser teletransportado se não chegar ao destino. Os Ender Dragons não usam estes objetivos nativos. Sem navegação nativa, uma verificação a cada 3 segundos devolve os bosses que ultrapassam o raio completo; esta alternativa só funciona com raios de pelo menos 1. Quando um regresso nativo termina, o boss só recupera a vida toda se regenerateCustomBossHealthOnCombatEnd estiver ativo em MobCombatSettings.yml (predefinição true).

Nota: tenta evitar criar áreas de combate que exijam leashes inferiores a 20 blocos, pois isso tornará a luta pior.

KeyValuesDefault
leashRadiusDouble0 (desativado)
Exemplo
leashRadius: 30

escapeMessage​

Define a mensagem enviada aos jogadores no mundo do boss quando este foge por timeout. Exige uma mensagem não vazia e announcementPriority de pelo menos 1. A prioridade 3 ou superior também a envia através da integração Discord configurada. A fuga remove o boss e inicia o intervalo de respawn, salvo se removeAfterDeath: true eliminar permanentemente a colocação.

KeyValuesDefault
escapeMessageStringnenhum
Exemplo
escapeMessage: "&cThe World Boss has escaped!"

announcementPriority​

Controla os anúncios e a possibilidade de rastrear o boss. É necessário configurar as mensagens. O rastreamento também exige showCustomBossLocation em MobCombatSettings.yml; locationMessage é opcional.

LevelBehavior
0Sem anúncios de spawn/fuga nem rastreamento; as mensagens de morte configuradas ainda podem chegar aos atacantes
1Mensagens de spawn/morte/fuga configuradas e rastreamento através de /em se estiver ativo
2Idêntico ao nível 1 (sem comportamento adicional)
3Nível 1 + notificações no Discord (se configurado)

O anúncio de spawn respeita announcementBroadcastWorldOnly em events.yml. Mensagens de morte com prioridade positiva são enviadas a todo o servidor e exigem doCustomEliteMobsDeathMessages em MobCombatSettings.yml. A fuga é anunciada apenas no mundo do boss. Bosses restaurados podem ser rastreados sem repetir o anúncio de spawn. Define a prioridade explicitamente; adicionar uma mensagem não muda automaticamente a predefinição 0.

KeyValuesDefault
announcementPriorityInteger0
Exemplo
announcementPriority: 3

Define o boss para anunciar no chat e no Discord, e permite que os jogadores o rastreiem.


isPersistent​

Preserva o boss para o restaurar após descarregar o seu chunk. A entidade ativa é removida enquanto está descarregado e restaurada quando o chunk correspondente volta a carregar. Isto não mantém o chunk carregado nem o boss a combater.

Os bosses regionais colocados já ativam a persistência pelo seu próprio ciclo de vida, independentemente desta definição dos bosses personalizados normais.

Nota: Demasiados bosses persistentes (centenas) podem causar problemas de desempenho.

KeyValuesDefault
isPersistentBooleanfalse
Exemplo
isPersistent: true

removeAfterDeath​

Determina se o World Boss é removido permanentemente depois de ser derrotado. Útil para bosses de evento únicos ou encontros especiais que não devem reaparecer.

Com false, a predefinição, a morte ou o timeout agenda outro spawn após spawnCooldown, salvo se o valor for negativo.

Com true, a morte ou o timeout elimina permanentemente esse boss colocado da lista de localizações.

KeyValuesDefault
removeAfterDeathBooleanfalse
Exemplo
removeAfterDeath: true

Blocos Transitivos​

Os blocos transitivos são configurados através de onSpawnBlockStates e onRemoveBlockStates. Estas opções guardam as alterações de blocos para os estados ON_SPAWN e ON_REMOVE descritos abaixo.

É assim que podes fazer os bosses abrir ou fechar portas / áreas ou até modificar uma arena durante o combate se o usares com bosses de fase!

KeyValuesDefault
onSpawnBlockStatesVer Explicação Detalhadanenhum
KeyValuesDefault
onRemoveBlockStatesVer Explicação Detalhadanenhum
Explicação Detalhada

Todos os blocos são relativos à localização de spawn. Certifica-te de que tens a tua localização de spawn final antes de começares a definir quaisquer blocos.

O editor exige um jogador com elitemobs.transitiveblocks. Coloca uma única cópia do boss regional durante o registo; várias colocações da mesma configuração são rejeitadas. Os ficheiros de fase podem usar o boss regional principal. Guardam-se dados dos blocos, não inventários nem outros conteúdos de entidades de bloco, e o yaw do boss não os roda.


Se já criaste uma grande área de Blocos Transitivos e agora precisas de mover o boss, mas não queres refazer os Blocos Transitivos. Então podes usar a ação Teleport do EliteScript para mover o boss para a localização correta depois de ele aparecer. Tem em conta que terás de ajustar a tua leash em conformidade.

Devido à complexidade de definir blocos, não é recomendado fazer isto manualmente. Deves usar os seguintes comandos para o fazer:

  • /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks cancel

Vamos analisar isto.

/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

Executa-o uma vez para iniciar uma nova seleção ON_SPAWN ou ON_REMOVE e outra vez para guardar. Um novo registo substitui a lista anterior desse estado. Termina ou cancela a seleção antes de iniciar outro ficheiro ou estado; outro comando válido de registo ou edição guarda a sessão ativa.

ON_SPAWN aplica os blocos guardados no spawn ou respawn. ON_REMOVE aplica-os na morte ou no comando de matar e ao avançar de fase, antes de substituir a configuração dos blocos pela seguinte. O timeout, a reposição das fases por cura completa, o reload e o encerramento não aplicam o estado de derrota.

Durante o registo, clica com o botão direito para guardar o estado atual de um bloco, ou com o esquerdo para guardar ar nessa posição. Estes cliques são cancelados: selecionam o estado sem colocar nem partir blocos. Cada posição é guardada uma só vez: clicar numa posição já guardada com o outro botão remove-a da seleção. Os cliques fora do mundo do boss são recusados com uma mensagem. Repete o comando para guardar.

/em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

Se quiseres modificar blocos já definidos, podes usar este comando. Funciona de forma muito semelhante a /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>.

/em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

Tal como /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>, isto permite-te registar blocos, mas permite selecioná-los obtendo dois cantos diametralmente opostos (igual à seleção de região do worldedit / worldguard) em vez de selecionar blocos individualmente.

Marca um canto com o botão esquerdo e o oposto com o direito, e repete o comando para guardar a área. Os dois cantos têm de estar no mundo do boss, e tens de estar nesse mundo quando guardas. Caso contrário, o EliteMobs recusa a gravação com uma mensagem e mantém a tua seleção ativa. Os blocos da área substituem qualquer bloco já selecionado na mesma posição.

defaultTransitiveBlockLimiter em config.yml tem a predefinição 500, mas atualmente só emite um aviso. Seleções maiores continuam a ser guardadas. Mantém as áreas pequenas. Aplicar os estados carrega os chunks de destino e altera todos os blocos num único tick, o que pode causar lag.

/em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

Carrega os estados existentes e acrescenta os estados atuais dos blocos da área selecionada. Usa a mesma seleção de cantos e aviso de tamanho de registerArea.

/em transitiveBlocks cancel

Descarta a seleção por guardar. Não desfaz construções feitas no mundo nem alterações já guardadas na configuração do boss.


Dicas para criar um bom combate com um grande boss regional​

  1. Pensa realmente em como os powers do teu Boss Personalizado se complementam. Não queres que o teu boss passe a maior parte do tempo parado porque está a lançar algo, pois isso pode na verdade tornar a luta muito fácil. Também não queres que o boss tenha apenas ataques à distância e nenhum power corpo a corpo, ou o contrário, a menos que estejas a desenhar algo muito específico. Os testes de jogo são importantes.

  2. Escolhe a vida tendo em conta o limite. A vida é limitada pelo valor ativo settings.attribute.maxHealth.max do servidor, normalmente 2048. Com healthMultiplier: 10.0, o boss atinge esse limite no nível 33. Aumentar mais o nível muda os cálculos de combate sem acrescentar vida. Consulta healthMultiplier antes de combinar um multiplicador grande com um level alto.

  3. Dano - não demasiado. Os EliteMobs já são extremamente mortais por predefinição, e os powers tendem a ser exponencialmente mais mortais. Em vez de aumentares o dano até ao teto, considera usar powers para fazer o boss bater com mais força.

  4. Exploits, em todo o lado. Certifica-te bem de que o terreno não é explorável. Coloca o boss numa sala fechada para impedir que as pessoas tentem abatê-lo à distância (snipe). O power de invulnerabilidade a flechas é provavelmente extremamente importante para muitos World Bosses, uma vez que os mobs do Minecraft não conseguem lidar com serem abatidos à distância de vários chunks, por isso, se quiseres permitir ataques com arco, certifica-te de que os arcos não podem ser explorados.

  5. Conhece o plugin. Há muitos pequenos truques para derrotar os EliteMobs, como o facto de alguns powers poderem ser contrariados usando escudos, enquanto outros devem ser contrariados desviando-se ou até afastando-se temporariamente do boss. Quanto melhor compreenderes como os powers funcionam e como são contrariados, melhores serão os bosses que criares.


Exemplo completo de World Boss​

Este exemplo combina as definições principais. Substitui o mundo e as coordenadas pelos teus e confirma que os powers e o item personalizado indicados estão ativos. Regista as alterações de blocos no jogo; o bloco único só ilustra o formato.

isEnabled: true
entityType: ZOMBIE
name: "&cThe Zombie King"
level: 30
healthMultiplier: 10.0
damageMultiplier: 2.0

# World Boss specific settings
isRegionalBoss: true
isPersistent: true

# Spawn settings
spawnLocations:
- world,100,64,100,0,0
spawnCooldown: 60

# Combat boundaries
leashRadius: 30
timeout: 20

# Messages and announcements
spawnMessage: "&cThe Zombie King has risen!"
deathMessage: "&aThe Zombie King has been defeated by $players!"
escapeMessage: "&eThe Zombie King has escaped..."
announcementPriority: 2

# Arena modification
onSpawnBlockStates:
- 0,0,0/minecraft:barrier
onRemoveBlockStates:
- 0,0,0/minecraft:air

# Boss features
powers:
- zombie_friends.lua
- ground_pound.lua
uniqueLootList:
- filename=magmaguys_toothpick.yml:chance=1.0

Este boss irá:

  • Agendar um spawn 60 minutos após morrer ou fugir por timeout, aparecendo quando o mundo e o chunk estiverem disponíveis
  • Fugir 20 minutos após o spawn ou a restauração se não for derrotado
  • Anunciar spawn/morte/fuga no chat e permitir o rastreamento pelos jogadores
  • Ser restaurado quando o chunk voltar a carregar
  • Modificar os blocos da arena ao aparecer e ao morrer
  • Largar loot único quando derrotado
Verifica o limite de vida antes de aumentar o nível

No nível 30 com healthMultiplier: 10.0, o exemplo tem 1400 de vida com o limite predefinido. Atinge 2048 no nível 33. A vida base é limitada antes do multiplicador e o resultado é limitado novamente. Por isso, reduzir o multiplicador não recupera o crescimento por nível quando a vida base já atingiu o limite. Consulta healthMultiplier.