Lua-Scripting: Enums und Werte
Diese Seite verlinkt auf die Spigot-Wertetypen, die EliteMobs-Lua-Methoden verwenden. Übergib ihre Konstantennamen wie "FLAME", "ZOMBIE" und "STONE" als Zeichenfolgen in deinem Lua-Code. Verwende Werte, die in der API-Version deines Servers verfügbar sind.
- Die Schreibweise muss exakt dem Enum-Konstantennamen entsprechen
- Die Groß-/Kleinschreibung wird intern normalerweise normalisiert, aber verwende sicherheitshalber die Javadoc-Schreibweise
- Der Umgang mit ungültigen Werten hängt von der Methode ab: Manche protokollieren eine Warnung, andere geben
nilzurück oder tun nichts; APIs mit Eingabeprüfung können einen Lua-Fehler auslösen
Enum-Referenz
| Enum | Verwendet für | Javadoc |
|---|---|---|
BarColor | Boss-Bar-Farbe | BarColor |
BarStyle | Boss-Bar-Stil | BarStyle |
DamageCause | Schadensursachen-Filterung | EntityDamageEvent.DamageCause |
EnderDragon.Phase | Enderdrachen-Phasensteuerung | EnderDragon.Phase |
EntityEffect | Visuelle Entitätseffekte | EntityEffect |
EntityType | Entitäten-Spawning | EntityType |
EquipmentSlot | Ausrüstungsplätze von Entitäten; damage_equipment akzeptiert nur HAND, OFF_HAND, HEAD, CHEST, LEGS, FEET | EquipmentSlot |
FireworkEffect.Type | Feuerwerksform | FireworkEffect.Type |
Material | Blöcke und Gegenstände | Material |
Particle | Partikeleffekte | Particle. Die Umwandlung alter Namen gilt für EliteScript-Partikelaktionen; native Lua-Partikelfunktionen benötigen aktuelle API-Namen. |
PotionEffectType | Trankeffekte | PotionEffectType |
Sound | Soundwiedergabe | Sound |
Jede Lua-Soundfunktion (boss:play_sound_at_self, entity:play_sound_at_entity, world:play_sound_at_location) löst die Zeichenfolge in zwei Schritten auf: Zuerst versucht sie den Namen aus dem Spigot-Enum Sound (in Großbuchstaben umgewandelt, weshalb "entity_blaze_shoot" funktioniert). Schlägt das fehl, behandelt sie die Zeichenfolge als Sound-Schlüssel mit Namensraum (in Kleinbuchstaben umgewandelt, weshalb sowohl "entity.blaze.shoot" als auch dein eigener Ressourcenpaket-Schlüssel "mypack:boss.roar" funktioniert).
Beide Wege entfernen umgebende Leerzeichen. Ein Schlüssel ohne Namensraum verwendet minecraft. Ungültig formatierte Schlüssel werden ignoriert; syntaktisch gültige Schlüssel werden ohne Prüfung auf einen vorhandenen Sound an den Client gesendet. Ein falsch geschriebener Schlüssel oder ein fehlender Ressourcenpaket-Sound kann deshalb stumm bleiben.
Nicht-Spigot-Werte
Diese Werte sind EliteMobs-spezifisch und nicht in den Spigot Javadocs:
Zonenformen
Verwendet von nativen Zonendefinitionen (kind-Feld) und Script-Utility-Zonenspezifikationen (shape-Feld). Diese Werte unterscheiden Groß- und Kleinschreibung. Verwende Kleinbuchstaben für native Formen und Großbuchstaben für Script-Utility-Formen.
Native (kind) | Script Utility (shape) |
|---|---|
sphere | SPHERE |
dome | DOME |
cylinder | CYLINDER |
cuboid | CUBOID |
cone | CONE |
static_ray | STATIC_RAY |
rotating_ray | ROTATING_RAY |
translating_ray | TRANSLATING_RAY |
Entitätsfilter
Verwendet von den Abfrageoptionen von context.zones und context.entities. Groß- und Kleinschreibung spielen keine Rolle; die akzeptierten Aliasse stehen unten.
| Filter | Trifft zu auf |
|---|---|
player / players | Nur Spieler |
elite / elites | Nur Elite-Mobs |
mob / mobs | Lebende Entitäten außer Spielern (einschließlich Elite-Mobs) |
living | Alle lebenden Entitäten einschließlich Spielern (Standard) |
all / entities | Alle Entitäten, auch nicht lebende. Wird nur von context.entities:get_nearby_entities erkannt. |
Unbekannte Filter verwenden living; ein Tippfehler wie "playr" schließt daher alle Arten lebender Entitäten im abgefragten Bereich ein. Diese nativen Entitätsabfragen schließen den Boss selbst aus. Zonenabfragen suchen in der Welt des Bosses, Quaderabfragen in der Welt des angegebenen Mittelpunkts.
get_nearby_entities(radius, filter) prüft bei Filtern für lebende Entitäten den Abstand innerhalb einer Kugel. Mit all oder entities sucht es stattdessen in einem achsenparallelen Quader, der sich entlang jeder Achse um radius erstreckt. Es liefert Entitätsreferenztabellen zurück, auch für nicht lebende Entitäten. Andere native Abfragen behandeln diese beiden Filter wie living.
context.script:zone({...}) verwendet andere Filter in Großbuchstaben (PLAYER, ELITE, LIVING), da es die EliteScript-Engine ausführt.
Wetterwerte
Verwendet von context.world:set_world_weather(weather). Werte werden ohne Entfernen von Leerzeichen in Großbuchstaben umgewandelt. Ein unbekannter Wert protokolliert eine Warnung und lässt das Wetter unverändert.
| Wert | Effekt |
|---|---|
CLEAR | Klarer Himmel |
PRECIPITATION / RAIN | Regen |
THUNDER | Gewitter |
Zieltypen
Dies sind EliteScript-Zielwerte. context.script:target() verwendet denselben Resolver, liefert aber keine geerbten Aktions- oder Landedaten. Zonenziele müssen über full_target() oder border_target() eines Zonenobjekts erstellt werden.
| Wert | Löst sich auf zu |
|---|---|
SELF | Die Boss-Entität |
SELF_SPAWN | Der Spawn-Ort des Bosses bei Ortsabfragen; der Boss selbst bei Entitätsabfragen |
DIRECT_TARGET | Das direkte Ziel des aktuellen Events; wählt nichts aus, wenn das Event keines liefert |
NEARBY_PLAYERS | Spieler in einem Quader, der sich vom Boss aus entlang jeder Achse um range erstreckt |
NEARBY_MOBS | Lebende Entitäten außer Spielern in diesem Quader, ohne den Boss |
NEARBY_ELITES | Elite-Mobs in diesem Quader, ohne den Boss |
ALL_PLAYERS | Alle Online-Spieler |
WORLD_PLAYERS | Alle Spieler in der Welt des Bosses |
ZONE_FULL | Entitäten/Orte innerhalb eines Zonenvolumens |
ZONE_BORDER | Entitäten/Orte an einem Zonenrand |
LOCATION | Ein bestimmter Ort aus dem Feld location der Spezifikation |
LOCATIONS | Mehrere bestimmte Orte aus der Liste locations der Spezifikation |
LANDING_LOCATION | Der Landeort eines fallenden Blocks oder einer beschworenen Entität |
ACTION_TARGET | Übernimmt die Ziele der umgebenden EliteScript-Aktion |
INHERIT_SCRIPT_TARGET | Übernimmt das Ziel des aufrufenden EliteScripts |
INHERIT_SCRIPT_ZONE_FULL | Übernimmt die Zone des aufrufenden EliteScripts; die aktuelle Entitätsauswahl verwendet ihren Rand. Siehe Einschränkungen bei übernommenen Zonen. |
INHERIT_SCRIPT_ZONE_BORDER | Am Rand der Zone des aufrufenden EliteScripts; zur Ortsauflösung siehe Einschränkungen bei übernommenen Zonen. |
Verwende LANDING_LOCATION, ACTION_TARGET und die drei INHERIT_SCRIPT_*-Werte nicht mit context.script:target(). Dem Lua-Objekt fehlen der entsprechende Aktions-, Vererbungs- und Landezustand. Die Auflösung kann keine Ziele liefern oder fehlschlagen. Einer alleinstehenden ZONE_FULL- oder ZONE_BORDER-Spezifikation fehlt ebenfalls die Zone. Die Bedeutung für YAML-Aktionen ist unter EliteScript-Ziele beschrieben.
