Scripting Lua: Enums e valores
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
nilou não fazem nada, e as APIs com validação podem gerar um erro de Lua
Referência de enums
| Enum | Usado para | Javadoc |
|---|---|---|
BarColor | Cor da boss bar | BarColor |
BarStyle | Estilo da boss bar | BarStyle |
DamageCause | Filtragem por causa de dano | EntityDamageEvent.DamageCause |
EnderDragon.Phase | Controlo de fase do ender dragon | EnderDragon.Phase |
EntityEffect | Efeitos visuais de entidades | EntityEffect |
EntityType | Spawn de entidades | EntityType |
EquipmentSlot | Slots de equipamento das entidades; damage_equipment aceita apenas HAND, OFF_HAND, HEAD, CHEST, LEGS, FEET | EquipmentSlot |
FireworkEffect.Type | Forma do fogo de artifício | FireworkEffect.Type |
Material | Blocos e itens | Material |
Particle | Efeitos de partículas | Particle. 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. |
PotionEffectType | Efeitos de poção | PotionEffectType |
Sound | Reprodução de sons | Sound |
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) |
|---|---|
sphere | SPHERE |
dome | DOME |
cylinder | CYLINDER |
cuboid | CUBOID |
cone | CONE |
static_ray | STATIC_RAY |
rotating_ray | ROTATING_RAY |
translating_ray | TRANSLATING_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.
| Filtro | Corresponde a |
|---|---|
player / players | Apenas jogadores |
elite / elites | Apenas elite mobs |
mob / mobs | Entidades vivas que não são jogadores (inclui elites) |
living | Todas as entidades vivas, jogadores incluídos (predefinição) |
all / entities | Todas 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.
| Valor | Efeito |
|---|---|
CLEAR | Céu limpo |
PRECIPITATION / RAIN | Chuva |
THUNDER | Trovoada |
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.
| Valor | Resolve para |
|---|---|
SELF | A entidade do boss |
SELF_SPAWN | A localização de spawn do boss ao resolver localizações; o próprio boss ao resolver entidades |
DIRECT_TARGET | O alvo direto do evento atual; não seleciona nada quando o evento não fornece nenhum |
NEARBY_PLAYERS | Jogadores numa caixa que se estende range em cada eixo a partir do boss |
NEARBY_MOBS | Entidades vivas que não são jogadores nessa caixa, excluindo o boss |
NEARBY_ELITES | Elite mobs nessa caixa, excluindo o boss |
ALL_PLAYERS | Todos os jogadores online |
WORLD_PLAYERS | Todos os jogadores no mundo do boss |
ZONE_FULL | Entidades/localizações dentro do volume de uma zona |
ZONE_BORDER | Entidades/localizações na fronteira de uma zona |
LOCATION | Uma localização específica, vinda do campo location da especificação |
LOCATIONS | Várias localizações específicas, vindas da lista locations da especificação |
LANDING_LOCATION | O sítio onde um bloco em queda ou uma entidade invocada aterrou |
ACTION_TARGET | Herda os alvos da ação EliteScript envolvente |
INHERIT_SCRIPT_TARGET | Herda o alvo do EliteScript que chamou |
INHERIT_SCRIPT_ZONE_FULL | Herda 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_BORDER | Na 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.
