Saltar para o conteúdo principal

Scripting Lua: Enums e valores

webapp_banner.jpg

Esta página contém links para os tipos de valores do Spigot usados pelos métodos Lua do EliteMobs. Passa os nomes das constantes, como "FLAME", "ZOMBIE" e "STONE", como strings no teu código Lua. Usa valores disponíveis na versão da API do teu servidor.

  • A ortografia deve corresponder exatamente ao nome da constante enum
  • As maiúsculas/minúsculas são normalmente normalizadas internamente, mas siga a ortografia do Javadoc por segurança
  • O tratamento de valores inválidos depende do método: alguns registam um aviso, outros devolvem nil ou não fazem nada, e as APIs com validação podem gerar um erro de Lua

Referência de enums​

EnumUsado paraJavadoc
BarColorCor da boss barBarColor
BarStyleEstilo da boss barBarStyle
DamageCauseFiltragem por causa de danoEntityDamageEvent.DamageCause
EnderDragon.PhaseControlo de fase do ender dragonEnderDragon.Phase
EntityEffectEfeitos visuais de entidadesEntityEffect
EntityTypeSpawn de entidadesEntityType
EquipmentSlotSlots de equipamento das entidades; damage_equipment aceita apenas HAND, OFF_HAND, HEAD, CHEST, LEGS, FEETEquipmentSlot
FireworkEffect.TypeForma do fogo de artifícioFireworkEffect.Type
MaterialBlocos e itensMaterial
ParticleEfeitos de partículasParticle. As conversões de nomes antigos aplicam-se às ações de partículas do EliteScript; as funções nativas de partículas em Lua exigem os nomes atuais da API.
PotionEffectTypeEfeitos de poçãoPotionEffectType
SoundReprodução de sonsSound
Os sons aceitam dois formatos

Todos os auxiliares de som em Lua (boss:play_sound_at_self, entity:play_sound_at_entity, world:play_sound_at_location) resolvem a string em dois passos: primeiro tentam o nome do enum Sound do Spigot (convertido para maiúsculas, pelo que "entity_blaze_shoot" funciona) e, se isso falhar, tratam a string como uma chave de som com namespace (convertida para minúsculas, pelo que tanto "entity.blaze.shoot" como a tua própria chave de resource pack "mypack:boss.roar" funcionam).

Ambos os caminhos removem os espaços no início e no fim. Uma chave sem namespace usa minecraft. As chaves malformadas são ignoradas; as chaves com sintaxe válida são enviadas ao cliente sem verificar se o som existe. Uma chave mal escrita ou um som ausente do resource pack pode, por isso, não produzir som.

Valores fora do Spigot​

Estes valores são específicos do EliteMobs e não constam dos Javadocs do Spigot:

Formas de zona​

Usadas pelas definições nativas de zona (campo kind) e pelas especificações de zona do utilitário de scripts (campo shape). Estes valores distinguem maiúsculas de minúsculas. Usa minúsculas nas formas nativas e maiúsculas nas formas do utilitário de scripts.

Nativo (kind)Utilitário de script (shape)
sphereSPHERE
domeDOME
cylinderCYLINDER
cuboidCUBOID
coneCONE
static_raySTATIC_RAY
rotating_rayROTATING_RAY
translating_rayTRANSLATING_RAY

Filtros de entidades​

Usados pelas opções de consulta de context.zones e context.entities. Não distinguem maiúsculas de minúsculas; os aliases aceites estão listados abaixo.

FiltroCorresponde a
player / playersApenas jogadores
elite / elitesApenas elite mobs
mob / mobsEntidades vivas que não são jogadores (inclui elites)
livingTodas as entidades vivas, jogadores incluídos (predefinição)
all / entitiesTodas as entidades, incluindo as não-vivas. Só reconhecido por context.entities:get_nearby_entities

Os filtros desconhecidos usam living, pelo que um erro como "playr" inclui todos os tipos de entidades vivas dentro da área consultada. Estas consultas nativas excluem o próprio boss. As consultas de entidades em zonas procuram no mundo do boss; as consultas de caixas procuram no mundo do centro fornecido.

get_nearby_entities(radius, filter) verifica a distância esférica para os filtros de entidades vivas. Com all ou entities, procura numa caixa alinhada com os eixos que se estende radius em cada eixo e devolve tabelas de referência a entidades, incluindo as não vivas. As outras consultas nativas tratam esses dois filtros como living.

O context.script:zone({...}) usa um conjunto de filtros diferente, em maiúsculas (PLAYER, ELITE, LIVING), porque corre o motor do EliteScript.

Valores de meteorologia​

Usados por context.world:set_world_weather(weather). Os valores são convertidos em maiúsculas sem remover espaços. Um valor desconhecido regista um aviso e deixa o tempo inalterado.

ValorEfeito
CLEARCéu limpo
PRECIPITATION / RAINChuva
THUNDERTrovoada

Tipos de alvo​

Estes são os valores de alvo do EliteScript. context.script:target() partilha o resolvedor, mas não fornece dados de ações herdadas nem de aterragem. Os alvos de zona têm de vir de full_target() ou border_target() de um objeto de zona.

ValorResolve para
SELFA entidade do boss
SELF_SPAWNA localização de spawn do boss ao resolver localizações; o próprio boss ao resolver entidades
DIRECT_TARGETO alvo direto do evento atual; não seleciona nada quando o evento não fornece nenhum
NEARBY_PLAYERSJogadores numa caixa que se estende range em cada eixo a partir do boss
NEARBY_MOBSEntidades vivas que não são jogadores nessa caixa, excluindo o boss
NEARBY_ELITESElite mobs nessa caixa, excluindo o boss
ALL_PLAYERSTodos os jogadores online
WORLD_PLAYERSTodos os jogadores no mundo do boss
ZONE_FULLEntidades/localizações dentro do volume de uma zona
ZONE_BORDEREntidades/localizações na fronteira de uma zona
LOCATIONUma localização específica, vinda do campo location da especificação
LOCATIONSVárias localizações específicas, vindas da lista locations da especificação
LANDING_LOCATIONO sítio onde um bloco em queda ou uma entidade invocada aterrou
ACTION_TARGETHerda os alvos da ação EliteScript envolvente
INHERIT_SCRIPT_TARGETHerda o alvo do EliteScript que chamou
INHERIT_SCRIPT_ZONE_FULLHerda a zona do EliteScript que chamou; a seleção atual de entidades usa a sua fronteira. Consulta as limitações das zonas herdadas.
INHERIT_SCRIPT_ZONE_BORDERNa fronteira da zona do EliteScript que chamou; consulta as limitações das zonas herdadas para a resolução de localizações.

Não uses LANDING_LOCATION, ACTION_TARGET nem os três valores INHERIT_SCRIPT_* com context.script:target(). O objeto Lua não tem o estado de ação, herança ou aterragem correspondente; a resolução pode não devolver alvos ou falhar. Uma especificação isolada ZONE_FULL ou ZONE_BORDER também não tem zona. Consulta Alvos do EliteScript para a semântica das ações YAML.


Próximos passos​