Introdução
Estes exemplos combinam ações EliteScript para criar poderes de bosses personalizados. Podes editar o YAML diretamente ou usar a WebApp.
Os vídeos são demonstrações antigas dos efeitos pretendidos. Não verificam a implementação atual; lê o comportamento e as limitações de cada exemplo antes de o usares.
Cola o bloco eliteScript num ficheiro de boss personalizado. Substitui referências de conteúdo como fc_boss.yml por uma definição de boss instalada. O exemplo Arrow Rain abaixo tem uma limitação documentada na origem dos projéteis e atualmente não produz a chuva de flechas anunciada a partir de cima.
O EliteScript (.yml) continua a ser totalmente suportado e é o que todos os exemplos desta página usam. Já não é a única opção: os poderes também podem ser escritos em Lua, que é o que quase todos os poderes incluídos no EliteMobs usam agora. Consulta Criar Poderes para veres como os dois formatos se comparam.
Usa nomes de poção atuais como SLOWNESS, INSTANT_HEALTH e NAUSEA. O resolvedor também aceita identificadores com namespace como minecraft:slowness; as grafias antigas do Bukkit usam um mecanismo de compatibilidade.
Todos os tempos abaixo usam ticks de jogo: 20 ticks equivalem a um segundo à velocidade normal do servidor. As ações são agendadas de forma independente; wait conta desde o início dessa ação, não desde o fim da anterior. Uma ação repetida começa sem um intervalo adicional de espera e executa-se times vezes. track: false no alvo de uma ação captura a sua zona antes da espera; defini-lo apenas em Zone.Target não fixa todas as ações. Consulta alvos e zonas para os detalhes de geometria e armazenamento em cache.
coverage seleciona por amostragem posições da zona para efeitos e invocações, não uma percentagem de jogadores. Os filtros de entidades das zonas selecionam jogadores por predefinição, enquanto NEARBY_PLAYERS pesquisa numa caixa alinhada com os eixos, em vez de um raio esférico. Cooldowns.local e global são valores em ticks; basta que um deles seja positivo para ativar a verificação automática de cooldown dos eventos. Os scripts auxiliares chamados através de scripts começam quando a ação que os chama é executada. Consulta cooldowns.
Exemplos de poderes
Slam Down
Quando um jogador causa dano ao boss, este teletransporta-se 8 blocos acima da posição desse jogador. Após 15 ticks, PUSH agenda uma velocidade descendente para o tick seguinte. No tick 20, duas ações independentes aplicam Lentidão IV durante 60 ticks e mostram o subtítulo «Stunned!» aos jogadores selecionados pela caixa de jogadores próximos, com alcance 3, na posição atual do boss. O subtítulo permanece durante 40 ticks, mais 10 ticks de entrada e 10 de saída gradual.
Este efeito depende do tempo, não de um detetor de aterragem. Obstáculos, gravidade e resultados do teletransporte podem alterar a posição do boss no tick 20. Lentidão não impede ataques nem implementa um atordoamento completo, e este exemplo não tem uma ação separada de dano por script.
Expandir exemplo
eliteScript:
SlamDown:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: TELEPORT
FinalTarget:
targetType: DIRECT_TARGET
offset: 0,8,0
Target:
targetType: SELF
- action: PUSH
vValue: 0,-5,0
Target:
targetType: SELF
wait: 15
- action: POTION_EFFECT
potionEffectType: SLOWNESS
amplifier: 3
duration: 60
Target:
targetType: NEARBY_PLAYERS
range: 3
wait: 20
- action: TITLE_MESSAGE
subtitle: "Stunned!"
duration: 40
fadeIn: 10
fadeOut: 10
Target:
targetType: NEARBY_PLAYERS
range: 3
wait: 20
Cooldowns:
local: 180
global: 80
Push Away
Este script desenha uma cúpula de raio 4 à volta do boss e inicia partículas, empurrões repetidos e mensagens ao mesmo tempo. O exemplo corrigido é acionado por dano de um jogador e calcula uma direção do boss para esse atacante, com um desvio para cima. Todos os jogadores selecionados recebem o mesmo vetor; o empurrão tem uma direção comum e não é calculado radialmente para afastar cada jogador do boss.
PUSH substitui a velocidade um tick após cada ação e calcula o vetor relativo uma vez por execução da ação. A sua posição ACTION_TARGET seria a posição do boss; combiná-la com SourceTarget: SELF produz uma direção de comprimento zero em vez do empurrão pretendido. Este exemplo usa DIRECT_TARGET. Se as posições do boss e do atacante coincidirem, a direção é zero e só resta o deslocamento 0,0.2,0. A verificação de entidades no volume completo da cúpula usa contenção numa esfera, pelo que também pode selecionar um jogador abaixo do hemisfério visível.
Expandir exemplo
eliteScript:
PushAway:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: DOME
radius: 4
borderRadius: 3
Target:
targetType: SELF
track: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_BORDER
track: true
repeatEvery: 5
times: 4
- action: PUSH
Target:
targetType: ZONE_FULL
track: true
RelativeVector:
SourceTarget:
targetType: SELF
DestinationTarget:
targetType: DIRECT_TARGET
normalize: true
multiplier: 1.0
offset: 0,0.2,0
repeatEvery: 1
times: 20
- action: MESSAGE
sValue: "&cCool boss!: &fBE GONE!"
Target:
targetType: ZONE_FULL
repeatEvery: 10
times: 2
Cooldowns:
local: 140
global: 80
Arrow Rain
Este exemplo antigo desenha a borda de um cilindro de raio 5 e altura 1 na posição inicial do jogador que causou dano e mostra um aviso. A ação das flechas captura um segundo cilindro 10 blocos acima, espera 40 ticks e depois tenta quatro salvas a intervalos de 10 ticks.
Para um boss vivo, SUMMON_ENTITY com ARROW chama o lançador de projéteis do boss. As flechas são, por isso, lançadas a partir do boss, uma vez por posição da zona amostrada, em vez desses pontos elevados. A velocidade descendente continua a aplicar-se, mas sair do círculo representado não é uma forma fiável de evitar esta implementação. O vídeo antigo mostra a chuva pretendida; este YAML é mantido para explicar a limitação, não como uma receita funcional de chuva de flechas a partir de cima.
Expandir exemplo
eliteScript:
MakeCircle:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 5
borderRadius: 4
height: 1
Target:
targetType: DIRECT_TARGET
track: false
Actions:
- action: SPAWN_PARTICLE
Target:
targetType: ZONE_BORDER
track: false
coverage: 1.0
repeatEvery: 5
times: 8
particles:
- particle: FLAME
- action: TITLE_MESSAGE
Target:
targetType: DIRECT_TARGET
fadeOut: 10
duration: 20
fadeIn: 10
subtitle: Move out of the zone!
- action: RUN_SCRIPT
scripts:
- "ArrowRain"
Cooldowns:
local: 160
global: 80
ArrowRain:
Zone:
shape: CYLINDER
radius: 5
borderRadius: 4
height: 1
Target:
targetType: DIRECT_TARGET
track: false
offset: 0,10,0
Actions:
- action: SUMMON_ENTITY
wait: 40
sValue: ARROW
Target:
targetType: ZONE_FULL
track: false
vValue: 0,-1,0
repeatEvery: 10
times: 4
Fire Aura
Quando o boss causa dano a um jogador, este script inicia partículas num cilindro de raio 2 e altura 3 que segue o boss e dá-lhe a tag temporária FireOn durante 120 ticks. Há 24 execuções de partículas a intervalos de 5 ticks, a última no tick 115.
Se um jogador causar dano ao boss enquanto essa tag estiver presente, SetOnFire define o temporizador de fogo desse atacante direto para 20 ticks. A condição de bloqueio verifica a tag do boss, não se o atacante está dentro do cilindro. Este auxiliar não tem valores de cooldown, pelo que ignora a verificação de cooldown e o cooldown global do script visual não o suprime.
Expandir exemplo
eliteScript:
Visual:
Events:
- PlayerDamagedByEliteMobEvent
Zone:
shape: CYLINDER
radius: 2
height: 3
Target:
targetType: SELF
track: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: FLAME
Target:
targetType: ZONE_FULL
track: true
coverage: 1.0
repeatEvery: 5
times: 24
- action: TAG
tags:
- "FireOn"
duration: 120
Target:
targetType: SELF
Cooldowns:
local: 180
global: 80
SetOnFire:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_ON_FIRE
duration: 20
Target:
targetType: DIRECT_TARGET
Conditions:
Target:
targetType: SELF
conditionType: BLOCKING
hasTags:
- "FireOn"
Poison Lines
Este script captura dois cuboides perpendiculares na posição inicial do boss, formando um sinal de mais. SET_MOB_AI desativa a IA normal do mob durante 40 ticks e inicia imediatamente PoisonLine2; não espera pela reposição da IA para executar o auxiliar. Esta ação não desativa outros scripts.
Cada faixa emite nuvens oito vezes a intervalos de 5 ticks. No tick 40 começam o fumo e Veneno V, cada um repetido 12 vezes a intervalos de 5 ticks até ao tick 95. Cada aplicação de veneno dura 50 ticks, pelo que o efeito pode persistir após o fim do fumo. track: false ao nível das ações mantém ambas as faixas fixas mesmo quando o boss volta a mover-se. O y: 1 do cuboide produz uma faixa rasa de colisão de entidades, desde o Y do bloco de origem até meio bloco acima; as partículas e a contenção de entidades não usam volumes idênticos.
Expandir exemplo
eliteScript:
PoisonLine1:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CUBOID
x: 20
y: 1
z: 2
Target:
targetType: SELF
track: false
Actions:
- action: SET_MOB_AI
bValue: false
duration: 40
Target:
targetType: SELF
scripts:
- "PoisonLine2"
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 1
track: false
repeatEvery: 5
times: 8
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE
Target:
targetType: ZONE_FULL
coverage: 1
track: false
wait: 40
repeatEvery: 5
times: 12
- action: POTION_EFFECT
potionEffectType: POISON
amplifier: 4
duration: 50
Target:
targetType: ZONE_FULL
track: false
wait: 40
repeatEvery: 5
times: 12
Cooldowns:
local: 200
global: 80
PoisonLine2:
Zone:
shape: CUBOID
x: 2
y: 1
z: 20
Target:
targetType: SELF
track: false
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 1
track: false
repeatEvery: 5
times: 8
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE
Target:
targetType: ZONE_FULL
coverage: 1
track: false
wait: 40
repeatEvery: 5
times: 12
- action: POTION_EFFECT
potionEffectType: POISON
amplifier: 4
duration: 50
Target:
targetType: ZONE_FULL
track: false
wait: 40
repeatEvery: 5
times: 12
Bounce
Este script captura um cilindro de raio 10 e altura 2 na posição inicial do boss. Emite partículas 20 vezes a intervalos de 10 ticks e executa 200 empurrões para cima a intervalos de 1 tick, cerca de 10 segundos à velocidade normal do servidor.
Cada empurrão define a velocidade como 0,0.4,0 no tick seguinte, substituindo também a velocidade horizontal. Os jogadores podem saltitar ao entrar e sair dos limites verticais do cilindro: toda a caixa delimitadora do jogador tem de caber na sua altura. Os dois alvos de ação estão fixos, pelo que a região de colisão não segue um boss em movimento deixando as partículas para trás.
Expandir exemplo
eliteScript:
Bounce:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 10
height: 2
Target:
targetType: SELF
track: false
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: EXPLOSION
repeatEvery: 10
times: 20
Target:
targetType: ZONE_FULL
track: false
coverage: 0.2
- action: PUSH
vValue: 0,0.4,0
Target:
targetType: ZONE_FULL
track: false
repeatEvery: 1
times: 200
Cooldowns:
local: 220
global: 80
Summon
Este script captura um cilindro de raio 3 e altura 1, 6 blocos acima da posição inicial do jogador que causou dano, e mostra-lhe imediatamente um subtítulo. O track: false da ação de invocação captura a zona antes da espera de 40 ticks, pelo que mover-se durante o aviso não desloca a área de aparecimento.
Após 40 ticks, coverage: 0.2 seleciona independentemente por amostragem posições da zona para reforços; não garante uma quantidade fixa nem exatamente um quinto dos pontos. Substitui fc_boss.yml pelo nome de ficheiro válido de um boss personalizado instalado. Cada invocação bem-sucedida recebe um prazo de fuga de 400 ticks. São pontos de aparecimento no ar, sem procura de chão seguro, e a remoção normal do boss ou do encontro pode retirar os reforços mais cedo.
Expandir exemplo
eliteScript:
Summon:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 3
height: 1
Target:
targetType: DIRECT_TARGET
offset: 0,6,0
track: false
Actions:
- action: SUMMON_REINFORCEMENT
sValue: "fc_boss.yml"
duration: 400
Target:
targetType: ZONE_FULL
coverage: 0.2
track: false
wait: 40
- action: TITLE_MESSAGE
subtitle: "Friends! Help!!!"
duration: 30
fadeIn: 10
fadeOut: 10
Target:
targetType: DIRECT_TARGET
Cooldowns:
local: 333
global: 80
Potion Zones
O dano de um jogador aciona uma escolha aleatória com probabilidades iguais entre PotionZoneBad e PotionZoneGood, através de onlyRunOneScript: true.
Ambos os auxiliares capturam um cilindro de raio 5 e altura 2 à volta de cada jogador selecionado pela caixa de jogadores próximos do boss, com alcance 20. Os cilindros permanecem nessas posições iniciais; os jogadores que estiverem dentro deles no momento da ação recebem os efeitos, incluindo os que entrarem mais tarde. Cilindros sobrepostos formam uma seleção conjunta, pelo que uma ação auxiliar não aplica repetidamente o mesmo efeito a um jogador só porque vários cilindros se sobrepõem.
O auxiliar prejudicial emite nuvens quatro vezes e depois inicia fumo grande e Wither IV no tick 40. Estas últimas ações executam-se seis vezes a intervalos de 10 ticks até ao tick 90; cada aplicação de Wither dura 80 ticks. O auxiliar benéfico troca as partículas e aplica Saúde Instantânea II. O seu duration: 80 não transforma um efeito instantâneo em regeneração contínua. O coverage: 0.3 das partículas não reduz a percentagem de jogadores afetados. Ambos os auxiliares enviam imediatamente a mensagem de chat aos jogadores próximos, antes dos efeitos diferidos.
Expandir exemplo
eliteScript:
Trigger:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: RUN_SCRIPT
scripts:
- "PotionZoneBad"
- "PotionZoneGood"
onlyRunOneScript: true
Cooldowns:
local: 110
global: 80
PotionZoneBad:
Zone:
shape: CYLINDER
height: 2
radius: 5
Target:
targetType: NEARBY_PLAYERS
range: 20
track: false
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 0.3
track: false
repeatEvery: 10
times: 4
- action: SPAWN_PARTICLE
particles:
- particle: LARGE_SMOKE
Target:
targetType: ZONE_FULL
coverage: 0.3
track: false
wait: 40
repeatEvery: 10
times: 6
- action: POTION_EFFECT
potionEffectType: WITHER
amplifier: 3
duration: 80
Target:
targetType: ZONE_FULL
track: false
wait: 40
repeatEvery: 10
times: 6
- action: MESSAGE
sValue: "&cCool boss!: &fFeel the burn!"
Target:
targetType: NEARBY_PLAYERS
range: 20
PotionZoneGood:
Zone:
shape: CYLINDER
height: 2
radius: 5
Target:
targetType: NEARBY_PLAYERS
range: 20
track: false
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: LARGE_SMOKE
Target:
targetType: ZONE_FULL
coverage: 0.3
track: false
repeatEvery: 10
times: 4
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 0.3
track: false
wait: 40
repeatEvery: 10
times: 6
- action: POTION_EFFECT
potionEffectType: INSTANT_HEALTH
amplifier: 1
duration: 80
Target:
targetType: ZONE_FULL
track: false
wait: 40
repeatEvery: 10
times: 6
- action: MESSAGE
sValue: "&cCool boss!: &fFeel the... Wait, this is the wrong one."
Target:
targetType: NEARBY_PLAYERS
range: 20
Blind Waves
Este script captura dois segmentos de raio horizontais na posição do boss. Cada um vai de Z +5 a Z -5 e depois desloca-se ao longo do X do mundo até +10 ou -10 durante 100 ticks. Estes desvios seguem os eixos do mundo, não a orientação do boss.
Os dois extremos Z determinam o comprimento de 10 blocos do segmento, enquanto cada par de coordenadas X finais determina a direção de deslocação. Mantém FinalTarget e FinalTarget2 ao adaptares um raio em translação.
Desvios Y iguais a zero colocam os segmentos à altura inicial dos pés do boss. Alterar a altura dos dois extremos desloca um raio verticalmente; não lhe dá uma altura de parede retangular. O pointRadius predefinido é 0.5, e as colisões verificam esferas amostradas contra as caixas delimitadoras dos jogadores. A possibilidade de saltar por cima depende, por isso, do terreno e de toda a hitbox do jogador. ignoresSolidBlocks: true permite que as ondas atravessem blocos sólidos.
Reduzir animationDuration acelera o movimento; ajusta também times das ações se os efeitos devem terminar com a animação mais curta. O último fotograma da animação chega exatamente aos alvos finais, e essa geometria final permanece disponível até ao fim da ação.
O fumo executa-se a cada 5 ticks durante 20 iterações, enquanto a cegueira é verificada a cada tick durante 100 iterações. Cada contacto aplica 100 ticks de cegueira; permanecer em contacto renova o efeito em vez de iniciar uma única janela fixa de cinco segundos. As zonas animadas continuam a mover-se mesmo com track: false ao nível da ação, e cada ação guarda as suas formas animadas quando começa, seja qual for a sua definição de track. As ações separadas de partículas e de poção possuem, cada uma, as suas próprias formas animadas capturadas.
Expandir exemplo
eliteScript:
Blind:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: TRANSLATING_RAY
Target:
targetType: SELF
offset: 0,0,5
track: false
FinalTarget:
targetType: SELF
offset: 10,0,5
track: false
Target2:
targetType: SELF
offset: 0,0,-5
track: false
FinalTarget2:
targetType: SELF
offset: 10,0,-5
track: false
animationDuration: 100
ignoresSolidBlocks: true
Actions:
- action: RUN_SCRIPT
scripts:
- "Blind2"
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
repeatEvery: 5
times: 20
- action: POTION_EFFECT
potionEffectType: BLINDNESS
amplifier: 5
duration: 100
Target:
targetType: ZONE_FULL
track: true
repeatEvery: 1
times: 100
Cooldowns:
local: 200
global: 80
Blind2:
Zone:
shape: TRANSLATING_RAY
Target:
targetType: SELF
offset: 0,0,5
track: false
FinalTarget:
targetType: SELF
offset: -10,0,5
track: false
Target2:
targetType: SELF
offset: 0,0,-5
track: false
FinalTarget2:
targetType: SELF
offset: -10,0,-5
track: false
animationDuration: 100
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
repeatEvery: 5
times: 20
- action: POTION_EFFECT
potionEffectType: BLINDNESS
amplifier: 5
duration: 100
Target:
targetType: ZONE_FULL
track: true
repeatEvery: 1
times: 100
Freeze Wall
Este script empilha três raios rotativos à altura inicial dos pés do boss e a 1 e 2 blocos acima. Um raio tem um pointRadius, não uma altura retangular, pelo que os scripts combinam vários segmentos para criar um efeito de parede.
Cada segmento tem 6 blocos de comprimento e usa uma rotação positiva de yaw de 360 graus durante 200 ticks. A direção inicial é +X do mundo e não depende da orientação do boss. O pivô capturado não segue o boss. A linha completa existe desde o momento em que a forma é criada, antes do primeiro passo de rotação. Os blocos sólidos não param estes raios.
Cada script emite partículas 20 vezes a intervalos de 10 ticks e verifica o contacto com jogadores a cada tick durante 200 iterações. Cada contacto adiciona 100 ticks de congelamento. O contacto com raios sobrepostos pode adicionar vários incrementos no mesmo tick. O Minecraft controla o descongelamento e o dano de congelamento; não se trata de uma duração visual fixa de cinco segundos nem de uma imobilização. As ações de poção e de congelamento também respeitam a política de efeitos das instâncias do EliteMobs.
Expandir exemplo
eliteScript:
Trigger:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: RUN_SCRIPT
scripts:
- "FreezeWall"
- "FreezeWall2"
- "FreezeWall3"
Cooldowns:
local: 300
global: 80
FreezeWall:
Zone:
shape: ROTATING_RAY
Target:
targetType: SELF
track: false
Target2:
targetType: SELF
offset: 6,0,0
track: false
yawRotation: 360
animationDuration: 200
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SNOWFLAKE
repeatEvery: 10
times: 20
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
- action: VISUAL_FREEZE
amount: 100
Target:
targetType: ZONE_FULL
track: false
repeatEvery: 1
times: 200
FreezeWall2:
Zone:
shape: ROTATING_RAY
Target:
targetType: SELF
track: false
offset: 0,1,0
Target2:
targetType: SELF
track: false
offset: 6,1,0
yawRotation: 360
animationDuration: 200
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SNOWFLAKE
repeatEvery: 10
times: 20
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
- action: VISUAL_FREEZE
amount: 100
Target:
targetType: ZONE_FULL
track: false
repeatEvery: 1
times: 200
FreezeWall3:
Zone:
shape: ROTATING_RAY
Target:
targetType: SELF
track: false
offset: 0,2,0
Target2:
targetType: SELF
track: false
offset: 6,2,0
yawRotation: 360
animationDuration: 200
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SNOWFLAKE
repeatEvery: 10
times: 20
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
- action: VISUAL_FREEZE
amount: 100
Target:
targetType: ZONE_FULL
track: false
repeatEvery: 1
times: 200