Zum Hauptinhalt springen

Lua-Scripting: Enums und Werte

webapp_banner.jpg

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 nil zurück oder tun nichts; APIs mit Eingabeprüfung können einen Lua-Fehler auslösen

Enum-Referenz​

EnumVerwendet fürJavadoc
BarColorBoss-Bar-FarbeBarColor
BarStyleBoss-Bar-StilBarStyle
DamageCauseSchadensursachen-FilterungEntityDamageEvent.DamageCause
EnderDragon.PhaseEnderdrachen-PhasensteuerungEnderDragon.Phase
EntityEffectVisuelle EntitätseffekteEntityEffect
EntityTypeEntitäten-SpawningEntityType
EquipmentSlotAusrüstungsplätze von Entitäten; damage_equipment akzeptiert nur HAND, OFF_HAND, HEAD, CHEST, LEGS, FEETEquipmentSlot
FireworkEffect.TypeFeuerwerksformFireworkEffect.Type
MaterialBlöcke und GegenständeMaterial
ParticlePartikeleffekteParticle. Die Umwandlung alter Namen gilt für EliteScript-Partikelaktionen; native Lua-Partikelfunktionen benötigen aktuelle API-Namen.
PotionEffectTypeTrankeffektePotionEffectType
SoundSoundwiedergabeSound
Sounds akzeptieren zwei Formate

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)
sphereSPHERE
domeDOME
cylinderCYLINDER
cuboidCUBOID
coneCONE
static_raySTATIC_RAY
rotating_rayROTATING_RAY
translating_rayTRANSLATING_RAY

Entitätsfilter​

Verwendet von den Abfrageoptionen von context.zones und context.entities. Groß- und Kleinschreibung spielen keine Rolle; die akzeptierten Aliasse stehen unten.

FilterTrifft zu auf
player / playersNur Spieler
elite / elitesNur Elite-Mobs
mob / mobsLebende Entitäten außer Spielern (einschließlich Elite-Mobs)
livingAlle lebenden Entitäten einschließlich Spielern (Standard)
all / entitiesAlle 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.

WertEffekt
CLEARKlarer Himmel
PRECIPITATION / RAINRegen
THUNDERGewitter

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.

WertLöst sich auf zu
SELFDie Boss-Entität
SELF_SPAWNDer Spawn-Ort des Bosses bei Ortsabfragen; der Boss selbst bei Entitätsabfragen
DIRECT_TARGETDas direkte Ziel des aktuellen Events; wählt nichts aus, wenn das Event keines liefert
NEARBY_PLAYERSSpieler in einem Quader, der sich vom Boss aus entlang jeder Achse um range erstreckt
NEARBY_MOBSLebende Entitäten außer Spielern in diesem Quader, ohne den Boss
NEARBY_ELITESElite-Mobs in diesem Quader, ohne den Boss
ALL_PLAYERSAlle Online-Spieler
WORLD_PLAYERSAlle Spieler in der Welt des Bosses
ZONE_FULLEntitäten/Orte innerhalb eines Zonenvolumens
ZONE_BORDEREntitäten/Orte an einem Zonenrand
LOCATIONEin bestimmter Ort aus dem Feld location der Spezifikation
LOCATIONSMehrere bestimmte Orte aus der Liste locations der Spezifikation
LANDING_LOCATIONDer 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_BORDERAm 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.


Nächste Schritte​