Pular para o conteúdo principal

Criar Bosses

webapp_banner.jpg

Criar bosses personalizados

Antes de começares

Onde ficam os ficheiros dos bosses?

Os ficheiros dos bosses vão para a pasta de configuração ~/plugins/EliteMobs/custombosses.

É possível criar subpastas, como ~/plugins/EliteMobs/custombosses/mybosses. Isto é recomendado para manter tudo organizado.

Um ficheiro define um boss, embora seja possível spawnar o mesmo boss várias vezes e até definir vários locais de spawn para o mesmo ficheiro de boss.

Podes usar a webapp para criar bosses personalizados (e muito mais) de forma rápida e simples.

A configuração mais pequena possível

O ficheiro de configuração mais pequeno possível para um Custom Boss é:

Repara que isto é apenas um ficheiro vazio. Mesmo assim, vai spawnar um custom boss zombie com um nome personalizado, porque esses são os valores predefinidos. Tudo o que está nesta página é opcional!

Boss de exemplo

Vamos ver um exemplo do aspeto de um ficheiro de boss.

Exemplo
isEnabled: true
entityType: ZOMBIE
name: '&eTest boss'
level: dynamic
timeout: 10
isPersistent: false
healthMultiplier: 2.0
damageMultiplier: 0.5
helmet: GOLDEN_HELMET
chestplate: IRON_CHESTPLATE
leggings: LEATHER_LEGGINGS
boots: CHAINMAIL_BOOTS
mainHand: GOLDEN_AXE
offHand: SHIELD
isBaby: false
powers:
- invulnerability_knockback.lua
spawnMessage: A test boss has been spawned!
deathMessage: A test boss has been slain by $players!
escapeMessage: A test boss entity has escaped!
locationMessage: 'Test entity: $location'
uniqueLootList:
- magmaguys_toothpick.yml:1
dropsEliteMobsLoot: true
dropsVanillaLoot: true
trails:
- BARRIER
onDamageMessages:
- "I've hit you!"
onDamagedMessages:
- "I've been hit!"

Definições básicas

isEnabled

Define se o boss está ativado.

ChaveValoresPredefinição
isEnabledtrue / falsetrue
Exemplo
isEnabled: true

entityType

Define o tipo de entidade do boss.

ChaveValoresPredefinição
entityTypeEscolhe daqui.
O valor também tem de existir na pasta ~plugins/EliteMobs/mobproperties.
ZOMBIE
Magma Cubes e Slimes

Como estes tipos de entidade não atacam os jogadores diretamente, mas causam dano por contacto, podem provocar picos grandes de dano em pouco tempo. Por causa disso, normalmente não recomendamos usá-los como Elite mobs com frequência. Ainda assim, se quiseres usá-los, sugerimos definir o damageMultiplier para cerca de 0.1.

Também recomendamos usar o seguinte EliteScript para impedir que Magma Cubes ou Slimes deixem os jogadores presos em stun-lock:

eliteScript:
NerfDamage:
Events:
- ZoneEnterEvent
- ZoneLeaveEvent
Zone:
shape: SPHERE
radius: 1
Target:
targetType: SELF
Actions:
- action: SET_MOB_AI
Target:
targetType: SELF
bValue: false
duration: 10
Exemplo
entityType: ZOMBIE

name

Define o nome do boss.

ChaveValoresPredefinição
nameString, aceita color codes e os placeholders listados abaixo"Default Name"
Exemplo
name: "$normalLevel &cCool boss!"

create_boss_name_pic_no_level.jpg

Se quiseres incluir o nível do boss no campo do nome, basta usar um dos placeholders seguintes.

PlaceholderDescriçãoExemploResultado (para um boss de nível 10)
$levelÉ substituído pelo nível"$level Cool boss"10 Cool boss
$normalLevelÉ substituído pelo nível, feito para mobs normais"$normalLevel Cool boss"[10] Cool boss
$minibossLevelÉ substituído pelo nível, feito para minibosses"$minibossLevel Cool boss"〖10〗 Cool boss
$bossLevelÉ substituído pelo nível, feito para bosses"$bossLevel Cool boss"『10』 Cool boss
$reinforcementLevelÉ substituído pelo nível, feito para reforços"$reinforcementLevel Cool boss"〔10〕 Cool Boss
$eventBossLevelÉ substituído pelo nível, feito para bosses de evento"$eventBossLevel Cool boss"「10」 Cool boss
Exemplo
name: "$normalLevel &cCool boss!"

create_boss_name_pic.jpg


level

Define o nível do boss.

ChaveValoresPredefinição
levelNúmeros Inteiros positivos ou dynamicdynamic

O dynamic é usado para eventos e ajusta-se ao nível dos jogadores próximos no momento do spawn do boss. Não é recomendado para bosses regionais.

Exemplo
level: 1

scale

Define a escala (tamanho) do boss.

ChaveValoresPredefinição
scaleMultiplicador1.0

Na escala, 1.0 representa o tamanho predefinido. Para tornar a entidade maior, aumenta o valor (ex.: 1.2). Para a tornar mais pequena, diminui o valor (ex.: 0.8).

Exemplo
scale: 1.2

bossType

Define o tipo do boss. Isto é usado para mostrar barras de vida do boss e outras funcionalidades.

ChaveValoresPredefinição
bossTypeNORMAL, MINIBOSS, BOSS, REINFORCEMENT, EVENTNORMAL

MINIBOSS, BOSS e EVENT fazem com que o plugin mostre barras de vida quando os jogadores estão a lutar contra esses tipos de boss.

Nota: o REINFORCEMENT é normalmente atribuído automaticamente aos mobs invocados como reforço, mas pode ser definido manualmente se for necessário.

Exemplo
bossType: MINIBOSS

silent

Define se os sons do boss devem ser silenciados.

ChaveValoresPredefinição
silentBooleanofalse

Quando definido como true, esta opção silencia todos os sons predefinidos de mob do Minecraft, fazendo com que o boss não produza som nenhum.

Exemplo
silent: true

healthMultiplier

Define a vida do boss. O valor desta definição também determina o tipo de barra de vida mostrada durante o combate. Valores mais altos mostram uma barra de mini-boss ou de boss completo.

ChaveValoresPredefinição
healthMultiplierMultiplicador1.0
A vida do boss tem um limite rígido, o dano do boss não

A vida final é baseHealth × healthMultiplier, e esse produto é limitado ao settings.attribute.maxHealth.max do servidor, definido no spigot.yml. O EliteMobs eleva esse valor para 2048 no arranque se ele for menor, mas nunca acima disso, por isso 2048 é o teto efetivo num servidor predefinido.

A vida base segue 2.1875 × 2^(level / 5), ou seja, duplica a cada 5 níveis. Combinado com o limite, cada healthMultiplier tem um nível a partir do qual o boss deixa completamente de ganhar vida enquanto o seu dano continua a escalar:

healthMultiplierA vida deixa de crescer ao nível
1.050
2.045
5.038
7.036
10.033
20.028
40.023

Acima desse nível o boss fica mais frágil em relação ao seu próprio dano quanto mais o empurrares: o jogador mata-o no mesmo número de golpes, mas morre mais depressa. Quando o limite é acionado, o EliteMobs regista um aviso a nomear o boss, o seu nível e o multiplicador — vigia a consola ao afinar bosses de nível alto.

Se precisares genuinamente de mais de 2048 HP, aumenta tu mesmo o settings.attribute.maxHealth.max no spigot.yml; o limite lê o valor ativo do servidor, não uma constante fixa.

Exemplo
healthMultiplier: 1.5

damageMultiplier

Define o multiplicador de dano do boss.

ChaveValoresPredefinição
damageMultiplierMultiplicador1.0
Exemplo
damageMultiplier: 1.5

isBaby

Define se o boss usa a variante bebé do mob. Só pode ser aplicado a mobs que tenham variantes bebé. Se quiseres disfarçar o boss e ao mesmo tempo mantê-lo bebé enquanto está disfarçado (garante que a entidade do disfarce também suporta a variante bebé), podes usar esta definição:

disguise: HOGLIN:baby
ChaveValoresPredefinição
isBabytrue / falsefalse
Exemplo
isBaby: true

helmet/chestplate/leggings/boots/mainHand/offHand

Define a armadura do boss. Nem todos os modelos do Minecraft conseguem mostrar armadura. A armadura do boss é puramente cosmética e não afeta a jogabilidade.

ChaveValoresPredefinição
helmetMaterial, UUIDnenhum
chestplateMaterialnenhum
leggingsMaterialnenhum
bootsMaterialnenhum
mainHandMaterialnenhum
offHandMaterialnenhum

Nota: este campo também permite definir modelos personalizados para itens. Para definir o ID do modelo personalizado, acrescenta o ID depois do tipo de material com este formato: ITEM_MATERIAL:ID. Exemplo: DIAMOND_SWORD:1 faz o boss usar uma espada de diamante com o modelo personalizado #1 do teu texture pack.

Nota 2: este campo também permite definir cores personalizadas de cabedal com o formato ITEM_MATERIAL:CODE, em que o código é a representação hexadecimal da cor. Exemplo: LEATHER_LEGGINGS:ffa500 cria calças laranja. Podes usar códigos hexadecimais, basta remover o # do código. Podes obter códigos hexadecimais aqui.

Nota 3: o campo helmet também permite definir cabeças de jogador como capacete do mob. Basta obteres o UUID da cabeça de jogador que queres usar e escrevê-lo no campo helmet. O jogador tem de estar online para isto funcionar, caso contrário a cabeça fica com o aspeto genérico do MineCraft. Podes obter UUIDs de jogadores aqui.

Exemplo
helmet: 198c4123-cafc-45df-ba79-02a421eb8ce7
chestplate: DIAMOND_CHESTPLATE:1
leggings: LEATHER_LEGGINGS:ffa500
boots: NETHERITE_BOOTS
mainHand: DIAMOND_SWORD
offHand: SHIELD

create_boss_armor.jpg


powers

Define os poderes que o boss tem.

ChaveValoresPredefinição
powersConsulta a lista abaixonenhum
Exemplo
powers:
- hyper_loot.lua
- attack_arrow.lua
- mycoolpower.lua

Nota: podes consultar esta página se quiseres ver uma lista de poderes pré-feitos que podes usar.

Nota: os poderes podem ser ficheiros .yml (EliteScript) ou ficheiros .lua (scripts Lua). Ambos os tipos são suportados e podem ser misturados livremente na lista powers. Quase todos os poderes pré-feitos são agora .lua.

Os nomes antigos de poderes .yml continuam a funcionar

Se existir um poder .lua com o mesmo nome base, o EliteMobs resolve automaticamente um pedido .yml para esse ficheiro. As configurações de boss escritas antes da migração para Lua continuam a funcionar sem alterações — o attack_arrow.yml carrega de forma transparente o attack_arrow.lua. As novas configurações devem indicar diretamente o ficheiro .lua.


Configuração intermédia - Spawnar reforços

Os reforços também entram na categoria dos poderes, usando as seguintes definições:

Nota: os reforços são configurados dentro da secção powers do ficheiro de configuração do boss, e não numa secção separada.

Definições dos reforços
ChaveDescriçãoValoresPredefinição
summonTypeO que desencadeia o spawn do reforço. Obrigatório.Consulta a lista abaixonenhum
filenameNome do ficheiro do boss a spawnar como reforço. Obrigatório.Stringnenhum
chanceProbabilidade de o reforço spawnar. Opcional.Double1.0
amountDefine a quantidade de reforços a spawnar. Opcional.Inteiro1
inheritAggroFaz o reforço herdar o aggro do boss. Opcional.true / falsefalse
spawnNearbyFaz os reforços spawnarem numa área de 30x30 blocos (±15 blocos em X e Z) à volta do ponto de spawn. Opcional.true / falsefalse
inheritLevelFaz o reforço herdar o nível do boss. Opcionaltrue / falsefalse
customSpawnFaz o reforço spawnar usando o sistema de spawns personalizados. Só é usado com summonType: GLOBALNome do ficheiro de Custom Spawnnenhum
locationDeslocamento de spawn relativo. Opcional.x,y,z — é sempre um deslocamento relativo ao boss. Nos bosses regionais, o deslocamento é relativo ao local de spawn.nenhum
lightningRodDefinição especial para summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL. Faz com que os end crystals gerem relâmpagos à sua volta. Opcional.true / falsefalse
difficultyIDRestringe a entrada a dificuldades de masmorra instanciada específicas. Opcional.String ou lista de stringsnenhum

Os tipos de invocação definem as condições em que os reforços spawnam. Segue-se uma lista dos tipos de invocação válidos:

Tipos de invocação
ValorDescrição
ONCESó spawna os reforços uma vez, na primeira vez que o boss recebe dano.
ON_HITSpawna os reforços quando o boss é atingido.
ON_COMBAT_ENTERSpawna os reforços quando o boss entra em combate.
ON_DEATHSpawna reforços quando o boss morre.
GLOBALSpawna repetidamente reforços perto de cada jogador que esteja no mesmo mundo do boss, a cada 10 segundos, com um limite de 30 reforços globais vivos por jogador nesse mundo. Exige que a chave customSpawn tenha um custom spawn válido definido.
ON_COMBAT_ENTER_PLACE_CRYSTALColoca end crystals como reforços ao entrar em combate; destina-se apenas a lutas personalizadas contra dragões.

Nota que também é possível spawnar reforços através de Elite Scripts, pelo que existem formas ainda mais personalizáveis de spawnar reforços.

Exemplo
powers:
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
chance: 0.5
amount: 5
inheritAggro: true
spawnNearby: true
inheritLevel: true
location: 10,20,30
lightningRod: false

Configuração avançada - Criar os teus próprios poderes

É possível criares os teus próprios poderes, quer no próprio ficheiro do boss, quer como um novo ficheiro de configuração na pasta dos poderes. Podes saber mais sobre isso aqui.

Nota: também podes definir comportamentos do boss diretamente no ficheiro de configuração do boss através do campo eliteScript. Para a documentação completa sobre a utilização de Elite Scripts, consulta o guia de poderes.

Como alternativa ao EliteScript, também podes escrever poderes com scripts Lua. Os poderes Lua são colocados na pasta dos poderes com a extensão .lua e referenciados pelo nome do ficheiro na lista powers. Consulta o guia Primeiros Passos em Lua para mais informação.

Limitar poderes com base na dificuldade da masmorra instanciada

As masmorras instanciadas podem ter definições de dificuldade, e é possível fazer com que um poder específico só esteja ativo em determinadas dificuldades.

Opções de limitação de poderes
ChaveDescriçãoValoresPredefinição
filenameNome do ficheiro do poder.Stringnenhum
difficultyIDNome da dificuldade, correspondente ao nome da dificuldade no pacote da masmorra.Stringnenhum

Isto só se aplica a masmorras instanciadas.

Exemplo
powers:
- filename: movement_speed.lua
difficultyID:
- myDifficultyName1
- myDifficultyName2
- myDifficultyName3

spawnMessage

Define a mensagem a enviar quando o boss spawna. Requer a configuração do announcementPriority.

ChaveValoresPredefinição
spawnMessageStrings e color codesnenhum
Exemplo
announcementPriority: 3
spawnMessage: I rise once more!

create_boss_spawn_message.jpg


deathMessages

Define a lista de mensagens a enviar quando o boss morre. Requer a configuração do announcementPriority.

ChaveValoresPredefinição
deathMessagesStrings, color codes e os placeholders abaixonenhum
Exemplo
announcementPriority: 3
deathMessages:
- '&e&l---------------------------------------------'
- '&4The Test Boss has been killed!'
- '&c&l 1st Damager: $damager1name &cwith $damager1damage damage!'
- '&6&l 2nd Damager: $damager2name &6with $damager2damage damage!'
- '&e&l 3rd Damager: $damager3name &ewith $damager3damage damage!'
- '&4Slayers: $players'
- '&e&l---------------------------------------------'

create_boss_death_message.jpg

As mensagens de morte usam os seguintes placeholders:

Placeholders
ValorDescrição
$damager1nameO nome de quem causou mais dano
$damager2nameO nome de quem causou o segundo maior dano
$damager3nameO nome de quem causou o terceiro maior dano
$damager1damageA quantidade de dano de quem causou mais dano
$damager2damageA quantidade de dano de quem causou o segundo maior dano
$damager3damageA quantidade de dano de quem causou o terceiro maior dano
$playersMostra uma lista de todos os que causaram dano

deathMessage

Define uma única mensagem a enviar quando o boss morre. É uma alternativa a deathMessages para quando só precisas de uma mensagem de morte em vez de uma lista. Requer a configuração do announcementPriority.

ChaveValoresPredefinição
deathMessageString, color codes e os mesmos placeholders de deathMessagesnenhum
Exemplo
announcementPriority: 3
deathMessage: '&4The Test Boss has been killed by $players!'

onKillMessage

Define a mensagem a enviar quando o boss mata um jogador. Requer a configuração do announcementPriority.

ChaveValoresPredefinição
onKillMessageStrings e color codesnenhum

Placeholders:

ValorDescrição
$playerO nome de exibição do jogador que foi morto
$playerNameO nome de utilizador do jogador que foi morto
Exemplo
announcementPriority: 3
onKillMessage: I win, you lose!

create_boss_spawn_message.jpg


slimeSize

Define o tamanho do boss slime, mas só funciona com Slimes e Magmacubes.

ChaveValoresPredefinição
slimeSizeInteiro4
Exemplo
slimeSize: 5

neutral

Define se o boss vai spawnar como neutro ou não. Isto só se aplica a tipos de entidade que podem ser neutros, como Lobos ou Iron Golems.

ChaveValoresPredefinição
neutralBooleanofalse
Exemplo
neutral: true

Definições avançadas

timeout

Define o tempo, em minutos, até o Custom Boss desaparecer.

ChaveValoresPredefinição
timeoutTempo (em minutos) Inteiro0
Exemplo
timeout: 20

Faz o boss escapar ao fim de 20 minutos.


isPersistent

Define se o boss consegue sobreviver ao descarregamento de um chunk. Só é recomendado para bosses de evento, devido ao possível impacto no desempenho causado pelo carregamento persistente de chunks e pelo rastreio de entidades entre reinícios do servidor.

ChaveValoresPredefinição
isPersistenttrue / falsefalse
Exemplo

Exemplo:

isPersistent: true

damageModifiers

Define as armas contra as quais os bosses podem ser fortes ou fracos.

ChaveValoresPredefinição
damageModifiersMaterialnenhum
Exemplo
damageModifiers:
- material:DIAMOND_SWORD,multiplier:0.8
- material:TRIDENT,multiplier:2.0

Neste exemplo, os bosses só recebem 80% do dano de espadas de diamante (ou seja, menos 20%), mas recebem 200% do dano de tridentes (ou seja, 2x mais).


normalizedCombat

Modifica o dano e a vida máxima do boss para corresponderem aos valores da entidade normalizada em ~/plugins/EliteMobs/mobproperties. Esta é a predefinição para bosses regionais, para garantir uma curva de dificuldade suave.

ChaveValoresPredefinição
normalizedCombattrue / falsefalse
Exemplo

Exemplo:

normalizedCombat: true

scaledCombat

Define se o boss usa o sistema de combate escalado. Quando ativado, o boss simula ter o mesmo nível do jogador que o está a enfrentar -- o dano, a escala de vida e o loot adaptam-se todos ao nível de progressão do jogador em vez do nível guardado do boss. Isto faz com que o confronto pareça igualmente justo para todos os jogadores, independentemente da sua progressão.

O combate escalado foi pensado sobretudo para bosses de evento no overworld e para custom bosses que devem ser acessíveis a jogadores de qualquer nível. Para conteúdo de masmorra com uma dificuldade fixa pretendida, usa antes o normalizedCombat.

Quando scaledCombat: true está definido, tem prioridade mesmo que o boss viesse a usar combate normalizado. Os elite mobs que spawnam naturalmente usam combate escalado por predefinição (controlado pela definição useScaledCombatForNaturalElites no MobCombatSettings.yml).

Consulta a página Sistema de Dano para todos os detalhes sobre o funcionamento do combate escalado.

ChaveValoresPredefinição
scaledCombattrue / falsefalse
Exemplo
scaledCombat: true

escapeMessage

Define a mensagem que é transmitida aos jogadores quando o boss escapa através do mecanismo de timeout. Requer que o announcementPriority esteja configurado.

ChaveValoresPredefinição
escapeMessageStringnenhum
Exemplo
announcementPriority: 3
timeout: 60
escapeMessage: "Sayonara!"

create_boss_escape_message.jpg


locationMessage

Define a mensagem mostrada na barra do boss. É usada para acompanhar tanto a vida do Custom Boss como a sua localização no servidor. Requer que o announcementPriority esteja configurado.

ChaveValoresPredefinição
locationMessageString, Color codes e os placeholders listados abaixonenhum

Placeholders:

ValorDescrição
$distanceÉ substituído pela distância a que o jogador está do Custom Boss. Esta é a opção preferível.
$locationÉ substituído pelas coordenadas x y z da localização do Custom Boss
Exemplo
announcementPriority: 3
locationMessage: "&4Cool boss: At $location only $distance blocks away!"

create_boss_location_message.jpg

Isto mostraria algo como Cool boss: At 414,55,347 only 10 blocks away!


uniqueLootList

Define os Itens Personalizados que o boss larga.

ChaveValoresPredefinição
uniqueLootListListnenhum

As entradas de loot no Custom Loot seguem o formato das Loot Tables. Informação sobre isso aqui! Repara que alguns ficheiros mais antigos podem estar a usar loot tables desatualizadas, com um aspeto diferente do exemplo.

Exemplo
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.02
- minecraft:type=DIAMOND:amount=1:chance=0.9
- magmaguys_toothpick.yml:0.5:elitemobs.*

dropsEliteMobsLoot

Define se o boss larga loot do EliteMobs, excluindo os itens da uniqueLootList. Inclui moedas.

ChaveValoresPredefinição
dropsEliteMobsLoottrue / falsetrue

Recomenda-se definir como false para mobs de reforço.

Exemplo
dropsEliteMobsLoot: true

dropsVanillaLoot

Define se o Custom Boss larga o loot vanilla normalmente associado ao seu tipo de mob vanilla.

ChaveValoresPredefinição
dropsVanillaLoottrue / falsetrue
Exemplo
dropsVanillaLoot: true

dropsRandomLoot

Define se o Custom Boss larga loot gerado proceduralmente pelo EliteMobs. Não inclui elite coins.

ChaveValoresPredefinição
dropsRandomLoottrue / falsetrue
Exemplo
dropsRandomLoot: true

dropsSkillXP

Define se o boss larga XP de perícia ao ser morto. A XP de perícia é usada pelo sistema de bónus de perícia de armas.

ChaveValoresPredefinição
dropsSkillXPtrue / falsetrue

Recomenda-se definir como false para mobs de reforço ou bosses que não devam contribuir para a progressão de perícias.

Exemplo
dropsSkillXP: false

trails

Define o rasto que o boss deixa para trás quando se move.

ChaveValoresPredefinição
trailsPartículas ou materiais de itemnenhum

Só as partículas que não precisam de dados adicionais funcionam como rastos de boss (ou seja, todas as "partículas simples" da lista de partículas válidas). Partículas como BLOCK, DUST, ITEM, etc., são ignoradas em silêncio. Nomes de materiais criam antes um rasto animado de itens.

Exemplo
trails:
- CLOUD

onDamageMessages

Define a mensagem que o Boss Mob mostra quando atinge um jogador. É uma lista, e a mensagem usada é escolhida aleatoriamente dessa lista.

ChaveValoresPredefinição
onDamageMessagesListnenhum
Exemplo
onDamageMessages:
- "I hit you!"
- "Haha I hit you!"

create_boss_damage_message.jpg


onDamagedMessages

Define a mensagem que o Boss Mob mostra quando recebe dano de um jogador. É uma lista, e a mensagem usada é escolhida aleatoriamente dessa lista.

ChaveValoresPredefinição
onDamagedMessagesListnenhum
Exemplo
onDamagedMessages:
- "You hit me!"
- "I've been hit!"

create_boss_damaged_message.jpg


mountedEntity

Define a entidade que o boss vai montar.

ChaveValoresPredefinição
mountedEntityNome do ficheiro do boss a montar ou tipo de entidadenenhum

Não tentes fazer o boss montar-se a si próprio.

Exemplo
mountedEntity: wild_wolf.yml

create_boss_mounted.jpg

Nota: os bosses regionais partilham a sua trela com a entidade que estão a montar, o que significa que ambos são arrastados de volta ao local de spawn se ultrapassarem a distância permitida pela trela.


announcementPriority

Define o nível de prioridade dos anúncios. Prioridades mais baixas significam que não são feitos anúncios; prioridades mais altas permitem anunciar não só no chat, mas também no Discord, se estiver configurado.

ChaveValoresPredefinição
announcementPriorityInteiro0

Nota: se a chave estiver em falta num ficheiro de boss que tenha texto de anúncio (locationMessage, spawnMessage, deathMessage, escapeMessage ou uma lista deathMessages não vazia), o EliteMobs escreve announcementPriority: 0 no ficheiro ao carregá-lo, para que a definição fique visível e fácil de aumentar. O boss continua a comportar-se como prioridade 0 até a alterares.

Aqui está uma lista do que as prioridades fazem:

ValorDescrição
0Esta é a predefinição. O boss fica completamente silencioso, sem mensagens de anúncio.
1Os bosses podem enviar mensagens de chat, mensagens ao spawnar, ao morrer e ao escapar. O rastreio do boss através do menu /em também é ativado aqui, se houver um locationMessage definido.
2Idêntico a 1 para Custom Bosses — não existe um caminho de código separado para a prioridade 2. (Os eventos personalizados tratam mesmo o 2 de forma diferente; consulta Sistema de Prioridade de Anúncios.)
3Além do que está em 1, as mensagens de broadcast são espelhadas no Discord, se estiver configurado. Informação sobre a configuração do Discord aqui.

Aqui está um exemplo de um boss que é rastreável e que consegue enviar mensagens de spawn/morte/fuga no chat e no Discord:

Exemplo
announcementPriority: 3

Nota: terás de configurar o spawnMessage, o deathMessage/deathMessages e o escapeMessage para os anúncios de chat e Discord, e o locationMessage para a funcionalidade de rastreio, se quiseres usar o nível de Prioridade de Anúncio correspondente.

Nota: quando existe algum conteúdo de anúncio (spawnMessage, deathMessage, deathMessages, escapeMessage, etc.), o announcementPriority assume automaticamente o valor 1 se não for definido explicitamente.


followDistance

Define a distância a que os bosses ganham aggro e entram em combate. É medida a partir do próprio mob.

ChaveValoresPredefinição
followDistanceInteiro0

Nota 1: os bosses regionais têm metade do followDistance quando estão fora de combate. Isto evita que ganhem aggro de demasiado longe, o que pode causar problemas de combate irritantes devido às restrições da trela.

Nota 2: quanto maior for o followDistance, mais exigente para o CPU do servidor o boss se torna. Usa com cuidado e responsabilidade!

Exemplo
followDistance: 30

Define um alcance de 30 blocos: se um jogador entrar nessa distância perto do boss, ele começa a persegui-lo/atacá-lo.


onDeathCommands

Define a lista de comandos a executar quando o custom boss morre.

ChaveValoresPredefinição
onDeathCommandsListnenhum

A lista suporta os seguintes placeholders:

ValorDescrição
$levelPlaceholder para o nível do boss.
$namePlaceholder para o nome do boss.
$chance=x$Faz com que um comando tenha uma probabilidade de ser executado.
$playersFaz o comando correr uma vez por cada jogador da lista de quem causou dano, substituindo de cada vez pelo nome de utilizador de um jogador diferente dessa lista.
$locationXCoordenada X do boss no momento da morte.
$locationYCoordenada Y do boss no momento da morte.
$locationZCoordenada Z do boss no momento da morte.
$damager1nameNome de utilizador de quem causou mais dano
$damager2nameNome de utilizador de quem causou o segundo maior dano
$damager3nameNome de utilizador de quem causou o terceiro maior dano

Vê o exemplo abaixo para perceberes melhor como estes funcionam.

Exemplo
onDeathCommands:
- "say $players has killed $name! That was level $level!"
- "$chance=0.5$ say What a kill!"

create_boss_mounted.jpg

Se o Player1, o Player2 e o Player3 tiverem todos causado dano ao boss antes de o matarem, este é o resultado que o comando vai produzir na consola:

say Player1 has killed CustomBossName! That was level X!
say Player2 has killed CustomBossName! That was level X!
say Player3 has killed CustomBossName! That was level X!

Além disso, há 50% de probabilidade de também ser produzido o seguinte:

say What a kill!

onSpawnCommands

Define a lista de comandos que vão correr quando o boss spawna.

ChaveValoresPredefinição
onSpawnCommandsListnenhum

Isto usa os mesmos placeholders do onDeathCommands! Os placeholders de dano não se aplicam, porque nessa altura ainda não houve ninguém a causar dano.

Exemplo
onSpawnCommands:
- say Boss has spawned!

create_boss_mounted.jpg


onCombatEnterCommands

Define a lista de comandos que vão correr quando o boss entra em combate.

ChaveValoresPredefinição
onCombatEnterCommandsListnenhum

Isto usa os mesmos placeholders do onDeathCommands! Os placeholders de dano não se aplicam, porque nessa altura ainda não houve ninguém a causar dano.

Exemplo
onCombatEnterCommands:
- say Boss has entered combat!

create_boss_mounted.jpg


onCombatLeaveCommands

Define a lista de comandos a executar quando o boss sai de combate.

ChaveValoresPredefinição
onCombatLeaveCommandsListnenhum

Isto usa os mesmos placeholders do onDeathCommands!

Exemplo
onCombatLeaveCommands:
- say Boss has left combat!

create_boss_mounted.jpg


disguise

Define o disfarce do LibsDisguises, se esse plugin estiver ativado. Mais informação aqui.

ChaveValoresPredefinição
disguiseStringnenhum
customDisguiseDataStringnenhum
Exemplo de disfarce
disguise: CHICKEN

create_boss_mounted.jpg

Exemplo de disfarce personalizado
disguise: custom:the_beast_sanctuary_beast
customDisguiseData: player the_beast_sanctuary_beast setskin {"id":"44e6d42b-bd8d-4e48-873b-fae7afed36e4","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTY2NjcwNjYwODA1MCwKICAicHJvZmlsZUlkIiA6ICI3MmY5MTdjNWQyNDU0OTk0YjlmYzQ1YjVhM2YyMjIzMCIsCiAgInByb2ZpbGVOYW1lIiA6ICJUaGF0X0d1eV9Jc19NZSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82YmYyMTY4NmM1MGQ1ODhmZmExMDZhZDdjNmViZTk1ZWZiMjE2NDU5ODRjZDFjZWYwODkzNDc4NzMzNmI2YTI3IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0=","signature":"jSsQvpUeWVtyqjtnydPadormkrZLVihetiX4dFQb3+BF/1x6wOgsNKRnnwj6J1mfu2im79LYEJbL+fQ9p1SJIW1uZ6hV7vPSAGUopyXGHNibNXorfV/dGjM77S0t86Jls50XWgJAnLn5RdhQcHahDAHHZ8to6K0HW5gvKKSalR5X/myaiV0E5ujJ+LUFWIiuDmtsmyxTX1zsohyYrVMo/4sD0DpBN+as95wO476gLb5fDTDV569QwExlDOt60W8qSzPw6ncYsOKJIiRE3EddspUm3/NrfDiKApUh8UbzVtwu1XlVAxWNgYN3PkqhWKuE4kvORQuoSJzOgSHkiqdXsQOED2HXfOKdfsnpZUwjepIU5A+/mu0gc3mPQPToKSss2bC1nXn//0bOZZSuQRgTS6PkKDHIQ1nClSZQZlJIsiLmaaN2k1tIHTIlDquKN6G1Ta9c3t6G5kugjqRo78ebbt7l3e0Z3BcdOkuO2WbvBjIg5Uiqyf+cYDZedJ+OEOqL/U6VVlsmbw0rd5deHrbnPn9cRzmWGjrXnxIlAszl+0Uqabj/BrkWcbBCwZJEPaV1hHpC4nJX1m5xvKZHB2Bw0AYWaQ3f3tRBbCA/xqwCS0Px1QohzV0nvtiMbjB38ziT1M5DgLtAVLcHPio7THZMxXAi4IjEIMac9ODbh5OxthA="}],"legacy":false}

create_boss_mounted.jpg

Define um disfarce personalizado a partir do skindex. Consulta esta página para saberes como formatar corretamente estes dados.


customModel

Define o modelo personalizado a usar, se tiveres um modelo personalizado e os plugins FreeMinecraftModels ou ModelEngine. Mais informação sobre como criar e usar modelos personalizados aqui.

ChaveValoresPredefinição
customModelStringnenhum
Exemplo
customModel: your_model

customModelMountPointID

Define o ID do ponto de montagem para modelos personalizados quando o boss está a montar ou a ser montado por outra entidade.

ChaveValoresPredefinição
customModelMountPointIDStringnenhum
Exemplo
customModelMountPointID: your_mount_point_id


frozen

Define se o boss se pode mover. Os bosses congelados continuam a poder atacar.
Nota: isto pode não funcionar em algumas entidades.

ChaveValoresPredefinição
frozentrue / falsefalse
Exemplo
frozen: true

ai

Define se o boss tem a IA ativada. Quando definido como false, o boss não se move nem ataca por iniciativa própria. Isto é útil para bosses controlados inteiramente através de Elite Scripts.

ChaveValoresPredefinição
aitrue / falsetrue
Exemplo
ai: false

alwaysShowName

Define se o boss mostra sempre a etiqueta de nome por cima da cabeça. Por predefinição, as etiquetas de nome dos bosses só aparecem durante o combate. Esta definição substitui esse comportamento para este boss em concreto, tornando a etiqueta de nome sempre visível.

ChaveValoresPredefinição
alwaysShowNametrue / falsefalse
Exemplo
alwaysShowName: true

reinforcement

Define se o boss é um reforço. Os bosses de reforço não são inicializados como bosses regionais durante o arranque e destinam-se apenas a ser spawnados como reforços por outros bosses.

ChaveValoresPredefinição
reinforcementtrue / falsefalse
Exemplo
reinforcement: true

song

Define a música que um boss vai tocar, começando quando spawna. Requer que o ficheiro .ogg da música esteja no resource pack.

ChaveValoresPredefinição
songStringnenhum

Nota: a definição song requer que o followDistance esteja definido, uma vez que é o followDistance que determina o alcance a partir do qual a música começa a tocar. Vê o exemplo para saberes como definir o length (em milissegundos) da song.

Exemplo

Há duas formas de configurar músicas. Esta é a primeira:

song: name=elitemobs:ice_queen.idle length=76370

Isto vai tocar a música ice_queen.idle durante 76370 milissegundos e depois repeti-la em loop. Nota que a localização da música é determinada pelo resource pack.

Esta é a segunda forma de configurar músicas:

song: name=elitemobs:ice_queen.end_transition length=14328->name=elitemobs:ice_queen.end_loop length=28657

Isto vai tocar a música ice_queen.end_transition durante 14328 milissegundos, depois passar para ice_queen.end_loop durante 28657 milissegundos e repetir o end_loop em loop.

Isto permite que os bosses tenham uma música de "intro" ou de "transição" e depois uma faixa principal em loop.


cullReinforcements

Define se os reforços do boss são removidos quando o boss morre.

ChaveValoresPredefinição
cullReinforcementstrue / falsetrue
Exemplo
cullReinforcements: true

movementSpeedAttribute

Define a velocidade de movimento do boss.
Nota: qualquer valor acima de 0.36 pode ser demasiado rápido.

ChaveValoresPredefinição
movementSpeedAttributeDoublenenhum
Exemplo
movementSpeedAttribute: 0.3

Fases do boss

Os bosses podem ter fases que mudam quando o boss atinge uma determinada percentagem de vida. Quando isso acontece, o boss passa a usar um ficheiro de configuração diferente, o que significa que tudo no boss pode mudar, incluindo coisas como o tipo de entidade.
Para saberes mais sobre fases de boss, clica aqui.

ChaveDescriçãoValoresPredefinição
phasesDefine as fases que o boss vai ter. ObrigatórioListnenhum
phaseSpawnLocationDefine onde a fase do boss spawna. OpcionalStringnenhum
Exemplo

Para este exemplo, vamos mostrar três ficheiros de configuração diferentes.

Primeiro ficheiro de configuração do boss: phase_1_boss.yml

name: "Phase 1"
entityType: ZOMBIE
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30

Segundo ficheiro de configuração do boss: phase_2_boss.yml

name: "Phase 2"
entityType: SKELETON

Terceiro ficheiro de configuração do boss: phase_3_boss.yml

name: "Phase 3"
phaseSpawnLocation: same_as_boss,10,64,100,0,0
entityType: RAVAGER

Este boss mudaria para o ficheiro de configuração phase_2_boss.yml aos 60% de vida, e para o ficheiro de configuração phase_3_boss.yml aos 30% de vida, no mesmo mundo da fase 2 e nas coordenadas x=10, y=64 e z=100. O tipo de entidade e o nome do boss também mudariam.

O formato de uma entrada é filename:healthPercentage.

O phaseSpawnLocation é opcional; se não estiver definido, o boss muda de fase no sítio onde está.

Há coisas importantes a saber quando se desenha um boss com fases:

  • O ficheiro de configuração da primeira fase define todas as fases do boss.
  • A ameaça / dano contabilizado é mantido entre fases para os jogadores.
  • A mudança de fase baseia-se na percentagem de vida perdida, que é preservada ao mudar para uma fase diferente. Isto significa que aumentar ou diminuir o healthMultiplier entre fases não cura nem causa dano ao boss: ele continua a mudar com a mesma percentagem, mas terá mais ou menos vida nessa fase.
  • Os bosses com fases voltam à fase 1 se saírem de combate.
  • Os bosses com fases que também são bosses regionais partilham o mesmo raio de trela e o mesmo mecanismo de timeout em todas as fases, e voltam a spawnar como o boss da fase 1 quando o temporizador termina.
  • O ficheiro de configuração da última fase define o loot do boss.
  • As fases não podem ser saltadas — o dano em excesso continua a fazer o boss mudar de fase na percentagem definida.
  • Os bosses com fases que tenham montadas deixam de estar montados ao mudarem de fase.

Bosses regionais

Os bosses regionais são um tipo específico de Custom Bosses que spawnam num local configurado e conseguem voltar a spawnar nesse local após um atraso. Além disso, podem ter trelas que garantem que ficam numa zona específica, entre outras funcionalidades.

São usados em todo o conteúdo de masmorras. Para saberes mais sobre bosses regionais, clica aqui.

ChaveDescriçãoValoresPredefinição
isRegionalBossDefine se o boss é regional. Deve ser true se quiseres um boss regional.true / falsefalse
spawnLocationsDefine os locais de spawn do boss.Adiciona-os através do comando /em place boss [filename.yml]!nenhum
spawnCooldownDefine o tempo de espera para o boss voltar a spawnar, em minutos.Inteiro0
leashRadiusDefine a distância que o boss pode percorrer a partir do ponto de spawn antes de ser puxado de volta. Medida a partir do spawn.Doublenenhum
onSpawnBlockStatesDefine os blocos que o boss vai modificar quando spawna.Vê os comandos abaixonenhum
onRemoveBlockStatesDefine os blocos que o boss vai modificar quando desaparece.Vê os comandos abaixonenhum

Como indicado, os Bosses Regionais podem ter onSpawnBlockStates e onRemoveBlockStates.

Esta é uma funcionalidade muito útil para modificar arenas de combate durante o combate, sobretudo quando combinada com mudanças de fase, uma vez que passa a ser possível abrir e fechar arenas de combate alterando estados de blocos.

O formato destas definições é demasiado complexo para se escrever à mão, por isso existem alguns comandos que ajudam a configurá-las:

ComandoDescrição
/em transitiveBlocks register [regional_boss_file.yml] [on_spawn/on_remove]Começa a registar seleções manuais de blocos para os estados de spawn ou de remoção.
/em transitiveBlocks edit [regional_boss_file.yml] [on_spawn/on_remove]Edita os estados de blocos de spawn ou de remoção.
/em transitiveBlocks registerArea [regional_boss_file.yml] [on_spawn/on_remove]Permite aos administradores selecionar grandes áreas de blocos para guardar como estados.
/em transitiveBlocks editArea [regional_boss_file.yml] [on_spawn/on_remove]Permite aos administradores editar grandes áreas de blocos para guardar como estados.
Exemplo de utilização:

Imagina que queres criar um combate em que um boss spawna numa arena que tem uma porta aberta, e queres que a porta se feche quando o combate começa e volte a abrir quando o combate termina.

Para isso, vais precisar de duas fases de boss e de registar três conjuntos diferentes de estados de blocos. Neste exemplo, vou chamar a essas fases phase_1_boss.yml e phase_2_boss.yml, respetivamente.

  1. Usa /em transitiveBlocks register phase_1_boss.yml on_spawn ou /em transitiveBlocks edit phase_1_boss.yml on_spawn para registar os blocos da porta no estado aberto.

Isto significa registar os blocos de ar. Recomenda-se aqui a seleção por área.

Isto é necessário para garantir que a porta está aberta quando o boss spawna, para que os jogadores tenham sempre forma de entrar.

  1. Usa /em transitiveBlocks register phase_2_boss.yml on_spawn ou /em transitiveBlocks edit phase_2_boss.yml on_spawn para registar os blocos da porta no estado fechado.

Isto significa registar os blocos sólidos da porta que impediriam o jogador de sair.

Isto é necessário para tornar a porta sólida quando o boss entra na fase 2, impedindo os jogadores de sair.

  1. Usa /em transitiveBlocks register phase_2_boss.yml on_remove ou /em transitiveBlocks edit phase_2_boss.yml on_remove para registar os blocos da porta no estado aberto.

Isto significa voltar a registar os mesmos blocos do primeiro passo (os blocos de ar).

Isto é necessário para abrir a porta quando o boss morre, permitindo aos jogadores sair da arena.


alert

Define se o boss está alerta. Por predefinição, os Bosses Regionais ficam mais lentos e têm uma distância de aggro mais curta quando estão fora de combate. Esta definição impede que os Bosses Regionais fiquem mais lentos e com uma distância de aggro mais curta fora de combate, pelo que se comportam sempre da mesma forma, dentro ou fora de combate.

ChaveValoresPredefinição
alertBooleanofalse
Exemplo
alert: true

removeAfterDeath

Define se o Boss Regional é eliminado permanentemente depois de ser morto. É isto que o BetterStructures usa nos Shrines, em que o Boss Regional foi desenhado para ser enfrentado apenas uma vez e nunca mais nesse local.

ChaveValoresPredefinição
removeAfterDeathBooleanofalse
Exemplo
removeAfterDeath: true

Bosses instanciados

Os bosses instanciados são um subtipo de Bosses Regionais usados em Masmorras Instanciadas.

ChaveDescriçãoValoresPredefinição
instancedTorna o custom boss instanciado. Obrigatório.true / falsefalse

Definir os bosses como instanciados é obrigatório para que as masmorras instanciadas funcionem corretamente. Também recomendamos remover as trelas de quaisquer bosses instanciados.

Exemplo
instanced: true