Zum Hauptinhalt springen

Lua-API-Referenz

Diese Referenz beschreibt die Lua-Tabellen von MagmaCore, FreeMinecraftModels und EliteMobs. Gemeinsame Tabellen und Boss-Power-Tabellen können bei gleichnamigen Methoden unterschiedliche Verträge haben; beachte den jeweiligen Abschnitt.

Die meisten Tabellenmethoden akzeptieren sowohl table.method(...) als auch table:method(...). Globale Funktionen em.create_*, em.zone.create_* und em.location.* erfordern Punktsyntax, ebenso die unten gekennzeichneten Schadenssetter von Boss-Events. Gemeinsame Live-Felder werden bei Bedarf aufgelöst: Lies sie erneut, um aktuelle Werte zu erhalten, und weise ihnen nichts zu, da dies die Abfrage verdeckt. Eine bereits in einer Lua-Variablen gespeicherte Location oder andere Momentaufnahme aktualisiert sich nicht selbst.

Als farbverarbeitend beschriebene Methoden verwenden die gemeinsame Farbcode-Syntax, etwa für Chat, Titel, Leisten, eigene Namen und Prop-Inventartitel.

Entity-Tabelle​

Die MagmaCore-Entity-Tabelle ist die Basis für generische Entity-Werte; die Tabellen für lebende Entities, Spieler und FreeMinecraftModels-Props erben von ihr.

Eigenschaften​

FeldTypBeschreibung
uuidstringUUID der Entity.
entity_typestringBukkit-Entity-Typ in Kleinbuchstaben.
is_validboolAktueller Gültigkeitswert.
is_deadboolAktueller Todeszustand.
current_locationtable/nilAktuelle Location {x, y, z, yaw, pitch, world}.
worldstring/nilAktueller Weltname.
is_playerboolOb die Entity ein Spieler ist.
is_hostileboolOb die Entity das Bukkit-Interface Monster implementiert.
is_passiveboolOb die Entity das Bukkit-Interface Animals implementiert.
is_on_groundboolAktueller Bodenkontakt.
is_flyingboolAktueller Flugzustand eines Spielers; false für andere Entity-Typen.
in_blockboolNur für Pfeile: aktueller Zustand, ob der Pfeil in einem Block steckt.
attachment_locationtable/nilNur für Pfeile: Mittelpunkt des Blocks, der die aktuelle Position des feststeckenden Pfeils enthält; nil, wenn er nicht feststeckt.
attachment_blocktable/nilMittelpunkt des tatsächlich getroffenen Blocks bei einem Pfeil, der zu einer aktiven Verzauberungsaktion gehört. Gibt nil zurück, wenn kein gültiger erfasster Treffer vorliegt oder nachdem sich der Pfeil wegbewegt, die Welt gewechselt hat oder seine Aktion endet. Kennzeichnet den getroffenen Block; ein kollisionssicheres Bewegungsziel liefert es nicht.

Methoden​

MethodeArgumenteRückgabeBeschreibung
teleport(location)tablenilZu einer Location-Tabelle teleportieren.
remove()—nilDie Entity entfernen, sofern sie noch gültig ist.
set_silent(enabled)boolnilDen Stumm-Zustand setzen.
set_invulnerable(enabled)boolnilDen Unverwundbarkeitszustand setzen.
set_gravity(enabled)boolnilDen Schwerkraftzustand setzen.
set_glowing(enabled)boolnilDen Leucht-Zustand setzen.
set_velocity(x, y, z)number, number, numbernilDie Geschwindigkeit ersetzen; Komponenten müssen endlich sein.
set_fall_distance(distance)numbernilEine endliche, nicht negative Fallstrecke setzen.
set_shooter(uuid)stringboolNur für Projektile: eine aufgelöste Entity zuweisen, die Bukkits ProjectileSource implementiert.
set_direction(x, y, z)number, number, numbernilNur für Feuerbälle: eine endliche Flugrichtung ungleich null setzen.
set_pickup(status)stringnilNur für Pfeile: ALLOWED, DISALLOWED oder CREATIVE_ONLY.
can_receive_hostile_effect(actor_uuid)stringboolPrüfen, ob das Ziel einen feindlichen Effekt vom angemeldeten Spieler erhalten darf. Anbieter können eigene Kampfbeschränkungen anwenden.
has_clear_movement_path(location)tableboolEinen Zug innerhalb derselben Welt vorab auf Kollisionen, Weltgrenzen und geladene Chunks prüfen. Bei Nichtspieler-Entities werden zusätzlich geschützte Regionen abgewiesen. Bewegt die Entity nicht.
movement_path_status(location)tablestringclear, blocked, protected oder unavailable zurückgeben; protected gilt für Nichtspieler-Entities. Die Kollisionsprüfung prüft vorsorglich den gesamten von der Bounding Box der Entity überstrichenen Bereich.

Ein freier Spielerpfad erlaubt weder den Zutritt noch den Kampf. Die tatsächliche Bewegung unterliegt weiterhin den Bewegungs-Listenern, einschließlich regionaler Zutrittsbeschränkungen. Reiner Bauschutz verhindert keine Spielerbewegung.

Gemeinsame Location-Argumente benötigen x, y und z. Bei fehlender oder unbekannter Welt wird die Welt der Entity verwendet; em.location.* nutzt den unten beschriebenen anderen Konverter. Die Prüfungen für feindliche Effekte und Bewegungspfade sind optionale Vorabprüfungen und werden nicht automatisch von direkten Entity-Methoden ausgeführt. Ein feindlicher Effekt setzt einen gültigen, lebenden, angemeldeten Spieler als Akteur sowie ein gültiges, lebendes Nichtspielerziel derselben Welt voraus, das weder Armor Stand, unverwundbar, als NPC markiert noch gezähmt ist. EliteMobs ergänzt seine Kampfberechtigung. Ungültige UUIDs und unbekannte Pickup-Enum-Werte können Fehler auslösen.

Entity-Tabelle: EliteMobs-Erweiterung​

Der aktive EliteMobs-Enricher fügt MagmaCore-Entity-Tabellen diese Werte hinzu; elite existiert nur, wenn is_elite beim Aufbau aufgelöst wurde. Flags und verschachtelte Metadaten sind Momentaufnahmen; nur die unten als aktuell bezeichneten Gesundheitsfelder werden erneut abgefragt. Der externe EliteMobs-Adapter von FreeMinecraftModels ergänzt keine elite_player-Tabelle.

Eigenschaften​

FeldTypBeschreibung
is_eliteboolMomentaufnahme, ob EliteMobs die Entity verfolgt.
is_custom_bossboolOb der verfolgte Elite ein Custom Boss ist.
is_significant_bossboolOb es ein Custom Boss mit einem Gesundheitsmultiplikator über 1 ist.
elitetable/nilVerschachtelte EliteMobs-Daten, nur bei einem beim Aufbau aufgelösten Elite vorhanden.
elite.levelintMomentaufnahme der Elite-Stufe.
elite.namestring/nilMomentaufnahme des Elite-Anzeigenamens.
elite.healthnumberAktuelle Gesundheit.
elite.max_healthnumberAktuelle maximale Gesundheit.
elite.is_custom_bossboolOb der Elite ein Custom Boss ist.
elite.health_multipliernumberMomentaufnahme des konfigurierten Gesundheitsmultiplikators.
elite.damage_multipliernumberMomentaufnahme des konfigurierten Schadensmultiplikators.
elite_playertable/nilTabelle nur für Spieler; wird bei Bedarf aufgelöst, wenn EliteMobs-Spielerdaten vorhanden sind.
elite_player.tiernumberAus Fertigkeits-XP berechnete Kampfstufe des Spielers, ohne Verzauberungsabfragen zu aktualisieren.

Methoden​

MethodeArgumenteRückgabeBeschreibung
elite.remove()—nilDen Elite über die EliteMobs-Entfernungspipeline entfernen.

Entity-Tabelle: FreeMinecraftModels-Erweiterung​

Der aktive FreeMinecraftModels-Enricher fügt diese Werte hinzu; model existiert nur, wenn is_modeled wahr ist, und Spieler-spezifische Werte erscheinen nur auf Spielertabellen. Flags, Modellmetadaten und Operatorstatus sind Momentaufnahmen beim Tabellenaufbau; Methoden arbeiten mit den referenzierten Live-Objekten. In EliteMobs-Skripten fügt der optionale FreeMinecraftModels-Adapter von EliteMobs is_modeled, is_prop und model hinzu, aber nicht is_op oder has_permission.

Eigenschaften​

FeldTypBeschreibung
is_modeledboolOb FreeMinecraftModels eine modellierte Entity auflöst.
is_propboolOb die Entity ein von einem Armor Stand getragenes FreeMinecraftModels-Prop ist.
modeltable/nilVerschachtelte Modelldaten, nur bei einer modellierten Entity vorhanden.
model.model_idstring/nilBezeichner des Modell-Blueprints.
model.is_dynamicboolOb die modellierte Entity dynamisch ist.
is_opboolNur für Spieler: Zustand als Serveroperator.

Methoden​

MethodeArgumenteRückgabeBeschreibung
model.play_animation(name, blend?=false, loop?=false)string, bool?=false, bool?=falseboolZurückgeben, ob die Wiedergabe angenommen wurde, einschließlich eingereihter oder unterdrückter Angriffsanfragen; ein endgültiger Todeszustand lehnt die Wiedergabe ab.
model.stop_animations()—nilEingereihte Wiedergabe löschen und, falls verfügbar, zur Idle-Animation zurückkehren; ein endgültiger Todeszustand bleibt unverändert.
model.remove()—nilDie modellierte Entity entfernen.
has_permission(node)stringboolNur für Spieler: Berechtigungsprüfung.

Tabelle für lebende Entities​

Die MagmaCore-Tabelle für lebende Entities erbt alle Eigenschaften und Methoden der Entity-Tabelle.

Eigenschaften​

FeldTypBeschreibung
healthnumberAktuelle Gesundheit.
maximum_healthnumberAktuelle maximale Gesundheit.
namestring/nilAktueller Bukkit-Entity-Name.
is_aliveboolAktuelle Umkehrung von Bukkits Todeszustand.

Methoden​

MethodeArgumenteRückgabeBeschreibung
damage(amount)numbernilBukkit-Schaden zufügen.
push(x, y, z)number, number, numbernilSofort einen Vektor zur aktuellen Geschwindigkeit addieren.
set_facing(x, y, z)number, number, numbernilDurch Teleportieren mit geänderter Blickrichtung entlang des Vektors ausrichten.
add_potion_effect(type, duration, amplifier)string (PotionEffectType), int, intnilEinen Trankeffekt hinzufügen, wenn der Typ aufgelöst wird.
remove_potion_effect(type)string (PotionEffectType)nilEinen Trankeffekt entfernen, wenn der Typ aufgelöst wird.
get_scale()—numberDen effektiven Wert des Skalierungsattributs einschließlich Modifikatoren zurückgeben, oder 1.0, wenn nicht verfügbar.
set_scale(value)numbernilDen Basiswert des Skalierungsattributs setzen, sofern der Server es unterstützt.
set_ai(enabled)boolnilDie KI einer lebenden Entity aktivieren oder deaktivieren.
set_owner(player_uuid)stringboolEine zähmbare Entity für einen angemeldeten Spieler zähmen; setzt außerdem die Wut von Wölfen zurück. False bei nicht unterstützten Entities oder nicht verfügbaren Spielern.
has_potion_effect(type)stringboolEinen Bukkit-Trankeffektnamen prüfen; false, wenn der Name nicht aufgelöst wird.

Spielertabelle​

Die MagmaCore-Spielertabelle erbt alle Eigenschaften und Methoden der Tabelle für lebende Entities.

FreeMinecraftModels ergänzt außerdem is_holding_elitemobs_item(filename). Übergib den vollständigen EliteMobs-Item-Dateinamen einschließlich .yml, etwa shroomwhispers_shears.yml. Die Methode prüft das EliteMobs-Tag des Items in der Haupthand, nicht dessen Anzeigenamen. Eine leere Hand, ein anderes Item oder eine nicht verfügbare EliteMobs-Integration liefert false.

Eigenschaften​

FeldTypBeschreibung
game_modestringMomentaufnahme des Bukkit-Spielmodus in Kleinbuchstaben.

Methoden​

MethodeArgumenteRückgabeBeschreibung
send_message(text)stringnilText senden, der vom Farbparser von MagmaCore verarbeitet wird.
chat(text)stringnilDen Spieler über Bukkit chatten lassen, einschließlich der Ausführung von Befehlen mit führendem Schrägstrich als dieser Spieler. Der Text durchläuft den Farbparser.
get_held_item()—table/nilEine Momentaufnahme {type, amount, display_name} des Items in der Haupthand zurückgeben, oder nil bei leerer Hand. type ist großgeschrieben; ein fehlender Anzeigename fällt auf den Materialnamen zurück.
consume_held_item(amount?=1)int?=1nilDas Verringern des Stapels einplanen, der sich bei Ausführung des Tasks in der Haupthand befindet; liefert kein Zahlungsergebnis und hält das geprüfte Item nicht fest. Übergib einen positiven Wert: Negative Mengen werden nicht abgewiesen und können den Stapel vergrößern.
has_item(material, amount?=1)string (Material), int?=1boolPrüfen, ob das Inventar die angeforderte Menge enthält.
get_target_entity(range?=50)number?=50table/nilAb Augenhöhe gemeinsam Blöcke und Entities prüfen; Flüssigkeiten, passierbare Blöcke und den Spieler selbst ignorieren, mit Entity-Strahlradius 0.5.
get_eye_location()—tableDie Augenposition zurückgeben.
get_look_direction()—tableEine Einheitsrichtung {x, y, z} zurückgeben.
send_block_change(x, y, z, material, ticks?=-1)int, int, int, string (Material), int?=-1boolEinen nur clientseitigen Block und optionales Zurücksetzen nach positiven Ticks einreihen. True bedeutet angenommen; ungültige oder nicht platzierbare Materialien geben false zurück.
reset_block(x, y, z)int, int, intboolDas Wiederherstellen des echten Blocks für diesen Spieler einreihen.
sleep(x, y, z)number, number, numbernilEin echtes WHITE_BED und einen erzwungenen Schlafversuch einreihen; nach dem Aufwachen oder Trennen der Verbindung die ursprünglichen BlockData wiederherstellen. Erste Bereinigungsprüfung nach 20 Ticks, danach alle 10 Ticks. Inhalte von Block-Entities werden nicht gesichert.
wake_up()—nilDas Aufwecken des Spielers einreihen, wenn er schläft.
show_boss_bar(text, color?=WHITE, progress, ticks?=-1)string, string (BarColor)?=WHITE, number, int?=-1nilDie aktive durchgehende Bossleiste ersetzen und nach positiven Ticks optional ausblenden. Fortschritt wird auf 0..1 begrenzt, ungültige Farben fallen auf WHITE zurück. Fortschritt bleibt das dritte Argument; verwende nil für die Standardfarbe.
hide_boss_bar()—nilDie aktive Lua-Bossleiste des Spielers entfernen.
show_action_bar(text, ticks?=-1)string, int?=-1nilEinmal senden, oder alle 40 Ticks wiederholen, bis eine positive Dauer endet.
show_title(title, subtitle?="", fade_in, stay, fade_out)string, string?="", int, int, intnilEinen Titel mit farbverarbeitetem Titel- und Untertiteltext anzeigen.

Gemeinsame Leisten gehören dem Spieler innerhalb der eingebetteten MagmaCore-Kopie des Host-Plugins. Sie sind nicht pro Skript getrennt: Ein neues show_boss_bar ersetzt die aktuelle Leiste des Spielers, und ein neues show_action_bar bricht die aktuelle wiederholte Action-Bar ab. Ein Ablauftimer entfernt nur die Leiste oder Action-Bar, die ihn gestartet hat; ein älterer Ablauf entfernt also keine neuere mehr. Diese UI-Timer und eingereihten Blockänderungen gehören nicht zu context.scheduler. Blockänderungen und Zurücksetzungen lesen die Spielerwelt erst bei Ausführung ihrer Aufgaben; verlasse dich nach einem Weltwechsel nicht darauf, dass der vorgesehene Block wiederhergestellt wird. Die Schlafbereinigung prüft erstmals nach 20 Ticks, danach alle 10 Ticks.

Welt-Tabelle​

Die MagmaCore-Welt-Tabelle wird als context.world bereitgestellt und hält die beim Aufbau erfasste Welt fest; EliteMobs-Boss-Powers erben sie und wenden die weiter unten dokumentierten Überschreibungen an. Gemeinsame Umgebungsabfragen verwenden achsenparallele Quader mit radius als halber Ausdehnung, keine Kugeln. Ergebnisarrays beginnen bei 1 und schließen weder den Besitzer noch bestimmte Spielmodi automatisch aus.

Eigenschaften​

FeldTypBeschreibung
namestringMomentaufnahme des Weltnamens.

Methoden​

MethodeArgumenteRückgabeBeschreibung
get_block_at(x, y, z)int, int, intstringEinen Material-Namen in Kleinbuchstaben zurückgeben, oder air, ohne einen nicht geladenen Chunk zu laden.
set_block_at(x, y, z, material)int, int, int, string (Material)boolDas Platzieren eines Blocks einreihen; ungültige Materialien geben false zurück und nicht geladene Chunks werden von der eingereihten Aufgabe übersprungen.
get_highest_block_y(x, z)int, intintDas höchste Block-Y zurückgeben.
spawn_particle(particle, x, y, z, count?=1, dx?=0, dy?=0, dz?=0, speed?=0)string (Particle), number, number, number, int?=1, number?=0, number?=0, number?=0, number?=0nilEin Partikel spawnen; ungültige Namen bewirken nichts.
play_sound(sound, x, y, z, volume?=1, pitch?=1)string (Sound), number, number, number, number?=1, number?=1nilEinen registrierten Sound oder einen kleingeschriebenen Namespace-Schlüssel eines Ressourcenpaket-Sounds abspielen.
strike_lightning(x, y, z)number, number, numbernilEinen Blitz einschlagen lassen.
get_time()—intDie Weltzeit in Ticks zurückgeben.
set_time(ticks)intnilDie Weltzeit setzen.
get_nearby_entities(x, y, z, radius)number, number, number, numbertableEntity- oder Living-Entity-Tabellen in der Nähe zurückgeben.
get_nearby_players(x, y, z, radius)number, number, number, numbertableSpielertabellen in der Nähe zurückgeben.
spawn_entity(type, x, y, z)string (EntityType), number, number, numbertable/nilEine Vanilla-Entity spawnen; unbekannte Enum-Namen geben nil zurück, gültige, aber nicht spawnbare Typen können Fehler auslösen.
raycast(from_x, from_y, from_z, dir_x, dir_y, dir_z, max_distance?=50, fluid_mode?=NEVER, blocks_only?=false, loaded_only?=false)sechs Zahlen, number?, string?, bool?, bool?table/nilhit_entity, hit_location und hit_block zurückgeben; Flüssigkeitsmodi sind NEVER, SOURCE_ONLY, ALWAYS. Mit loaded_only werden nicht geladene Chunks im umschließenden Rechteck des Strahls abgelehnt und nil zurückgegeben.
place_temporary_block(x, y, z, material, ticks?=0, require_air?=false)int, int, int, string (Material), int?=0, bool?=falseboolEinen temporären Block platzieren; ungültige Materialien oder nicht geladene Chunks geben false zurück.
drop_item(x, y, z, material, amount?=1)number, number, number, string (Material), int?=1table/nilEin Item auf natürliche Weise fallen lassen und seine Entity Table zurückgeben; ungültige Materialien geben nil zurück.
spawn_firework(x, y, z, colors, type?=BALL, power?=1)number, number, number, table, string (FireworkEffect.Type)?=BALL, int?=1nilEin Feuerwerk einreihen, das die Namen der Bukkit-Color-Konstanten verwendet und auf Weiß zurückfällt, wenn keine aufgelöst wird.
strike_lightning_at_location(location)tablenilEinen Blitz in der Welt der Location-Tabelle einschlagen lassen.
play_sound_at_location(location, sound, volume?=1, pitch?=1)table, string (Sound), number?=1, number?=1nilEinen registrierten Sound oder einen kleingeschriebenen Namespace-Schlüssel eines Ressourcenpaket-Sounds abspielen.
spawn_particle_at_location(location, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0)table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0nilEin Partikel über die erfasste Welt spawnen; übergib eine Location derselben Welt.
get_block_at_location(location)tablestringEinen Materialnamen in Kleinbuchstaben zurückgeben, oder air bei einer ungültigen Location oder einem nicht geladenen Chunk.
set_block_at_location(location, material)table, string (Material)boolDas Platzieren eines Blocks in der Welt der Location-Tabelle einreihen.
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false)table, string (Material), int?=0, bool?=falseboolEinen temporären Block in der Welt der Location-Tabelle platzieren.
get_highest_block_y_at_location(location)tableint/nilDas höchste Block-Y zurückgeben, oder nil bei einer ungültigen Location.
terrain_impact_at_location(location, options?)table, table?table/nilEinen vorübergehenden visuellen Geländeeinschlag anzeigen; Optionen: radius=4.5 (0.5–6), intensity=1 (0–1), duration_ticks=35 (1–200), view_range=48 (1–96), seed; liefert ein Handle oder nil.
terrain_impact(x, y, z, options?)number, number, number, table?table/nilDenselben visuellen Einschlag an Koordinaten dieser Welt anzeigen.
impact.is_active()—boolPrüfen, ob das Handle des Geländeeinschlags aktiv ist; impact.id ist seine String-Kennung.
impact.remove()—boolEinen aktiven Einschlag entfernen; false, wenn er bereits inaktiv ist oder das Entfernen fehlschlägt.
get_entity(uuid)stringtable/nilEine gültige Entity im Register der geladenen Entities dieser Welt auflösen. Verwende einen gültigen UUID-String.
block_is_passable(x, y, z)int, int, intbool/nilDie Passierbarkeit des Blocks zurückgeben, oder nil bei nicht geladenen Chunks oder Koordinaten außerhalb der Höhengrenzen.
location_is_protected(location)tableboolRegistrierte Schutzanbieter abfragen; bei fehlender Welt diese Welt verwenden.
spawn_dust(location, count, red, green, blue)table, int, int, int, intnilDUST mit fester Größe und RGB-Komponenten von 0 bis 255 erzeugen, Streuung 0.1 pro Achse; überspringt nicht geladene Chunks. Verwende eine Location in dieser Welt.

raycast liefert bei keinem Treffer eine leere Tabelle, nicht nil. hit_block enthält x, y, z und den kleingeschriebenen Materialnamen. Die kombinierte Abfrage nutzt einen Entity-Strahlradius von 0.5 ohne Entity-Filter. Die Prüfung loaded_only umfasst vorsorglich das ganze umschließende Chunk-Rechteck; ungültige Flüssigkeitsmodi lösen Fehler aus.

Gemeinsame Partikelmethoden lösen großgeschriebene Bukkit-Namen auf, akzeptieren aber keine Partikeldaten. Partikel, die solche Daten benötigen, können Fehler auslösen; verwende für RGB-Staub spawn_dust. Abfragen des höchsten Blocks und das Spawnen von Entities verhindern kein Laden von Chunks. Blockänderungen führen keine Schutzprüfung durch. True bei Blockmethoden bedeutet Einreihung oder erfolgreiche Vorabprüfung, nicht bewiesene Platzierung; insbesondere kann require_air die Änderung weiterhin verhindern.

Temporäre Blöcke mit positiver Dauer sichern die ursprünglichen BlockData und stellen sie wieder her, wenn der Timer endet, wenn der Chunk oder die Welt entladen wird oder wenn das Plugin herunterfährt. Die Wiederherstellung erfolgt nur, solange an der Stelle noch der temporäre Block steht; eine spätere Bearbeitung wird also nicht überschrieben. Eine erneute Platzierung auf einem Block, der noch einen temporären Block enthält, startet dessen Timer neu und behält das zuerst gesicherte Original. Blöcke mit Block-Entities wie Truhen und Schilder, nicht geladene Chunks und Blöcke, die bereits ein anderer Besitzer temporärer Blöcke hält, werden übersprungen. Das Abbauen eines temporären Blocks lässt nichts fallen und beendet die Verwaltung ohne Wiederherstellung; auch das Platzieren eines Blocks an dieser Stelle beendet die Verwaltung. Nicht positive Dauern platzieren den Block dauerhaft und ohne Verwaltung. Dies ist keine skriptbezogene Rücknahme von Änderungen.

Gemeinsame EliteMobs-Weltergänzungen​

Der EliteMobs-Enricher ergänzt diese Methoden auf seiner gemeinsamen Welt-Tabelle. Sie erfordern einen geladenen Ziel-Chunk. Boss-Powers erben sie ebenfalls, überschreiben aber die unten beschriebene Boss-Spawn-Signatur.

MethodeArgumenteRückgabeBeschreibung
lightning_effect_at_location(location)tablenilEinen rein visuellen, schadenslosen Blitz mit EliteMobs-Blitzschutz-Bypass erzeugen.
spawn_npc_at_location(file, location)string, tabletable/nilEinen konfigurierten NPC spawnen und ein Handle mit remove() zurückgeben, oder nil.
spawn_boss_at_location(file, location, level)string, table, inttable/nilEinen Custom Boss als gemeinsame Living Entity Table zurückgeben, oder nil. Alle drei Argumente sind erforderlich.

context.world: FreeMinecraftModels-Ergänzungen​

FreeMinecraftModels registriert diese Methoden auf seiner eigenen MagmaCore-Welt-Tabelle. Sie erscheinen daher in FreeMinecraftModels-Prop-Skripten auf context.world. Jede Methode liefert false, wenn EliteMobs nicht aktiviert ist oder der Spieler nicht aufgelöst wird. Die Loot-Helfer verwenden die Spielerposition, wenn ihr Location-Argument fehlt oder unbrauchbar ist.

Methoden​

MethodeArgumenteRückgabeBeschreibung
start_elitemobs_transport(player, route_id)player, stringboolEine gespeicherte EliteMobs-Transportroute für einen Spieler derselben Welt starten; false, wenn Spieler oder Integration nicht verfügbar sind.
drop_elitemobs_procedural_loot(player, level, location?)table/string, int, table?boolEin prozedurales EliteMobs-Item erzeugen; false bei deaktivierten prozeduralen Drops. Bei aktivierter direkter Inventarlieferung wird es eingefügt und Überlauf am Spieler abgelegt, statt immer an der angeforderten Location.
drop_elitemobs_random_loot(player, level, location?)table/string, int, table?boolDie EliteMobs-Loot-Tabellen für den Spieler auf der angegebenen Stufe auswürfeln.
drop_elitemobs_custom_loot(player, file, level, location?)table/string, string, int, table?boolEine bestimmte EliteMobs-Custom-Item-Datei für den Spieler fallen lassen; gibt false zurück, wenn die Datei nicht aufgelöst wird.

Das Argument player akzeptiert eine Spielertabelle, einen UUID-String oder einen exakten Spielernamen. Das Argument location akzeptiert eine Location-Tabelle oder eine Entity-Tabelle, die current_location mitführt.

em-Hilfstabelle​

MagmaCore stellt diese Tabelle global bereit, bevor irgendein Skript-Hook läuft. Konstruktoren erstellen nur Daten: Sie registrieren keine Zone, laden keine Welt und validieren nicht sämtliche Werte. Konstruktoren und em.location.* benötigen Punktsyntax. Methoden zurückgegebener Locations und Zonen akzeptieren Punkt oder Doppelpunkt, ändern die Tabelle und geben dieselbe Tabelle zurück; Zonen-Setter halten die übergebene Location-Referenz fest.

Eigenschaften​

Die Helfer-Konstruktoren geben die untenstehenden kompakten Datentabellen zurück.

FeldTypBeschreibung
location.xnumberVon em.create_location zurückgegebene X-Koordinate.
location.ynumberVon em.create_location zurückgegebene Y-Koordinate.
location.znumberVon em.create_location zurückgegebene Z-Koordinate.
location.worldstring/nilWeltname, sofern an em.create_location übergeben.
location.yawnumber/nilYaw, sofern an em.create_location übergeben.
location.pitchnumber/nilPitch, sofern an em.create_location übergeben.
vector.xnumberVon em.create_vector zurückgegebene X-Komponente.
vector.ynumberVon em.create_vector zurückgegebene Y-Komponente.
vector.znumberVon em.create_vector zurückgegebene Z-Komponente.
zone.kindstringsphere, dome, cylinder, cuboid, cone, static_ray, rotating_ray oder translating_ray.
zone.radiusnumber/nilRadius von Kugel, Dom, Zylinder oder Kegel.
zone.heightnumber/nilZylinderhöhe.
zone.xnumber/nilX-Größe des Quaders.
zone.ynumber/nilY-Größe des Quaders.
zone.znumber/nilZ-Größe des Quaders.
zone.lengthnumber/nilLänge von Kegel oder Strahl.
zone.thicknessnumber/nilDicke eines statischen Strahls.
zone.point_radiusnumber/nilPunktradius eines rotierenden oder verschiebenden Strahls.
zone.animation_durationnumber/nilAnimationsdauer eines rotierenden oder verschiebenden Strahls.
zone.origintable/nilVon set_center oder set_origin gesetzte Location.
zone.destinationtable/nilVon set_destination gesetzte Location.

Methoden​

MethodeArgumenteRückgabeBeschreibung
em.create_location(x, y, z, world?, yaw?, pitch?)number, number, number, string?, number?, number?tableEine Location-Tabelle zurückgeben.
em.create_vector(x, y, z)number, number, numbertableEine Vektortabelle {x, y, z} zurückgeben.
location.add(dx?=0, dy?=0, dz?=0)number?=0, number?=0, number?=0tableAn Ort und Stelle addieren und dieselbe Location-Tabelle zurückgeben.
em.zone.create_sphere_zone(radius)numbertableEine Kugeldefinition mit set_center(location) zurückgeben.
em.zone.create_dome_zone(radius)numbertableEine Domdefinition mit set_center(location) zurückgeben.
em.zone.create_cylinder_zone(radius, height)number, numbertableEine Zylinderdefinition mit set_center(location) zurückgeben.
em.zone.create_cuboid_zone(x, y, z)number, number, numbertableEine Quaderdefinition mit set_center(location) zurückgeben.
em.zone.create_cone_zone(length, radius)number, numbertableEine Kegeldefinition mit set_origin(location) und set_destination(location) zurückgeben.
em.zone.create_static_ray_zone(length, thickness)number, numbertableEine Definition eines statischen Strahls mit Origin- und Destination-Settern zurückgeben.
em.zone.create_rotating_ray_zone(length, point_radius, animation_duration)number, number, numbertableEine Definition eines rotierenden Strahls mit Origin- und Destination-Settern zurückgeben.
em.zone.create_translating_ray_zone(length, point_radius, animation_duration)number, number, numbertableEine Definition eines verschiebenden Strahls mit Origin- und Destination-Settern zurückgeben.
zone.set_center(location)tabletableDen Mittelpunkt als zone.origin setzen und dieselbe Zonentabelle zurückgeben.
zone.set_origin(location)tabletableDen Ursprung setzen und dieselbe Zonentabelle zurückgeben.
zone.set_destination(location)tabletableDas Ziel setzen und dieselbe Zonentabelle zurückgeben.
em.location.is_in_dungeon(location)tableboolRegistrierte Dungeon-Regionen und Besitzer prüfen, die das Kind dungeon melden.
em.location.is_protected(location)tableboolDie integrierten WorldGuard-/GriefPrevention-Adapter und von Plugins registrierte Schutzbesitzer prüfen.
em.location.owned_by(location, namespace)table, stringboolBesitz durch einen Plugin-Namespace prüfen.
em.location.owners(location)tabletableEin Array mit Besitzer-Namespace-Strings zurückgeben.
em.location.kinds_at(location)tabletableEin Array mit Besitzart-Strings zurückgeben.
em.location.has_kind(location, kind)table, stringboolEine Besitzart prüfen.

em.location.* benötigt eine geladene Welt als Namen oder {name = ...}; es gibt keinen Rückfall auf die Besitzerwelt. Ohne auflösbare Welt liefern die Prüfungen false beziehungsweise leere Arrays, fehlende Koordinaten werden null. Besitzer-Namespaces unterscheiden Groß- und Kleinschreibung, Besitzarten nicht. Besitz allein bedeutet weder Dungeon noch Schutz. Die Abfragen decken registrierte Anbieter ab, nicht automatisch jedes Plugin. Fehler eines abgefragten Regionsadapters gelten als geschützt. Die Reihenfolge der Ergebnisarrays ist nicht festgelegt.

Kontext eines Mind-Programms​

Native Mind-Callbacks verwenden diesen Kontext anstelle des üblichen Power-/NPC-Kontexts. Verhaltensprogramme aus Dateien werden auch aus plugins/EliteMobs/behaviors/ geladen; siehe Boss-Verhaltenskonfiguration. EliteMobs-Integrationen registrieren ai.program- und ai.module-Definitionen über EliteMindService. Das Ablegen dieser Definitionen im gewöhnlichen Verzeichnis powers registriert kein Mind-Programm.

FeldTypBeschreibung
tick, generationnumberAktueller Spieltick und Laufzeitgeneration.
entitytableGemeinsame Living Entity Table des Akteurs.
memory, perception, actuator, actionstableDie folgenden Dienste gelten für den jeweiligen Callback.
MethodeArgumenteRückgabeBeschreibung
memory.get(key)stringvalue/nilEinen deklarierten Speicherschlüssel lesen.
memory.set(key, value, ttl_ticks?)string, value, int?nilEinen deklarierten Speicherwert mit seinem konfigurierten Typ setzen, optional mit Ablaufzeit.
memory.forget(key)stringnilEinen deklarierten Speicherwert entfernen.
memory.contains(key)stringboolPrüfen, ob ein deklarierter Speicherwert vorhanden ist.
perception.current_target()—table/nilDas aktuelle Ziel als gemeinsame Living Entity Table zurückgeben.
perception.nearest_player(radius)numbertable/nilDen nächsten Spieler in Reichweite zurückgeben.
perception.can_see(entity_or_uuid)table/stringboolDie Sichtlinie zu einer lebenden Entity prüfen.
perception.navigation()—tabledestination_active, navigation_in_progress, consecutive_stuck_ticks, optional destination sowie optional last_progress mit tick und position zurückgeben.
actuator.move_to(location, speed?=1)table, number?=1boolNavigation zu einer Position in derselben Welt mit endlicher, positiver Geschwindigkeit anfordern; false, wenn die Wegfindung nicht gestartet wurde.
actuator.stop_moving()—nilDie Navigation stoppen.
actuator.look_at(location)tablenilZu einer Position schauen.
actuator.jump()—nilEinen Sprung anfordern.
actuator.set_target(entity_or_uuid)table/stringboolEin lebendes Ziel setzen; false, wenn es nicht aufgelöst werden kann.
actuator.clear_target()—nilDas Ziel löschen.
actuator.attack(entity_or_uuid)table/stringboolEinen Angriff anfordern; false, wenn das Ziel nicht aufgelöst werden kann.
actuator.stop_all()—nilDie Bewegung, das Ziel und den Angriff stoppen, die von den gehaltenen Steuerungen dieses Verhaltens abgedeckt werden.
actions.request(identifier, payload?)string, table?stringEine semantische Aktion anfordern und ihr Ergebnis in Kleinbuchstaben zurückgeben. Die Nutzdaten unterstützen skalare Werte, Entity-UUID-Tabellen und Positionstabellen mit world/x/y/z.

Diensttabellen werden je Callback beim ersten Zugriff aufgebaut und innerhalb dieses Callbacks wiederverwendet. Speicherschlüssel müssen deklariert sein; nicht deklarierte Schlüssel lösen Fehler aus. Ein erfolgreiches actuator.set_target oder actuator.attack bedeutet, dass ein lebendes Ziel aufgelöst und die Anfrage weitergeleitet wurde, nicht dass Navigation oder Angriff abgeschlossen sind. Aktionsnutzdaten unterstützen die beschriebenen skalaren oder Entity-/Positionswerte, keine beliebig verschachtelten Lua-Tabellen. Aktionskennungen müssen kleingeschriebene Schlüssel mit Namespace und höchstens 128 Zeichen sein; Nutzdaten enthalten höchstens 16 Einträge mit kleingeschriebenen Schlüsseln von höchstens 64 Zeichen, und String-Werte sind auf 256 Zeichen begrenzt. Jede Aktuator-Methode außer stop_all sowie actions.request löst einen Fehler aus, wenn das aufrufende Verhalten die passende Steuerung nicht hält. Sensoren können Aktuator und Aktionen überhaupt nicht verwenden. In Lua geschriebene Verhaltensprogramme sind unter Verhaltensprogramme beschrieben.

ai-Global​

MagmaCore installiert dieses Global in jeder Lua-Umgebung. Die Konstruktoren markieren nur die Tabelle, die sie erhalten; EliteMobs kompiliert die markierten Tabellen aus Dateien von Verhaltensprogrammen.

FeldTypBeschreibung
ai.controls.move, look, jump, target, attack, use_item, actionstringSteuerungsnamen für das Array controls eines Verhaltens; für use_item gibt es keine Lua-Aktuator-Methode.
MethodeArgumenteRückgabeBeschreibung
ai.program(definition)tabletableEine Programmdefinition mit id, revision und optional modules, memories, sensors, behaviors, budget und runaway markieren.
ai.module(definition)tabletableEine Moduldefinition mit id, revision und optional dependencies, memories, sensors und behaviors markieren.
ai.sensor(definition)tabletableEinen Sensor mit id, interval?=1 und sense(c) markieren.
ai.behavior(definition)tabletableEin Verhalten mit id, priority?=0, controls, can_start, can_continue, start, tick und stop(c, reason) markieren.

context.mind_action: EliteMobs-Power-Hook​

Während on_mind_action(context) verfügbar. Der Hook gibt "accepted", "deferred" oder "rejected" zurück. Zugewiesene Powers werden in ihrer Zuweisungsreihenfolge besucht, bis eine die Aktion annimmt.

FeldTypBeschreibung
keystringSemantische Aktionskennung mit Namespace.
payloadtableVeränderbare Lua-Kopie der unveränderlichen Java-Aktionsanfrage; Entity-UUIDs sind Strings, Positionen Tabellen. Änderungen ändern nicht die ursprüngliche Anfrage.
game_tick, generationnumberAktionstick und Laufzeitgeneration.

context.state​

Jede MagmaCore-Skriptinstanz erhält eine einfache Lua-Tabelle, die für die Lebensdauer dieser Instanz bestehen bleibt. Verwende sie für Zähler, Flags, Task-IDs und Werte, die zwischen Hooks geteilt werden.

context.state.counter = (context.state.counter or 0) + 1

context.log​

Methoden für MagmaCore, FreeMinecraftModels und EliteMobs-NPCs​

MethodeArgumenteRückgabeBeschreibung
info(message)stringnilEine Informationsmeldung mit dem gemeinsamen Lua-Präfix protokollieren.
warn(message)stringnilEine Warnung protokollieren.
error(message)stringnilÜber den gemeinsamen Warnkanal protokollieren.

Methoden für EliteMobs-Boss-Powers​

MethodeArgumenteRückgabeBeschreibung
info(message)stringnilEine Informationsmeldung einer Boss-Power protokollieren.
warn(message)stringnilEine Warnung protokollieren.
debug(message)stringnilEine Informationsmeldung mit dem Debug-Präfix der Lua-Power protokollieren.

context.scheduler​

Geplante Tasks gehören zur Skriptinstanz und werden abgebrochen, wenn diese heruntergefahren wird. Beide untenstehenden Namensfamilien stehen auf den gemeinsamen MagmaCore-Oberflächen und bei EliteMobs-Boss-Powers zur Verfügung.

MethodeArgumenteRückgabeBeschreibung
run_later(ticks, callback)int, functionintNach der Verzögerung einmal ausführen und die Bukkit-Task-ID zurückgeben.
run_repeating(delay, interval, callback)int, int, functionintNach einer anfänglichen Verzögerung wiederholt ausführen und die Task-ID zurückgeben.
cancel(task_id)intnilEinen eigenen Task abbrechen.
run_after(ticks, callback)int, functionintAlias für run_later.
run_every(interval, callback)int, functionintOhne anfängliche Verzögerung wiederholt ausführen und die Task-ID zurückgeben.
cancel_task(task_id)intnilAlias für cancel.

Callbacks erhalten einen neuen Kontext, normalerweise ohne Event oder Spieler. Erfasse benötigte Werte oder UUIDs, statt einen alten Kontext mit verzögert aufgelösten Feldern aufzubewahren. Fällige einmalige Tasks warten während einer Pause; wiederholte Tasks überspringen pausierte Ticks ohne Nachholen. Callback-Fehler schließen die Skriptinstanz. Das Abbrechen eigener Tasks nimmt keine beliebigen Welt-/Entity-Änderungen oder separat geplanten UI-Timer zurück.

context.cooldowns​

Der lokale Speicher gehört zum ScriptableEntity-Adapter: FreeMinecraftModels erstellt einen Adapter je Prop-Skript, EliteMobs dagegen einen NPC-Adapter für alle angehängten Skripte. Benannte lokale Schlüssel können daher zwischen Skripten desselben NPC kollidieren. Globale Werte werden innerhalb desselben Props oder NPC geteilt. Ohne lokalen Schlüssel gilt __lua: gefolgt vom Skriptdateinamen; benannte Schlüssel werden exakt verwendet. Boss-Powers teilen den lokalen Speicher des Bosses und seinen integrierten globalen Power-Cooldown.

Gemeinsame lokale/globale Cooldowns und lokale Boss-Cooldowns messen echte verstrichene Zeit mit 50 ms pro angefordertem Tick, auch während Pausen oder niedriger TPS. Globale Boss-Cooldowns zählen dagegen Server-Ticks und behalten den späteren Ablauf: Ein kürzeres set_global verkürzt nie einen aktiven globalen Cooldown, und eine nicht positive Dauer bewirkt nichts. Lokale Prüfungen prüfen nicht automatisch den globalen Cooldown.

MethodeArgumenteRückgabeBeschreibung
local_ready(key?)string?boolPrüfen, ob der über den Schlüssel adressierte lokale Cooldown bereit ist.
local_remaining(key?)string?intDie verbleibenden Ticks zurückgeben, oder 0, wenn bereit.
check_local(key, duration)string/nil, intboolWenn bereit, den Cooldown starten und true zurückgeben. Übergib nil für den Standardschlüssel.
set_local(duration, key?)int, string?nilDen lokalen Cooldown setzen oder löschen; eine nicht positive Dauer löscht ihn.
global_ready()—boolPrüfen, ob der globale Cooldown des Besitzers bereit ist.
set_global(duration)intnilDen globalen Cooldown in Ticks setzen. Auf den gemeinsamen MagmaCore-Oberflächen löscht ihn eine nicht positive Dauer.

context.zones: gemeinsame MagmaCore-Oberfläche​

FreeMinecraftModels-Skripte, EliteMobs-NPC-Skripte und andere Standard-MagmaCore-Consumer erhalten ganzzahlige Zonen-Handles in der Welt des aktuellen Skriptbesitzers.

MethodeArgumenteRückgabeBeschreibung
create_sphere(x, y, z, radius)number, number, number, numberint/nilEine Kugel registrieren und ihr Handle zurückgeben, oder nil, wenn der Besitzer keine Welt hat.
create_cylinder(x, y, z, radius, height)number, number, number, number, numberint/nilEinen Zylinder registrieren und sein Handle zurückgeben, oder nil, wenn der Besitzer keine Welt hat.
create_cuboid(x, y, z, x_size, y_size, z_size)number, number, number, number, number, numberint/nilEinen Quader registrieren und sein Handle zurückgeben, oder nil, wenn der Besitzer keine Welt hat.
watch(handle, on_enter?, on_leave?)int, function?, function?bool/nilDie Grenzverfolgung für ein bekanntes Handle aktivieren. Das Vorhandensein einer Funktion aktiviert den zugehörigen Hook on_zone_enter bzw. on_zone_leave; der übergebene Funktionsrumpf wird nicht direkt aufgerufen.
unwatch(handle)intnilDie Verfolgung stoppen und das Handle entfernen.

Generische Zonenüberwachungen prüfen Spielerpositionspunkte. In diesem Pfad sind Quadergrößen halbe Ausdehnungen (Z gleich null wird durch X ungleich null ersetzt); daraus ergibt sich nicht dasselbe Volumen wie bei EliteMobs-Abfragen über Entity-Überlappung oder abgetastete Positionen. Zonen behalten ihre Erstellungskoordinaten und Welt, während jeder Tick die Spieler der aktuellen Besitzerwelt prüft. Generische Zonen-Hooks stellen den die Grenze überschreitenden Spieler über context.player und context.event.player bereit.

Die Mitgliedschaftsverfolgung beginnt sofort bei der Erstellung, bevor watch Hook-Dispatcher installiert. Ein später installierter Watcher meldet bereits erfasste Spieler innerhalb der Zone nicht als neue Eintritte. Ein beim zweiten watch-Aufruf ausgelassener Callback entfernt keinen bestehenden Dispatcher. Trennen der Verbindung und unwatch garantieren keinen Austritts-Hook. Zonen werden vor on_game_tick geprüft.

context.event: gemeinsame MagmaCore-Oberfläche​

Diese Tabelle existiert, solange ein gemeinsamer Hook ein aktuelles Bukkit-Event oder einen Akteur hat. In geplanten Callbacks und in Hooks ohne einen dieser beiden Werte fehlt sie.

Feld oder MethodeTypBeschreibung
is_cancelledboolAbbruchzustand beim ersten Auflösen der Event-Untertabelle; ein Aufruf von cancel() oder uncancel() aktualisiert dieses Feld nicht.
cancel()methodDas aktuelle Event abbrechen. Nur vorhanden, wenn es Bukkits Cancellable implementiert.
uncancel()methodDen Abbruch des aktuellen Events zurücknehmen. Nur vorhanden, wenn es Bukkits Cancellable implementiert.
playertableLiving Entity Table für den aktuellen Akteur, sofern einer verfügbar ist.

Generische Zonen-Hooks liefern einen Akteur, aber kein abbrechbares Bukkit-Event, daher stellen sie is_cancelled = false und player ohne cancel() oder uncancel() bereit.

context.item​

Verzauberungs-Aktionsskripte stellen diese Tabelle bereit, wenn ihre erfasste Quelle einen Inventarplatz und ein Item besitzt. Sie adressiert genau diesen Platz und vergleicht Material und Metadaten des aktuellen Items mit der Momentaufnahme; Schaden und Stapelmenge bleiben dabei unberücksichtigt. Sie durchsucht weder das Spielerinventar noch verfolgt sie eine eindeutige Item-Identität: Ein gleichwertiger Ersatz am erfassten Platz passt ebenfalls. Bei verbrauchter Munition kann sie nil sein. Dies ist unabhängig von der eingestellten FreeMinecraftModels-Laufzeit für ausgerüstete Items.

MethodeArgumenteRückgabeBeschreibung
get_durability()—table/nilVerbleibende Haltbarkeit {current, max}; nil bei nicht verfügbaren Items oder Items ohne Haltbarkeit.
get_durability_percentage()—number/nilVerbleibende Haltbarkeit geteilt durch das Materialmaximum; normalerweise 0..1, bei extern überhöhtem Metadatenschaden auch außerhalb dieses Bereichs.
use_durability(amount, can_break?=false)int, bool?boolSchaden ändern; negative Werte reparieren. Standardmäßig bleibt mindestens eine Haltbarkeitseinheit erhalten; can_break=true kann den Stapel verbrauchen.
use_durability_percentage(fraction, can_break?=false)number, bool?boolceil(max_durability * fraction) Schaden mit denselben Regeln zum Zerbrechen anwenden.
consume(amount)positive intboolNur dann vom erfassten Stapel verbrauchen, wenn genügend Items übrig sind.

Haltbarkeit verwendet das Materialmaximum, keine eigene Max-Damage-Komponente. Diese direkten Änderungen berücksichtigen weder Vanilla-Verschleiß, Unbreaking, Unzerbrechlichkeit noch Spieler-Item-Schadensereignisse. Prozentuale Änderungen benötigen endliche Werte und ein Ergebnis im Integer-Bereich; negative Anteile reparieren. Zerbrechen verbraucht den gesamten erfassten Stapel. Den Aktionslebenszyklus und den vollständigen Kontext findest du unter eigene Verzauberungen.

context.prop​

FreeMinecraftModels-Prop-Skripte erhalten diese Tabelle, die die MagmaCore-Entity-Tabelle erbt, sofern eine zugrunde liegende Entity existiert.

Eigenschaften​

FeldTypBeschreibung
model_idstring/nilName des Modell-Blueprints, oder nil, wenn kein Blueprint existiert.
current_locationtable/nilAktuelle Position des Props.

Methoden​

MethodeArgumenteRückgabeBeschreibung
play_animation(name, blend?=true, loop?=true)string, bool?=true, bool?=trueboolDie genannte Animation abspielen.
stop_animation()—nilEingereihte Wiedergabe löschen und, falls verfügbar, zur Idle-Animation zurückkehren; der endgültige Todeszustand bleibt unverändert.
hurt_visual()—nilDen roten Trefferblitz ohne Schaden abspielen.
pickup()—nilDauerhaftes Entfernen einreihen und ein Platzierungs-Item fallen lassen.
has_mount_points()—boolPrüfen, ob das Prop Mount-Point-Bones hat.
mount(player)tableboolDas Aufsitzen eines aufgelösten Spielers auf dem ersten freien Sitz einreihen.
dismount(player)tableboolDas Absteigen eines aufgelösten Spielers von diesem Prop einreihen.
get_passengers()—tableEntity-Tabellen der aufgesessenen Spieler zurückgeben.
spawn_elitemobs_boss(file, x, y, z)string, number, number, numbertable/nilEinen EliteMobs-Custom-Boss spawnen, wenn EliteMobs aktiviert ist.
open_inventory(player, title, rows?=3)table, string, int?=3boolDas Öffnen eines persistenten Lagers einreihen, mit auf 1 bis 6 begrenzten Reihen.
place_book(player)tableboolDas Ablegen eines gehaltenen beschriebenen oder beschreibbaren Buchs einreihen, wenn das Prop keines hat.
read_book(player)tableboolDas Öffnen eines abgelegten beschriebenen Buchs einreihen.
take_book(player)tableboolDas Zurückgeben des abgelegten Buchs an den Spieler einreihen.
has_book()—boolPrüfen, ob das Prop ein Buch aufbewahrt.
drop_inventory()—boolDas Leeren des persistenten Lagers und das Fallenlassen seiner Items einreihen.
drop_book()—boolDas Leeren und Fallenlassen des abgelegten Buchs einreihen.
is_viewing_inventory(player)tableboolPrüfen, ob der Spieler das verfolgte Inventar dieses Props ansieht.
set_persistent_data(key, value)string, stringboolEinen String unter dem prop-bezogenen fmm_lua_-Schlüssel speichern.
get_persistent_data(key)stringstring/nilDen gespeicherten String zurückgeben, oder nil.

Bei eingereihten Prop-Operationen bedeutet true, dass die anfänglichen Spieler-/Entity-Prüfungen bestanden wurden, nicht dass ein Sitz frei war, ein Buch gespeichert oder ein GUI geöffnet wurde. take_book entfernt die gespeicherten Daten vor dem Einfügen und legt Inventarüberlauf nicht ab. Alle Betrachter eines Props teilen sich ein einziges Live-Inventar, das gespeichert wird, wenn der letzte Betrachter es schließt; solange es geöffnet ist, verwenden spätere Aufrufe seinen Titel und seine Größe weiter. Gespeicherte Inhalte, die größer sind als die angeforderten Zeilen, öffnen sich in ihrer gespeicherten Größe, sodass keine Slots verloren gehen. Prop-Daten liegen auf dem zugrunde liegenden Armor Stand; ein neu erzeugtes Platzierungs-Item garantiert keinen Erhalt dieser Daten beim Aufheben.

In on_projectile_hit erhalten Prop-Skripte außerdem context.projectile, eine gemeinsame Entity Table für das Projektil. Der Hook wird nicht ausgelöst, wenn ein anderes Plugin den Treffer bereits abgebrochen hat. context.event umschließt das abbrechbare Treffer-Event von FreeMinecraftModels, und context.event.player ist der Schütze, sofern er eine lebende Entity ist, auch bei Mobs; context.player ist nur gesetzt, wenn ein Spieler das Projektil abgefeuert hat.

context.npc​

EliteMobs-NPC-Skripte erben die gemeinsamen MagmaCore-Kontexte und ergänzen diese NPC-spezifische Tabelle.

Eigenschaften​

FeldTypBeschreibung
namestringKonfigurierter NPC-Anzeigename.
filenamestringDateiname der NPC-Konfiguration.
uuidstringLaufzeit-UUID des NPCs.
activation_radiusnumberKonfigurierter Aktivierungsradius.
current_locationtableMomentaufnahme der Position, nur vorhanden, solange die zugrunde liegende lebende Entity existiert.
entity_typestringBukkit-Entity-Typ in Großbuchstaben, nur vorhanden, solange die zugrunde liegende lebende Entity existiert.

Methoden​

MethodeArgumenteRückgabeBeschreibung
is_valid()—boolPrüfen, ob der NPC gültig ist.
remove()—nilDen NPC über seinen zuständigen Lebenszyklus entfernen.
get_location()—tableDie aktuelle NPC-Position zurückgeben, ersatzweise seine Spawn-Position. Die Tabelle enthält außerdem einen direction-Vektor.
get_eye_location()—tableDie aktuelle Augenposition zurückgeben, ersatzweise die Spawn-Position. Die Tabelle enthält außerdem einen direction-Vektor.
get_activation_radius()—numberDen aktuell konfigurierten Aktivierungsradius zurückgeben.
get_nearby_players(radius)numbertableSpielertabellen derselben Welt innerhalb eines 3D-Radius um die Füße des NPC zurückgeben, ohne Spielmodusfilter.
face_direction_or_location(target)tablenilZu einem Vektor oder einer Location derselben Welt schauen; während aktiver Patrouillenbewegung ignoriert.
say_greeting(player?)table/string?nilDie konfigurierte Begrüßung senden, standardmäßig an den auslösenden Spieler, sofern verfügbar. Eine Spielertabelle, UUID oder ein Name werden akzeptiert.
say_dialog(player?)table/string?nilKonfigurierten Dialog mit derselben Spielerauflösung senden.
say_farewell(player?)table/string?nilDie konfigurierte Verabschiedung mit derselben Spielerauflösung senden.
play_model_animation(name)stringnilEine Modellanimation abspielen, wenn ein Custom Model existiert.
patrol_pause()—boolDie konfigurierte Patrouille pausieren.
patrol_resume()—boolDie Patrouille nach Skript-Halt oder temporärem Lauf fortsetzen.
walk_to(x, y, z)number, number, numberboolZu einem Versatz vom festgelegten Ursprung laufen und anschließend die Patrouille fortsetzen.
hold(x, y, z)number, number, numberboolZu einem Versatz vom festgelegten Ursprung laufen und dort bleiben.
teleport(x, y, z)number, number, numberboolZu einem Versatz vom festgelegten Ursprung teleportieren, an dem Entities getickt werden.

Location-Tabelle für EliteMobs-Powers​

Tabellen von EliteMobs-Boss-Powers geben diese Positionsform aus get_location(), get_eye_location(), current_location und anderen Positionsergebnissen zurück. Eine fehlende Position liefert eine leere Tabelle.

Eigenschaften​

FeldTypBeschreibung
x, y, znumberKoordinaten.
yaw, pitchnumberRotation.
worldstring/nilWeltname, sofern die Position eine Welt hat.
directiontableEinheitsvektor {x, y, z} der Blickrichtung.

Methoden​

MethodeArgumenteRückgabeBeschreibung
add(dx?=0, dy?=0, dz?=0)number?=0, number?=0, number?=0tableDie Werte direkt zu den Koordinaten addieren und dieselbe Tabelle zurückgeben; direction wird nicht aktualisiert.

Entity-Referenztabelle für EliteMobs-Powers​

EliteMobs-Boss-Power-Methoden geben diese leichtgewichtige Tabelle für nicht lebende Entities wie Projektile, Feuerwerke und fallende Blöcke zurück.

Eigenschaften​

FeldTypBeschreibung
namestringMomentaufnahme des Entity-Namens.
uuidstringUUID der Entity.
entity_typestringMomentaufnahme des Bukkit-Entity-Typs in Großbuchstaben.
is_playerboolImmer false.
is_eliteboolImmer false.
is_mountboolFalse, sofern ein Boss eine zurückgegebene Mount-Tabelle nicht als true markiert.
current_locationtableMomentaufnahme der Position.

Methoden​

MethodeArgumenteRückgabeBeschreibung
is_valid()—boolDie aktuelle Gültigkeit prüfen.
get_location()—tableDie aktuelle Position zurückgeben.
get_velocity()—tableDie aktuelle Geschwindigkeit zurückgeben.
is_on_ground()—boolDen aktuellen Bodenkontakt prüfen.
teleport_to_location(location)tablenilTeleportieren, wenn die Location aufgelöst wird.
set_velocity_vector(vector)tablenilDie Geschwindigkeit setzen, wenn der Vektor aufgelöst wird.
set_direction_vector(vector)tablenilEine Feuerball-Richtung setzen, sofern anwendbar.
set_yield(amount)numbernilDie Feuerball-Sprengkraft setzen, sofern anwendbar.
set_gravity(enabled)boolnilDie Schwerkraft setzen.
detonate()—nilZünden, wenn die Entity ein Feuerwerk ist.
remove()—nilDie Entity entfernen.
unregister(reason?=OTHER)string?=OTHERnilMit DEATH, PHASE_BOSS_RESET, PHASE_BOSS_PHASE_END, CHUNK_UNLOAD, WORLD_UNLOAD, SHUTDOWN, EFFECT_TIMEOUT, BOSS_TIMEOUT, NPC_TIMEOUT, OTHER, UNSPECIFIED_WATCHDOG_REMOVAL, REMOVE_COMMAND, KILL_COMMAND, REINFORCEMENT_CULL, ENTITY_REPLACEMENT oder ARENA_RESET abmelden.
is_inside_vehicle()—boolPrüfen, ob die Entity ein Fahrzeug reitet.
has_vehicle()—boolPrüfen, ob ein Fahrzeug existiert.
get_vehicle()—table/nilDie aktuelle Fahrzeugreferenz zurückgeben.
set_vehicle(vehicle)tableboolDiese Entity das aufgelöste Fahrzeug reiten lassen.
leave_vehicle()—boolDas aktuelle Fahrzeug verlassen.
has_passengers()—boolPrüfen, ob Passagiere existieren.
get_passenger_count()—intDie Passagieranzahl zurückgeben.
get_passengers()—tablePassagierreferenzen zurückgeben.
add_passenger(passenger)tableboolDen aufgelösten Passagier hinzufügen.
remove_passenger(passenger)tableboolDen aufgelösten Passagier entfernen.
eject_passengers()—boolJeden Passagier abwerfen.

Tabelle für lebende Entities in EliteMobs-Powers​

Lebende Entities in EliteMobs-Boss-Powers nutzen diese separate Tabelle; die Boss- und Spielertabellen der EliteMobs-Powers erben von ihr.

Eigenschaften​

FeldTypBeschreibung
namestringMomentaufnahme des Entity-Namens.
uuidstringUUID der Entity.
entity_typestringMomentaufnahme des Bukkit-Entity-Typs in Großbuchstaben.
is_playerboolOb die Entity ein Spieler ist.
is_monsterboolOb die Entity das Bukkit-Interface Monster implementiert.
is_eliteboolOb EliteMobs die Entity verfolgt.
is_mountboolOb der verfolgte Custom Boss ein Reittier ist.
is_validboolMomentaufnahme der Gültigkeit.
healthnumberMomentaufnahme der Gesundheit.
maximum_healthnumberMomentaufnahme der maximalen Gesundheit.
current_locationtableMomentaufnahme der Position.

Methoden​

MethodeArgumenteRückgabeBeschreibung
is_alive()—boolAktuelle Gültigkeit und Todeszustand prüfen.
is_ai_enabled()—boolDen aktuellen KI-Zustand zurückgeben.
is_frozen()—boolDie Frozen-Einstellung des EliteMobs-Custom-Bosses zurückgeben, oder false.
get_location()—tableDie aktuelle Position zurückgeben.
get_eye_location()—tableDie aktuelle Augenposition zurückgeben.
get_height()—numberDie Bukkit-Entity-Höhe zurückgeben.
get_health()—numberDie aktuelle Gesundheit zurückgeben.
get_maximum_health()—numberDie aktuelle maximale Gesundheit zurückgeben.
get_velocity()—tableDie aktuelle Geschwindigkeit zurückgeben.
deal_damage(amount)numbernilGenerischen Bukkit-Schaden zufügen.
deal_custom_damage(amount)numbernilRohen Custom-Schaden vom Boss für ein lebendes Ziel einreichen; überspringt den Boss selbst, unverwundbare oder tote Ziele sowie Spieler außerhalb von Survival/Adventure. Instanzregeln und Schadensereignis-Abbruch gelten weiterhin.
deal_damage_from_boss(amount)numbernilBukkit-Schaden zufügen, der dem Boss der Power zugerechnet wird.
restore_health(amount)numbernilÜber EliteMobs heilen, wenn verfolgt, andernfalls die Bukkit-Gesundheit auf das Maximum begrenzen.
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1)string (Sound), number/table?=1, number?=1nilEinen registrierten oder benutzerdefinierten Namespace-Sound an der Entity abspielen. Das zweite Argument darf stattdessen {volume, pitch} sein.
play_sound_at_self(sound, volume_or_options?=1, pitch?=1)string (Sound), number/table?=1, number?=1nilAlias, der an der Entity abspielt. Das zweite Argument darf stattdessen {volume, pitch} sein.
spawn_particle_at_self(particle, count?=1)string (Particle)/table, int?=1nilEinen Partikel-String oder eine Partikel-Spezifikationstabelle an der Entity spawnen.
spawn_particles_at_location(location, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0)table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0nilEin Partikel an einer Location spawnen.
teleport_to_location(location)tablenilTeleportieren, wenn die Location aufgelöst wird.
set_velocity_vector(vector)tablenilDie Geschwindigkeit setzen, wenn der Vektor aufgelöst wird.
set_gravity(enabled)boolnilDie Schwerkraft setzen.
is_on_ground()—boolDen aktuellen Bodenkontakt prüfen.
apply_push_vector(vector, additive?=false, delay?=1)table, bool?=false, int?=1nilNach einer Verzögerung Geschwindigkeit anwenden, optional additiv zur aktuellen Geschwindigkeit.
set_custom_name(name)stringnilEinen farbverarbeiteten benutzerdefinierten Namen setzen.
reset_custom_name()—nilDen EliteMobs-Namen wiederherstellen, wenn verfolgt, andernfalls den Bukkit-Namen.
set_custom_name_visible(visible)boolnilDie Sichtbarkeit des benutzerdefinierten Namens setzen.
set_ai_enabled(enabled, duration?=0)bool, int?=0nilDie KI als eigene Änderung setzen; positive Ticks stellen den ersetzten Wert wieder her. true beendet eine aktive KI-Änderung dieser Power, falls vorhanden, statt einen neuen Wert anzuwenden.
set_awareness_enabled(enabled, duration?=0)bool, int?=0nilDie Wahrnehmung des Mobs als eigene Änderung setzen; positive Ticks stellen den ersetzten Wert wieder her. true beendet eine aktive Wahrnehmungsänderung dieser Power, falls vorhanden, statt einen neuen Wert anzuwenden.
face_direction_or_location(target)tablenilZu einem Vektor oder einer Location in derselben Welt blicken.
play_model_animation(name)stringnilEine Custom-Model-Animation abspielen, sofern verfügbar.
set_scale(scale, duration?=0)number, int?=0nilDie Basisskalierung als eigene Änderung setzen; positive Ticks stellen den ersetzten Wert wieder her.
set_invulnerable(enabled, duration?=0)bool, int?=0nilUnverwundbarkeit als eigene Änderung setzen; positive Ticks stellen den ersetzten Wert wieder her.
remove_elite()—nilEinen verfolgten Elite über die EliteMobs-Entfernungspipeline entfernen.
is_healing()—boolDen Heilungszustand des verfolgten Elites prüfen.
set_healing(enabled)boolniltrue markiert einen verfolgten Elite als heilend, sofern er es noch nicht ist; false entfernt nur eine Heilung, die diese Power gesetzt hat. Beim Beenden der Power wird eine Heilung entfernt, die ihr noch gehört.
navigate_to_location(location, speed?=1, force?=false, timeout?=0)table, number?=1, bool?=false, int?=0nilEinen verfolgten Custom Boss navigieren lassen.
add_tag(tag, duration?=0)string, int?=0nilEin Tag hinzufügen und es nach positiven Ticks entfernen.
remove_tag(tag)stringnilEin Tag entfernen.
has_tag(tag)stringboolEin Entity-, Elite- oder Spieler-Tag prüfen.
push_relative_to(location, force?=1, extra_x?=0, extra_y?=0, extra_z?=0)table, number?=1, number?=0, number?=0, number?=0nilGeschwindigkeit sofort durch den normalisierten Vektor von der Quelle weg mal Kraft plus Offsets entlang der Weltachsen ersetzen. Die Quelle muss in derselben Welt liegen.
overlaps_box_at_location(center, half_x?=0.5, half_y?=half_x, half_z?=half_x)table, number?=0.5, number?, number?boolDie Bounding Box der Entity gegen die angeforderte Box prüfen.
is_inside_vehicle()—boolPrüfen, ob die Entity ein Fahrzeug reitet.
has_vehicle()—boolPrüfen, ob ein Fahrzeug existiert.
get_vehicle()—table/nilDie aktuelle Fahrzeugreferenz zurückgeben.
set_vehicle(vehicle)tableboolDiese Entity das aufgelöste Fahrzeug reiten lassen.
leave_vehicle()—boolDas aktuelle Fahrzeug verlassen.
has_passengers()—boolPrüfen, ob Passagiere existieren.
get_passenger_count()—intDie Passagieranzahl zurückgeben.
get_passengers()—tablePassagierreferenzen zurückgeben.
add_passenger(passenger)tableboolDen aufgelösten Passagier hinzufügen.
remove_passenger(passenger)tableboolDen aufgelösten Passagier entfernen.
eject_passengers()—boolJeden Passagier abwerfen.
apply_potion_effect(type, duration, amplifier?=0)string (PotionEffectType), int, int?=0nilEinen großgeschriebenen Bukkit-Tranknamen auflösen und bei erlaubter Instanzregel anwenden. Verstärker beginnen bei null.
set_equipment(slot, material, options?)string (EquipmentSlot), string (Material), table?nilAusrüstung setzen; die Optionen unterstützen unbreakable sowie enchantments-Einträge mit type und level.
damage_equipment(slot, amount)string, intint1–64 Haltbarkeitsschaden für HAND, OFF_HAND, HEAD, CHEST, LEGS oder FEET anfordern; gibt den tatsächlich angewandten Schaden zurück. Beachtet abgebrochene Spieler-Item-Schadensereignisse und unzerstörbare Items; kann das Item zerstören.
set_fire_ticks(ticks)intnilFeuer-Ticks setzen, wenn die Instanzregeln es erlauben.
add_visual_freeze_ticks(ticks?=1)int?=1nilMinecraft-Frost-Ticks hinzufügen, wenn die Instanzregeln es erlauben; kann Erfrierungsschaden verursachen und sperrt weder KI noch Bewegung.
place_temporary_block(material, ticks?=0, require_air?=false)string (Material), int?=0, bool?=falsenilEinen temporären Block an der Entity platzieren.

Änderungen an KI, Wahrnehmung, Skalierung und Unverwundbarkeit gehören der aufrufenden Power. Jede speichert den Wert, den sie ersetzt hat. Eine positive Dauer stellt diesen Wert nach den angegebenen Ticks wieder her; eine Dauer von 0 behält die Änderung bei, bis die Power beendet wird, was den Wert ebenfalls wiederherstellt. Ändern mehrere Powers dieselbe Eigenschaft, stellt das Ende einer Änderung die jüngste verbleibende Änderung wieder her oder, wenn keine mehr übrig ist, den ursprünglichen Wert. Ändert zwischenzeitlich ein anderes Plugin oder ein Befehl die Eigenschaft, bleibt dessen Wert erhalten, und nichts wird wiederhergestellt. Das Pausieren einer Power beendet diese Änderungen nicht. Verzögertes apply_push_vector und Timer zur Tag-Entfernung laufen weiterhin unabhängig vom skripteigenen Scheduler. reset_custom_name stellt bei verfolgten Elites deren Namen wieder her; bei gewöhnlichen Bukkit-Entities verwendet es den aktuellen Namen, keinen gespeicherten ursprünglichen Namen.

Spielertabelle für EliteMobs-Powers​

Spielerwerte in EliteMobs-Boss-Powers erben alle Eigenschaften und Methoden der Tabelle für lebende Entities in EliteMobs-Powers.

Eigenschaften​

FeldTypBeschreibung
game_modestringMomentaufnahme des Bukkit-Spielmodus in Großbuchstaben.

Methoden​

MethodeArgumenteRückgabeBeschreibung
send_message(text)stringnilFarbverarbeiteten Chattext senden.
show_action_bar(text)stringnilEine farbverarbeitete Action Bar senden.
show_title(title, subtitle?="", fade_in?=10, stay?=40, fade_out?=10)string, string?="", int?=10, int?=40, int?=10nilEinen farbverarbeiteten Titel anzeigen.
show_boss_bar(title, color?=WHITE, style?=SOLID, duration?=40)string, string (BarColor)?=WHITE, string (BarStyle)?=SOLID, int?=40nilEine Bossleiste anzeigen und sie nach positiven Ticks entfernen.
run_command(command)stringnilEinen Befehl als der Spieler ausführen.

context.boss​

EliteMobs-Boss-Powers erhalten diese Tabelle. Sie erbt alle Eigenschaften und Methoden der Tabelle für lebende Entities in EliteMobs-Powers und überschreibt die hier aufgeführten Zeilen mit dem Verhalten für Elites.

Eigenschaften​

FeldTypBeschreibung
namestringMomentaufnahme des Elite-Anzeigenamens oder des Skriptdateinamens.
uuidstringUUID des Elites.
healthnumberMomentaufnahme der Elite-Gesundheit.
maximum_healthnumberMomentaufnahme der maximalen Elite-Gesundheit.
current_locationtableMomentaufnahme der Elite-Position.
levelintMomentaufnahme der Elite-Stufe.
damager_countintMomentaufnahme der Anzahl der Schadensverursacher.
is_in_combatboolMomentaufnahme des Kampfzustands.
existsboolMomentaufnahme der Existenz des Elites.

Methoden​

MethodeArgumenteRückgabeBeschreibung
is_alive()—boolDie lebende Entity und den EliteMobs-Existenzzustand prüfen.
get_health()—numberDie aktuelle Elite-Gesundheit zurückgeben.
get_maximum_health()—numberDie aktuelle maximale Elite-Gesundheit zurückgeben.
get_location()—tableDie aktuelle Elite-Position zurückgeben.
restore_health(amount)numbernilÜber die EliteMobs-Entity heilen.
add_tag(tag, duration?=0)string, int?=0nilEin Elite-Tag hinzufügen und es nach positiven Ticks entfernen.
remove_tag(tag)stringnilEin Elite-Tag entfernen.
has_tag(tag)stringboolEin Elite-Tag prüfen.
reset_custom_name()—nilDen Elite-Anzeigenamen wiederherstellen.
play_sound_at_self(sound, volume_or_options?=1, pitch?=1)string (Sound), number/table?=1, number?=1nilEinen registrierten oder benutzerdefinierten Namespace-Sound an der Elite-Position abspielen. Das zweite Argument darf stattdessen {volume, pitch} sein.
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1)string (Sound), number/table?=1, number?=1nilAlias, der an der Elite-Position abspielt. Das zweite Argument darf stattdessen {volume, pitch} sein.
spawn_particle_at_self(particle, count?=1)string (Particle)/table, int?=1nilEin Partikel an der Elite-Position spawnen.
play_model_animation(name)stringnilDie Modellanimation des Custom Bosses abspielen, sofern verfügbar.
navigate_to_location(location, speed?=1, force?=false, timeout?=0)table, number?=1, bool?=false, int?=0nilEinen Custom Boss navigieren lassen.
get_damager_count()—intDie aktuelle Anzahl der Schadensverursacher zurückgeben.
despawn()—nilDen Elite mit dem Grund OTHER entfernen.
remove()—nilAlias für despawn().
patrol_pause()—boolDie konfigurierte Patrouille pausieren.
patrol_resume()—boolDie Patrouille nach Skript-Halt oder temporärem Lauf fortsetzen.
walk_to(x, y, z)number, number, numberboolZu einem Versatz vom festgelegten Ursprung laufen und anschließend die Patrouille fortsetzen.
hold(x, y, z)number, number, numberboolZu einem Versatz vom festgelegten Ursprung laufen und dort bleiben.
teleport(x, y, z)number, number, numberboolZu einem Versatz vom festgelegten Ursprung teleportieren, an dem Entities getickt werden.
get_ender_dragon_phase()—string/nilDen Namen der EnderDragon.Phase zurückgeben, oder nil.
set_ender_dragon_phase(phase)string (EnderDragon.Phase)nilEine gültige Enderdrachen-Phase setzen.
has_mount()—boolPrüfen, ob der Boss ein aktives Reittier-Fahrzeug hat.
get_mount()—table/nilDie mit is_mount = true markierte Reittier-Referenz zurückgeben.
set_mount(mount)tableboolDen Boss die aufgelöste Entity reiten lassen.
clear_mount()—boolDas aktuelle Fahrzeug verlassen.
dismount()—boolAlias für clear_mount().
start_tracking_fireball_system(speed?=0.5)number?=0.5nilBei einem Monster-Boss ab dem nächsten Tick und danach alle 160 Ticks verfolgende Feuerbälle auf Survival-/Adventure-Spieler im Umkreis von 20 Blöcken auf jeder Achse abfeuern, solange er ein Ziel hat. Die Aufgabe gehört der Power: Pausieren pausiert sie, Zielverlust oder Beenden stoppt sie. Die Geschwindigkeit muss endlich und positiv sein.
handle_spirit_walk_damage(cause)string (DamageCause)nilDie Schadensbehandlung von Spirit Walk ausführen.
shield_wall_is_active()—boolDen Zustand der Schildwand prüfen.
initialize_shield_wall(openingDirection?=1)int?=1nilInitialisiert Richtungspuffer in Höhe des Bosslevels. Öffnung: 1 Norden, 2 Osten, 3 Süden, 4 Westen; andere Ganzzahlen schützen alle Seiten. Eine aktive Wand bleibt unverändert.
shield_wall_absorb_damage(player, damage)table, numberboolZieht Schaden vom Puffer auf der Angreiferseite ab, wenn dieser vorher positiv war. Bei true muss das Skript das Schadensereignis selbst abbrechen; kein automatischer Abbruch.
deactivate_shield_wall()—nilStoppt die unabhängige Wandaufgabe und entfernt Zustand und Darstellung. Das Schließen von Lua allein deaktiviert sie nicht.
start_zombie_necronomicon(target, chant)table, stringnilStartet den unabhängigen Controller für ein lebendes Ziel. Der String ist Anzeigetext, kein Dateiname; beschwört die festen Necronomicon-Zombie-/Skelettdateien mit dem Level des Zaubernden.
send_message(text, range?=20)string, number?=20nilFarbverarbeiteten Text an Spieler in Reichweite senden.
get_nearby_players(range)numbertableEliteMobs Power Player Tables in der Nähe zurückgeben.
get_nearby_elites(radius)numbertableHöchstens 32 lebende, erfasste Elites derselben Welt zurückgeben, ohne den Boss; nach Entfernung und bei Gleichstand nach UUID sortiert. Radius: größer als 0, höchstens 64.
get_target_player()—table/nilDas aktuelle Mob-Ziel zurückgeben, wenn es ein Spieler ist.
get_nearby_players_in_zone(zone)tabletableSpieler zurückgeben, die von der Zone erfasst werden.
spawn_particles_in_zone(zone, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0, coverage?=1)table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0, number?=1nilDas Zoneninnere abtasten und Partikel spawnen.
spawn_particles_in_zone_border(zone, particle, count?=1, dx?=0, dy?=0, dz?=0, speed?=0, coverage?=1)table, string (Particle), int?=1, number?=0, number?=0, number?=0, number?=0, number?=1nilDen Zonenrand abtasten und Partikel spawnen.
get_particles_from_self_toward_zone(zone, particle, speed?=0.1)table, string (Particle), number?=0.1tableGerichtete Partikelspezifikationen vom Boss in Richtung abgetasteter Zonenpunkte erzeugen.
get_particles_toward_self(zone, particle, speed)table, string (Particle), numbertableGerichtete Partikelspezifikationen in Richtung des Bosses erzeugen; der aktive Builder liest die Geschwindigkeit derzeit aus dem zuletzt übergebenen Argument.
spawn_particles_with_vector(particles)tablenilEin Array gerichteter Partikelspezifikationen spawnen.
summon_reinforcement(file, zone_or_location?, duration?=0)string, table?, int?=0table/nilEine Verstärkung an einem abgetasteten Zonenpunkt, einer Location oder beim Boss beschwören; eine positive Dauer entfernt sie nach entsprechend vielen Ticks.
summon_projectile(type, origin, destination, speed?=1, options?)string (EntityType), table, table, number?=1, table?table/nilEin Projektil spawnen; die Optionen unterstützen custom_damage, detonation_power, yield, incendiary, gravity, glowing, invulnerable, persistent, duration, EntityEffect effect, spawn_at_origin, direction_only, track, on_land und max_ticks.

context.players: EliteMobs-Boss-Powers​

MethodeArgumenteRückgabeBeschreibung
current_target()—table/nilDen Event-Akteur zurückgeben, wenn er ein Spieler ist, andernfalls das aktuelle Mob-Ziel des Bosses, wenn es ein Spieler ist.
nearby_players(radius)numbertableSpielertabellen innerhalb des Radius um den Boss zurückgeben.
all_players_in_world()—tableAlle Spielertabellen in der aktuellen Welt des Bosses zurückgeben.

context.entities: EliteMobs-Boss-Powers​

Die Sammlungsabfragen schließen den Boss selbst aus. Filter für lebende Entities akzeptieren player/players, elite/elites, mob/mobs oder jeden anderen Wert für alle lebenden Entities. Sie filtern weder auf Survival/Adventure noch auf Mitgliedschaft in einer Dungeon-Instanz. Die direkte Zielabfrage liefert unabhängig davon das vom Hook übergebene Ziel.

MethodeArgumenteRückgabeBeschreibung
get_nearby_entities(radius, filter?="living")number, string?tableFilter für lebende Entities verwenden einen 3D-Radius um die Fußposition. all oder entities verwendet stattdessen Bukkits achsenparallele Quaderabfrage einschließlich nicht lebender Entities.
get_entities_in_box(center, half_x, half_y, half_z, filter?="living")table, number, number, number, string?tableLebende Entities zurückgeben, deren Fußpositionen im Quader einschließlich seiner Grenze liegen.
get_all_entities(filter?="living")string?tablePassende lebende Entities in der Welt des Bosses zurückgeben.
get_direct_target_entity()—table/nilDas direkte Ziel zurückgeben, das der aktuelle Hook liefert.
get_boss_spawn_location()—tableDie ursprüngliche Spawn-Position des Bosses zurückgeben.

context.vectors: EliteMobs-Boss-Powers​

MethodeArgumenteRückgabeBeschreibung
get_vector_between_locations(source, destination, options?)table, table, table?tableDen Vektor zwischen Locations derselben Welt zurückgeben, oder {x=0,y=0,z=0} bei ungültiger oder weltübergreifender Eingabe. Die Optionen unterstützen normalize, multiplier und den Vektor offset.
rotate_vector(vector, pitch?=0, yaw?=0)table, number?=0, number?=0tableDen um Pitch und Yaw (in Grad) rotierten Vektor zurückgeben.
normalize_vector(vector)tabletableEinen Einheitsvektor zurückgeben; ein Nullvektor bleibt null.

context.zones: EliteMobs-Boss-Powers​

EliteMobs-Boss-Powers ersetzen die gemeinsame Zonenoberfläche mit Ganzzahl-Handles durch Abfragen auf Elite-Script-Zonendefinitionen.

Entity-Mitgliedschaft, Punktenthaltung und abgetastete Partikelpositionen sind getrennte Formoperationen und können an Grenzen abweichen. coverage ändert abgetastete Positionen, nicht die Entity-Auswahl. watch_zone hält eine Form fest und ruft jeden Callback mit einer Entity-Tabelle auf, nicht mit einem Kontext. Die Prüfung beginnt nach einem Tick und meldet bereits enthaltene Entities als Eintritte. Das Stoppen einer Überwachung erzeugt keine Austritts-Callbacks.

MethodeArgumenteRückgabeBeschreibung
get_entities_in_zone(zone, options?)table, table?tablePassende lebende Entities zurückgeben. Die Optionen unterstützen filter und mode = "full" oder "border".
get_locations_in_zone(zone, options?)table, table?tableAbgetastete Locations zurückgeben. Die Optionen unterstützen coverage und mode = "full" oder "border".
zone_contains(zone, location, mode?="full")table, table, string?boolPrüfen, ob die Location in der vollen Form oder am Rand liegt.
watch_zone(zone, callbacks, options?)table, table, table?nilMit {on_enter, on_leave}-Callbacks überwachen. Die Optionen unterstützen filter und mode; die eigene Überwachung endet mit dem Skript.

context.script: EliteMobs-Boss-Powers​

Diese Brücke akzeptiert dieselben Tabellenschlüssel wie die YAML-Konfiguration von Elite-Script-Targets, -Zonen und -Relativvektoren.

Methoden​

MethodeArgumenteRückgabeBeschreibung
target(spec)tableTarget HandleEin Target Handle erzeugen.
zone(spec)tableZone HandleEin Zone Handle erzeugen.
relative_vector(spec, location?, zone?)table, table?, Zone Handle?Vector HandleEin Relativvektor-Handle erzeugen, dessen Aktions-Location standardmäßig der Boss ist.
damage(target, amount?=0, multiplier?=1)Target Handle, number?=0, number?=1nilDem Boss zugeschriebenen Bukkit-Schaden einreichen. Spielertreffer durchlaufen die EliteMobs-Kampfskalierung mit Multiplikator; Nichtspielertreffer wenden ihn nicht an.
push(target, vector, additive?=false)Target Handle, table/Vector Handle, bool?=falsenilNach einem skripteigenen Tick Geschwindigkeit für die erfassten Ziele ersetzen oder addieren. Ein aufgelöster Vektor gilt für alle Ziele; fehlende oder nicht endliche Vektoren werden null.
set_facing(target, vector)Target Handle, table/Vector HandlenilAufgelöste Ziel-Entities entlang des Vektors ausrichten.
spawn_particles(target, particles)Target Handle, table/stringnilDie Partikelspezifikation an den aufgelösten Ziel-Locations spawnen.

Diese Aufrufe führen nicht automatisch eine Elite-Script-Aktionsliste, Bedingungen, Cooldowns, Warnverzögerungen oder Wiederholungen aus. Target-Handles halten ihren ursprünglichen Event-/Direktzielkontext fest; verwende eventabhängige Handles nicht über unabhängige Hooks hinweg. first_entity() liefert das erste Resolver-Ergebnis, nicht zwingend die nächste Entity.

Methoden des Target-Handles​

MethodeArgumenteRückgabeBeschreibung
entities()—tableEntity-Tabellen auflösen und zurückgeben.
locations()—tableLocation-Tabellen auflösen und zurückgeben.
first_entity()—table/nilDie erste aufgelöste Entity zurückgeben.
first_location()—table/nilDie erste aufgelöste Location zurückgeben.

Methoden des Zonen-Handles​

MethodeArgumenteRückgabeBeschreibung
full_target(coverage?)number?Target HandleEin Target Handle für das Innere der Form erzeugen.
border_target(coverage?)number?Target HandleEin Target Handle für den Rand erzeugen.
full_locations(coverage?)number?tableAbgetastete Locations im Inneren auflösen.
border_locations(coverage?)number?tableAbgetastete Locations am Rand auflösen.
full_entities()—tableEntities innerhalb der Form auflösen.
border_entities()—tableEntities am Rand auflösen.
contains(location, mode?="full")table, string?boolZugehörigkeit zur vollen Form oder zum Rand prüfen.
watch(callbacks, mode?="full")table, string?intEine eigene {on_enter, on_leave}-Überwachung starten und ihre Task-ID zurückgeben.

Methoden des Relativvektor-Handles​

MethodeArgumenteRückgabeBeschreibung
resolve()—tableDen Vektor für den aktuellen Kontext auflösen.

Event-Tabelle für EliteMobs-Powers​

Event-Werte in EliteMobs-Boss-Powers stellen Felder und Methoden je nach Event-Typ bedingt bereit.

Eigenschaften​

FeldTypBeschreibung
damage_amountnumber/nilMomentaufnahme der Schadenshöhe eines Schadensereignisses.
damage_causestring/nilName der DamageCause, sofern das Schadensereignis eine bereitstellt.
damagertable/nilRohe Referenz auf die schadensverursachende Entity; bei einem Projektiltreffer ist dies das Projektil, nicht dessen Schütze.
projectiletable/nilProjektilreferenz, wenn der Schadensverursacher ein Projektil ist.
spawn_reasonstring/nilSpawn-Grund des Elites.
entitytable/nilJe nach Hook die beschädigte Verstärkung oder die Entity eines Todes- oder Zonenereignisses.
is_damage_transferbool/nilNur bei Spielerschaden an Elites: ob dieser Hook einen ausdrücklich übertragenen Treffer verarbeitet.

Methoden​

MethodeArgumenteRückgabeBeschreibung
cancel_event()—nilEin EliteDamageEvent oder ein anderes abbrechbares Event abbrechen.
set_damage_amount(amount)numbernilDen Schaden eines EliteDamageEvent ersetzen; mit context.event.set_damage_amount(...) aufrufen, Punkt erforderlich.
multiply_damage_amount(multiplier)numbernilDen Schaden eines EliteDamageEvent multiplizieren; mit context.event.multiply_damage_amount(...) aufrufen, Punkt erforderlich.
get_damage_amount()—numberDen aktuellen Schadensbetrag des EliteDamageEvent nach Änderungen zurückgeben.
transfer_damage(target, amount)Entity-Referenz, numberboolNur bei Spielerschaden an Elites: endlichen, nicht negativen Schaden für einen anderen lebenden Elite einreichen, der nach den Instanzregeln zulässig ist. Null, abgebrochene Eingaben, verschachtelte Übertragungen und das ursprüngliche Ziel liefern false; ein Empfänger ohne Elite-Status ist ein Fehler. True bedeutet eingereicht, nicht garantierten Schaden. Der ursprüngliche Schaden wird weder verringert noch abgebrochen.

context.world: EliteMobs-Ergänzungen und -Überschreibungen​

EliteMobs-Boss-Powers erben die gemeinsame Welt-Tabelle einschließlich der EliteMobs-Helfer für visuelle Blitze und NPC-Spawns und ergänzen oder überschreiben die untenstehenden Methoden. Geerbte Koordinatenmethoden behalten ihr gemeinsames Verhalten. Boss-spezifische Location-Methoden verwenden den Boss-Konverter: Fehlende oder nicht als Tabelle übergebene Locations fallen auf den Boss zurück, fehlende Koordinaten werden null, und eine ausdrücklich benannte Welt muss auflösbar sein.

Methoden​

MethodeArgumenteRückgabeBeschreibung
play_sound_at_location(location, sound, volume?=1, pitch?=1)table, string (Sound), number?=1, number?=1nilÜberschreibung, die über die EliteMobs-Unterstützung registrierte oder benutzerdefinierte Namespace-Sounds akzeptiert.
spawn_particle_at_location(location, particle, count?=1)table, string (Particle)/table, int?=1nilÜberschreibung, die eine EliteMobs-Partikel-Spezifikationstabelle akzeptiert.
set_block_at_location(location, material, require_air?=false)table, string (Material), bool?=falsenilÜberschreibung, die den Block über die Verwaltung temporärer Blöcke dauerhaft platziert, ohne Timer und ohne Verwaltung.
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false)table, string (Material), int?=0, bool?=falsenilÜberschreibung, die die temporäre EliteMobs-Blockplatzierung verwendet.
get_block_type_at_location(location)tablestring/nilEinen Material-Namen in Großbuchstaben zurückgeben, oder nil bei einer ungültigen Location.
get_highest_block_y_at_location(location)tableint/nilÜberschreibung, die das höchste Block-Y zurückgibt, oder nil.
get_blast_resistance_at_location(location)tablenumberDie Explosionsresistenz des Blocks zurückgeben, standardmäßig 0 bei einer ungültigen Location.
is_air_at_location(location)tableboolPrüfen, ob der Zielblock Luft ist.
is_passable_at_location(location)tableboolDie Bukkit-Passierbarkeit prüfen.
is_passthrough_at_location(location)tableboolPrüfen, ob das Material nicht fest ist.
is_on_floor_at_location(location)tableboolAuf ein nicht festes Ziel mit einem festen Block darunter prüfen.
is_standing_on_material(location, material)table, string (Material)boolDen Block darunter prüfen.
strike_lightning_at_location(location)tablenilÜberschreibung, die vor dem Einschlag die EliteMobs-Blitzumgehung aktiviert.
run_empowered_lightning_task_at_location(location)tablenilErzeugt unabhängig 60 Warnungsdurchläufe, danach einen echten Blitz und einen abwärts gerichteten Feuerball mit Explosionsstärke 5. Verursacht Schaden; Lua-Pause oder Schließen beendet die Aufgabe nicht.
set_world_time(time) / set_world_time(location, time)int/table, int?nilDie Zeit der Boss-Welt oder der Welt der übergebenen Location setzen.
set_world_weather(weather, duration?=6000) / set_world_weather(location, weather, duration?=6000)string/table, string/int?, int?=6000nilCLEAR, PRECIPITATION, RAIN oder THUNDER setzen.
run_console_command(command)stringnilEinen Befehl als Konsole ausführen.
spawn_boss_at_location(file, location?, level?)string, table?, int?table/nilEinen Custom Boss an der übergebenen oder aktuellen Location und mit der übergebenen oder aktuellen Stufe spawnen.
spawn_custom_boss_at_location(file, location, options?)string, table, table?table/nilEinen Custom Boss spawnen; die Optionen unterstützen silent, level, add_as_reinforcement und velocity.
spawn_entity_at_location(type, location, options?)string (EntityType), table, table?table/nilEine Vanilla-Entity spawnen; die Optionen unterstützen velocity, duration, EntityEffect effect, on_land und max_ticks.
spawn_falling_block_at_location(location, material, options?)table, string (Material), table?table/nilEinen fallenden Block spawnen; die Optionen unterstützen drop_item, hurt_entities, velocity und on_land.
spawn_reinforcement_at_location(file, location, duration?=0, velocity?)string, table, int?=0, table?table/nilEine an den Boss gebundene Verstärkung beschwören; eine positive Dauer entfernt sie nach entsprechend vielen Ticks.
spawn_fireworks_at_location(location, options)table, tabletable/nilEin Feuerwerk spawnen; die Optionen unterstützen effects, type, flicker, trail, colors, fade_colors, power, velocity und shot_at_angle, wobei type FireworkEffect.Type-Namen verwendet.
spawn_splash_potion_at_location(location, options)table, tabletable/nilEinen Wurftrank spawnen; effects-Einträge akzeptieren PotionEffectType type, duration, amplifier und overwrite, dazu velocity auf oberster Ebene.
generate_fake_explosion(locations, source?)table, table?nilEntfernt echte Blöcke und erzeugt schädliche fallende Trümmer, wenn Explosionsregeneration aktiv ist. Wiederherstellung beginnt nach 1200 Ticks; Lua-Schließen macht sie nicht rückgängig. Positionen müssen in der Bosswelt liegen.
spawn_fake_gold_nugget_at_location(location, velocity, gravity?=false)table, table, bool?=falsetable/nilEin Fake-Goldklumpen-Projektil spawnen.
run_fake_gold_nugget_damage(projectiles)tablenilDen Schadensdurchlauf für Fake-Projektile ausführen.
generate_player_loot(times?=1)int?=1nilSpielerloot für berechtigte Schadensverursacher erzeugen.
drop_bonus_coins(multiplier?=2)number?=2nilBonusmünzen für berechtigte Schadensverursacher fallen lassen.

Tabelle für EliteMobs-Fake-Projektile​

spawn_fake_gold_nugget_at_location gibt diese Tabelle zurück, wenn das Spawnen erfolgreich ist.

Methoden​

MethodeArgumenteRückgabeBeschreibung
get_location()—tableDie Position des Fake-Projektils zurückgeben.
set_gravity(enabled)boolnilDie Schwerkraft des Fake-Projektils setzen.
remove()—nilDas Fake-Projektil entfernen.
is_removed()—boolPrüfen, ob es entfernt wurde.

context.settings​

EliteMobs-Boss-Powers erhalten diese Einstellungstabelle vom selben Welt-Tabellen-Builder.

Methoden​

MethodeArgumenteRückgabeBeschreibung
warning_visual_effects_enabled()—boolDie aktuelle Einstellung für visuelle Warneffekte zurückgeben.