Référence de l'API Lua
Cette référence décrit les constructeurs de tables et les contextes Lua de MagmaCore, FreeMinecraftModels et EliteMobs. Les tables partagées et celles des pouvoirs de boss EliteMobs ont des contrats différents ; utilisez la section correspondant à votre script.
La plupart des méthodes acceptent table.method(...) et table:method(...). Les fonctions globales em.create_*, em.zone.create_* et em.location.* exigent un point, comme les méthodes de modification des dégâts d'événement de boss indiquées plus bas. Les champs partagés indiqués comme actuels sont calculés à la demande : relisez-les pour actualiser leur valeur et évitez de leur affecter une valeur, car cela masque la consultation. Une position ou un autre instantané déjà conservé dans une variable Lua ne s'actualise pas seul.
Les méthodes qui traitent les couleurs utilisent la syntaxe partagée des codes couleur, notamment pour le chat, les titres, les barres, les noms personnalisés et les titres d'inventaire des props.
Table d'entité
La table d'entité MagmaCore sert de base aux valeurs génériques d'entité ; les tables Living Entity, Player et Prop FreeMinecraftModels en héritent.
Propriétés
| Champ | Type | Description |
|---|---|---|
uuid | string | UUID de l'entité. |
entity_type | string | Type d'entité Bukkit en minuscules. |
is_valid | bool | Validité en direct. |
is_dead | bool | État de mort en direct. |
current_location | table/nil | Position en direct {x, y, z, yaw, pitch, world}. |
world | string/nil | Nom du monde en direct. |
is_player | bool | Indique si l'entité est un joueur. |
is_hostile | bool | Indique si l'entité implémente Monster de Bukkit. |
is_passive | bool | Indique si l'entité implémente Animals de Bukkit. |
is_on_ground | bool | État au sol actuel. |
is_flying | bool | État de vol actuel du joueur ; false pour les autres types d'entité. |
in_block | bool | État d'encastrement actuel, réservé aux flèches. |
attachment_location | table/nil | Centre du bloc contenant la position actuelle d'une flèche encastrée ; nil si la flèche n'est pas dans un bloc. |
attachment_block | table/nil | Centre du bloc réellement touché par une flèche appartenant à une action d'enchantement active. Renvoie nil sans impact encastré valide enregistré, ou après que la flèche s'est éloignée, a changé de monde ou que son action s'est terminée. Identifie le bloc touché ; ne fournit pas une destination de déplacement sans collision. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
teleport(location) | table | nil | Téléporte vers une table de position. |
remove() | — | nil | Supprime l'entité si elle est encore valide. |
set_silent(enabled) | bool | nil | Définit l'état silencieux. |
set_invulnerable(enabled) | bool | nil | Définit l'état d'invulnérabilité. |
set_gravity(enabled) | bool | nil | Définit l'état de gravité. |
set_glowing(enabled) | bool | nil | Définit l'état de luminescence. |
set_velocity(x, y, z) | number, number, number | nil | Remplace la vélocité ; les composantes doivent être finies. |
set_fall_distance(distance) | number | nil | Définit une distance de chute finie et non négative. |
set_shooter(uuid) | string | bool | Méthode réservée aux projectiles ; attribue une entité résolue implémentant ProjectileSource de Bukkit. |
set_direction(x, y, z) | number, number, number | nil | Méthode réservée aux boules de feu ; définit une direction de vol finie et non nulle. |
set_pickup(status) | string | nil | Méthode réservée aux flèches ; ALLOWED, DISALLOWED ou CREATIVE_ONLY. |
can_receive_hostile_effect(actor_uuid) | string | bool | Vérifie si la cible peut recevoir un effet hostile du joueur en ligne. Les fournisseurs peuvent appliquer leurs propres restrictions de combat. |
has_clear_movement_path(location) | table | bool | Vérifie avant une attraction dans le même monde les collisions, limites du monde et chunks chargés. Les entités autres que les joueurs refusent aussi les régions protégées. Ne déplace pas l'entité. |
movement_path_status(location) | table | string | Retourne clear, blocked, protected ou unavailable ; protected concerne les entités autres que les joueurs. Les vérifications de collision balaient prudemment la boîte englobante de l'entité. |
Un trajet libre pour un joueur n'autorise ni l'entrée ni le combat. Le déplacement réel reste soumis aux listeners de mouvement, notamment aux restrictions d'entrée dans les régions ; la protection de construction seule n'empêche pas les joueurs de se déplacer.
Les positions des méthodes partagées exigent x, y et z. Si le monde est omis, celui de l'entité est utilisé ; un nom de monde non résolu conserve aussi ce monde de repli. Les requêtes distinctes em.location.* exigent un monde chargé et utilisent zéro pour les coordonnées omises. Ni la vérification du trajet ni can_receive_hostile_effect ne s'appliquent automatiquement aux appels directs de téléportation, vélocité ou dégâts.
can_receive_hostile_effect exige un joueur acteur valide et connecté, ainsi qu'une cible valide, vivante, du même monde et qui ne soit pas un joueur. Il refuse les porte-armures, les entités invulnérables, les entités marquées PNJ et les animaux apprivoisés. EliteMobs peut ajouter des restrictions d'autorisation de combat. Des UUID invalides peuvent provoquer des erreurs dans set_shooter et set_owner ; les noms invalides de l'enum de ramassage provoquent aussi des erreurs.
Table d'entité : enrichissement EliteMobs
L'enrichisseur EliteMobs ajoute ces valeurs aux tables d'entité MagmaCore. Les indicateurs de suivi et la présence de elite sont déterminés à la construction ; seuls les champs indiqués comme actuels se rafraîchissent à la lecture. L'adaptateur EliteMobs facultatif de FreeMinecraftModels ajoute les informations d'élite, mais pas elite_player.
Propriétés
| Champ | Type | Description |
|---|---|---|
is_elite | bool | Indique si EliteMobs suivait l'entité lors de la construction de la table. |
is_custom_boss | bool | Indique si l'élite suivie est un boss personnalisé. |
is_significant_boss | bool | Indique s'il s'agit d'un boss personnalisé dont le multiplicateur de vie dépasse 1. |
elite | table/nil | Données EliteMobs imbriquées, présentes uniquement pour une élite résolue. |
elite.level | int | Instantané du niveau de l'élite. |
elite.name | string/nil | Instantané du nom d'affichage de l'élite. |
elite.health | number | Vie en direct. |
elite.max_health | number | Vie maximale en direct. |
elite.is_custom_boss | bool | Indique si l'élite est un boss personnalisé. |
elite.health_multiplier | number | Instantané du multiplicateur de vie configuré. |
elite.damage_multiplier | number | Instantané du multiplicateur de dégâts configuré. |
elite_player | table/nil | Table réservée aux joueurs, résolue à la demande lorsque les données du joueur EliteMobs existent. |
elite_player.tier | number | Palier de combat du joueur calculé à partir de l'XP de compétences sans actualiser les requêtes d'enchantements. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
elite.remove() | — | nil | Supprime l'élite via le pipeline de suppression d'EliteMobs. |
Table d'entité : enrichissement FreeMinecraftModels
L'enrichisseur FreeMinecraftModels ajoute ces instantanés ; model n'existe que si is_modeled vaut true à la construction. Les valeurs propres aux joueurs n'apparaissent que sur leurs tables. Les méthodes de modèle et de permissions consultent les objets sous-jacents lors de l'appel. Dans les scripts EliteMobs, l'adaptateur FreeMinecraftModels facultatif d'EliteMobs ajoute is_modeled, is_prop et model, mais pas is_op ni has_permission.
Propriétés
| Champ | Type | Description |
|---|---|---|
is_modeled | bool | Indique si FreeMinecraftModels résout une entité modélisée. |
is_prop | bool | Indique si l'entité est un prop FreeMinecraftModels porté par un armor stand. |
model | table/nil | Données de modèle imbriquées, présentes uniquement pour une entité modélisée. |
model.model_id | string/nil | Identifiant du blueprint de modèle. |
model.is_dynamic | bool | Indique si l'entité modélisée est dynamique. |
is_op | bool | Instantané de l'état d'opérateur du serveur, réservé aux joueurs. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
model.play_animation(name, blend?=false, loop?=false) | string, bool?=false, bool?=false | bool | Retourne si la lecture a été acceptée, y compris les demandes d'attaque mises en attente ou supprimées ; la mort terminale refuse la lecture. |
model.stop_animations() | — | nil | Efface les lectures en attente et revient à idle si disponible ; la mort terminale n'est pas affectée. |
model.remove() | — | nil | Supprime l'entité modélisée. |
has_permission(node) | string | bool | Vérification de permission réservée aux joueurs. |
Table d'entité vivante
La table d'entité vivante MagmaCore hérite de toutes les propriétés et méthodes de l'Entity Table.
Propriétés
| Champ | Type | Description |
|---|---|---|
health | number | Vie en direct. |
maximum_health | number | Vie maximale en direct. |
name | string/nil | Nom d'entité Bukkit en direct. |
is_alive | bool | Inverse en direct de l'état de mort de Bukkit. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
damage(amount) | number | nil | Inflige des dégâts Bukkit. |
push(x, y, z) | number, number, number | nil | Ajoute immédiatement un vecteur à la vélocité actuelle. |
set_facing(x, y, z) | number, number, number | nil | Téléporte sur place avec l'orientation indiquée. |
add_potion_effect(type, duration, amplifier) | string (PotionEffectType), int, int | nil | Ajoute un effet de potion lorsque le type est résolu. |
remove_potion_effect(type) | string (PotionEffectType) | nil | Retire un effet de potion lorsque le type est résolu. |
get_scale() | — | number | Renvoie l'échelle effective, modificateurs compris, ou 1.0 si l'attribut est indisponible. |
set_scale(value) | number | nil | Définit la valeur de base de l'attribut d'échelle lorsque le serveur le prend en charge. |
set_ai(enabled) | bool | nil | Active ou désactive l'IA de l'entité vivante. |
set_owner(player_uuid) | string | bool | Apprivoise une entité apprivoisable pour un joueur en ligne ; apaise aussi les loups. False pour les entités non prises en charge ou les joueurs indisponibles. |
has_potion_effect(type) | string | bool | Vérifie un nom d'effet de potion Bukkit ; false si le nom n'est pas résolu. |
Table de joueur
La table de joueur MagmaCore hérite de toutes les propriétés et méthodes de la Living Entity Table.
Dans les scripts FMM, la table de joueur expose également
is_holding_elitemobs_item(filename). Cette méthode vérifie l'étiquette de nom
de fichier EliteMobs de l'objet en main principale, indépendamment de son nom
affiché ou de sa traduction. Elle renvoie false si la main est vide, si l'objet
diffère ou si l'intégration EliteMobs est indisponible. Incluez .yml dans le nom,
par exemple player:is_holding_elitemobs_item("shroomwhispers_shears.yml").
Propriétés
| Champ | Type | Description |
|---|---|---|
game_mode | string | Instantané du mode de jeu Bukkit en minuscules. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
send_message(text) | string | nil | Envoie un texte traité par l'analyseur de couleurs de MagmaCore. |
chat(text) | string | nil | Fait parler le joueur via Bukkit, y compris pour exécuter en son nom les commandes précédées d'une barre oblique. Le texte passe par l'analyseur de couleurs. |
get_held_item() | — | table/nil | Renvoie un instantané {type, amount, display_name} de l'objet en main principale, ou nil si elle est vide. type est en majuscules ; sans nom personnalisé, display_name utilise le nom du matériau. |
consume_held_item(amount?=1) | int?=1 | nil | Met en attente la réduction de la pile présente en main principale à l'exécution ; ne retourne aucun résultat de paiement et ne conserve pas l'objet vérifié. Fournissez une quantité positive ; les valeurs négatives ne sont pas refusées. |
has_item(material, amount?=1) | string (Material), int?=1 | bool | Teste si l'inventaire contient la quantité demandée. |
get_target_entity(range?=50) | number?=50 | table/nil | Trace depuis les yeux contre les blocs et entités, sauf le joueur, avec une taille de rayon d'entité de 0.5 ; ignore les fluides et blocs traversables. |
get_eye_location() | — | table | Renvoie la position des yeux. |
get_look_direction() | — | table | Renvoie une direction unitaire {x, y, z}. |
send_block_change(x, y, z, material, ticks?=-1) | int, int, int, string (Material), int?=-1 | bool | Met en file un bloc côté client et son éventuelle restauration après des ticks positifs ; les matériaux invalides ou non-blocs renvoient false. True signifie mis en file. |
reset_block(x, y, z) | int, int, int | bool | Met en file la restauration du bloc réel pour ce joueur. |
sleep(x, y, z) | number, number, number | nil | Met en file un vrai lit blanc et tente de faire dormir le joueur ; au réveil ou à la déconnexion, restaure le BlockData d'origine. Le contenu des entités de bloc n'est pas restauré. |
wake_up() | — | nil | Met en file le réveil du joueur lorsqu'il dort. |
show_boss_bar(text, color?=WHITE, progress, ticks?=-1) | string, string (BarColor)?=WHITE, number, int?=-1 | nil | Remplace la barre pleine active ; limite progress à 0..1, utilise le blanc si la couleur est invalide et peut masquer la barre après des ticks positifs. Passez nil pour la couleur afin de conserver progress en troisième position obligatoire. |
hide_boss_bar() | — | nil | Retire la barre de boss Lua active du joueur. |
show_action_bar(text, ticks?=-1) | string, int?=-1 | nil | Envoie une fois, ou répète tous les 40 ticks jusqu'à la fin d'une durée positive. |
show_title(title, subtitle?="", fade_in, stay, fade_out) | string, string?="", int, int, int | nil | Affiche un titre dont le titre et le sous-titre sont traités pour la couleur. |
Les barres partagées appartiennent au joueur dans la copie de MagmaCore du plugin hôte. Elles ne sont pas isolées par script : un nouvel appel à show_boss_bar remplace la barre actuelle du joueur, et un nouvel appel à show_action_bar annule la barre d'action répétée en cours. Un temporisateur d'expiration ne retire que la barre ou la barre d'action qui l'a lancé : une ancienne expiration n'efface donc plus une barre plus récente. Ces temporisateurs et les changements de blocs en attente n'appartiennent pas à context.scheduler. Les changements et restaurations lisent le monde du joueur à l'exécution ; ne comptez pas sur eux pour restaurer le bloc voulu après un changement de monde. Le nettoyage du sommeil vérifie d'abord après 20 ticks, puis tous les 10 ticks.
Table de monde
La table de monde MagmaCore est exposée sous context.world et capture son monde à la construction. Les pouvoirs de boss en héritent et appliquent les redéfinitions documentées plus bas. Les requêtes de proximité renvoient des tableaux indexés à partir de un et utilisent des boîtes alignées sur les axes, avec radius comme chaque demi-extension ; elles n'excluent pas le propriétaire du script et ne filtrent pas les modes de jeu.
Propriétés
| Champ | Type | Description |
|---|---|---|
name | string | Instantané du nom du monde. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
get_block_at(x, y, z) | int, int, int | string | Renvoie un nom de Material en minuscules, ou air sans charger un chunk déchargé. |
set_block_at(x, y, z, material) | int, int, int, string (Material) | bool | Met en file le placement du bloc ; les matériaux invalides renvoient false et les chunks déchargés sont ignorés par la tâche mise en file. |
get_highest_block_y(x, z) | int, int | int | Renvoie le Y du bloc le plus haut. |
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?=0 | nil | Fait apparaître une particule ; les noms invalides n'ont aucun effet. |
play_sound(sound, x, y, z, volume?=1, pitch?=1) | string (Sound), number, number, number, number?=1, number?=1 | nil | Joue un son enregistré ou une clé de son de resource pack en minuscules avec espace de noms. |
strike_lightning(x, y, z) | number, number, number | nil | Fait tomber la foudre. |
get_time() | — | int | Renvoie l'heure du monde en ticks. |
set_time(ticks) | int | nil | Définit l'heure du monde. |
get_nearby_entities(x, y, z, radius) | number, number, number, number | table | Renvoie les tables Entity ou Living Entity proches. |
get_nearby_players(x, y, z, radius) | number, number, number, number | table | Renvoie les tables Player proches. |
spawn_entity(type, x, y, z) | string (EntityType), number, number, number | table/nil | Fait apparaître une entité vanilla ; un nom d'enum inconnu renvoie nil, mais un type valide impossible à faire apparaître peut provoquer une erreur. |
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) | six nombres, number?, string?, bool?, bool? | table/nil | Retourne hit_entity, hit_location et hit_block ; les modes de fluide sont NEVER, SOURCE_ONLY, ALWAYS. Avec loaded_only, refuse les chunks non chargés dans le rectangle englobant le rayon et retourne nil. |
place_temporary_block(x, y, z, material, ticks?=0, require_air?=false) | int, int, int, string (Material), int?=0, bool?=false | bool | Place un bloc temporaire ; les matériaux invalides ou les chunks déchargés renvoient false. |
drop_item(x, y, z, material, amount?=1) | number, number, number, string (Material), int?=1 | table/nil | Fait tomber un item naturellement et renvoie son Entity Table ; les matériaux invalides renvoient nil. |
spawn_firework(x, y, z, colors, type?=BALL, power?=1) | number, number, number, table, string (FireworkEffect.Type)?=BALL, int?=1 | nil | Met en file un feu d'artifice utilisant des noms de constantes Color de Bukkit, avec repli sur le blanc si aucune n'est résolue. |
strike_lightning_at_location(location) | table | nil | Fait tomber la foudre dans le monde de la table de position. |
play_sound_at_location(location, sound, volume?=1, pitch?=1) | table, string (Sound), number?=1, number?=1 | nil | Joue un son enregistré ou une clé de son de resource pack en minuscules avec espace de noms. |
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?=0 | nil | Fait apparaître via cette table de monde. Fournissez une position du même monde. |
get_block_at_location(location) | table | string | Renvoie un nom de matériau en minuscules, ou air pour une position invalide ou un chunk déchargé. |
set_block_at_location(location, material) | table, string (Material) | bool | Met en file le placement du bloc dans le monde de la table de position. |
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false) | table, string (Material), int?=0, bool?=false | bool | Place un bloc temporaire dans le monde de la table de position. |
get_highest_block_y_at_location(location) | table | int/nil | Renvoie le Y du bloc le plus haut, ou nil pour une position invalide. |
terrain_impact_at_location(location, options?) | table, table? | table/nil | Affiche un impact visuel temporaire sur le terrain ; options : radius=4.5 (0.5–6), intensity=1 (0–1), duration_ticks=35 (1–200), view_range=48 (1–96), seed ; retourne un handle ou nil. |
terrain_impact(x, y, z, options?) | number, number, number, table? | table/nil | Affiche le même impact visuel aux coordonnées de ce monde. |
impact.is_active() | — | bool | Vérifie si le handle d'impact est actif ; impact.id est son identifiant textuel. |
impact.remove() | — | bool | Supprime un impact actif ; false s'il est déjà inactif ou si la suppression échoue. |
get_entity(uuid) | string | table/nil | Résout une entité valide dans le registre des entités chargées de ce monde. Utilisez une chaîne UUID valide. |
block_is_passable(x, y, z) | int, int, int | bool/nil | Retourne si le bloc est traversable, ou nil pour les chunks non chargés ou les coordonnées hors des limites de hauteur. |
location_is_protected(location) | table | bool | Interroge les fournisseurs de protection enregistrés ; utilise ce monde si le monde est omis. |
spawn_dust(location, count, red, green, blue) | table, int, int, int, int | nil | Fait apparaître des particules DUST de taille fixe avec des composantes RVB de 0 à 255 et une dispersion de 0.1 par axe ; ignore les chunks non chargés. Utilisez une position dans ce monde. |
Un raycast sans impact renvoie une table vide dont les champs d'impact valent nil. Un impact de bloc inclut hit_block = {x, y, z, material}, avec le matériau en minuscules. Le tracé combiné utilise une taille de rayon d'entité de 0.5 sans filtre d'entités. loaded_only=true vérifie tout le rectangle englobant et peut refuser le rayon même si le chunk non chargé n'est pas sur son trajet exact. Un nom de fluide invalide provoque une erreur.
Les noms de particules partagées sont convertis en majuscules avant recherche. Ces méthodes positionnelles n'ont pas d'argument de données : une particule qui en exige peut provoquer une erreur ; utilisez spawn_dust pour la poussière RVB partagée. Les requêtes du bloc le plus haut et les méthodes d'apparition ne vérifient pas généralement que les chunks sont chargés. Le placement de blocs ne vérifie pas automatiquement les protections de région. Un résultat true ne prouve pas la réussite d'une modification en attente ni d'une vérification require_air.
Les blocs temporaires à durée positive sauvegardent le BlockData d'origine et le restaurent à la fin du temporisateur, au déchargement du chunk ou du monde, ou à l'arrêt du plugin. La restauration n'a lieu que si l'emplacement contient toujours le bloc temporaire : une modification ultérieure n'est donc pas écrasée. Poser de nouveau un bloc temporaire sur un bloc qui en contient encore un relance son temporisateur et conserve l'original sauvegardé en premier. Les blocs dotés d'une entité de bloc, comme les coffres et les pancartes, les chunks déchargés et les blocs déjà détenus par un autre propriétaire de blocs temporaires sont ignorés. Casser un bloc temporaire ne lâche rien et met fin au suivi sans restauration ; poser un bloc à cet endroit met aussi fin au suivi. Une durée non positive place le bloc de façon permanente, sans suivi. Ces opérations ne constituent pas un système de restauration limité au script.
Ajouts de monde partagés d'EliteMobs
EliteMobs enregistre ces fonctions sur ses tables de monde partagées, notamment pour les scripts de PNJ. Le chunk de destination doit être chargé. La signature partagée de spawn_boss_at_location exige une position et un niveau ; les pouvoirs de boss la remplacent par la forme à arguments facultatifs décrite plus bas.
| Méthode | Arguments | Retour | Description |
|---|---|---|---|
lightning_effect_at_location(location) | table | nil | Affiche la foudre sans ses dégâts normaux, avec le contournement d'apparition de foudre d'EliteMobs. |
spawn_npc_at_location(file, location) | string, table | table/nil | Fait apparaître un PNJ configuré et renvoie un handle avec remove(), ou nil si l'apparition est invalide. |
spawn_boss_at_location(file, location, level) | string, table, int | table/nil | Fait apparaître un boss personnalisé configuré et renvoie une table partagée d'entité vivante, ou nil si indisponible. |
context.world : ajouts FreeMinecraftModels
FreeMinecraftModels enregistre ces méthodes sur sa propre table de monde MagmaCore ; elles apparaissent donc sur context.world dans les scripts de props FreeMinecraftModels. Chaque méthode retourne false si EliteMobs n'est pas activé ou si le joueur n'est pas résolu. Les méthodes de butin utilisent la position du joueur lorsque leur argument de position est absent ou inutilisable.
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
start_elitemobs_transport(player, route_id) | player, string | bool | Lance un itinéraire de transport EliteMobs enregistré pour un joueur du même monde ; false si le joueur ou l'intégration est indisponible. |
drop_elitemobs_procedural_loot(player, level, location?) | table/string, int, table? | bool | Fait tomber un item EliteMobs généré de façon procédurale pour le joueur ; renvoie false lorsque les butins d'items procéduraux sont désactivés. |
drop_elitemobs_random_loot(player, level, location?) | table/string, int, table? | bool | Tire les tables de butin EliteMobs pour le joueur au niveau indiqué. |
drop_elitemobs_custom_loot(player, file, level, location?) | table/string, string, int, table? | bool | Fait tomber un fichier d'item personnalisé EliteMobs précis pour le joueur ; renvoie false lorsque le fichier n'est pas résolu. |
L'argument player accepte une table de joueur, une chaîne UUID ou un nom de joueur exact. L'argument location accepte une table de position ou une table d'entité portant current_location. Le butin procédural respecte le réglage EliteMobs de remise directe en inventaire, avec dépôt de l'excédent près du joueur ; il ne tombe donc pas toujours à la position demandée.
Table d'aide em
MagmaCore expose cette table globalement avant tout hook. Ses constructeurs créent uniquement des données : ils n'enregistrent pas de surveillance, ne chargent pas de monde et ne valident pas une forme complète. Utilisez un point pour les fonctions globales. Les méthodes des positions et zones renvoyées acceptent aussi les deux-points, modifient leur table et renvoient cette même table. Les setters de zone conservent la table de position fournie par référence.
Propriétés
Les constructeurs d'aide renvoient les tables de données compactes ci-dessous.
| Champ | Type | Description |
|---|---|---|
location.x | number | Coordonnée X renvoyée par em.create_location. |
location.y | number | Coordonnée Y renvoyée par em.create_location. |
location.z | number | Coordonnée Z renvoyée par em.create_location. |
location.world | string/nil | Nom du monde lorsqu'il est fourni à em.create_location. |
location.yaw | number/nil | Yaw lorsqu'il est fourni à em.create_location. |
location.pitch | number/nil | Pitch lorsqu'il est fourni à em.create_location. |
vector.x | number | Composante X renvoyée par em.create_vector. |
vector.y | number | Composante Y renvoyée par em.create_vector. |
vector.z | number | Composante Z renvoyée par em.create_vector. |
zone.kind | string | sphere, dome, cylinder, cuboid, cone, static_ray, rotating_ray ou translating_ray. |
zone.radius | number/nil | Rayon de la sphère, du dôme, du cylindre ou du cône. |
zone.height | number/nil | Hauteur du cylindre. |
zone.x | number/nil | Taille X du cuboïde. |
zone.y | number/nil | Taille Y du cuboïde. |
zone.z | number/nil | Taille Z du cuboïde. |
zone.length | number/nil | Longueur du cône ou du rayon. |
zone.thickness | number/nil | Épaisseur du rayon statique. |
zone.point_radius | number/nil | Rayon de point du rayon rotatif ou translatif. |
zone.animation_duration | number/nil | Durée d'animation du rayon rotatif ou translatif. |
zone.origin | table/nil | Position définie par set_center ou set_origin. |
zone.destination | table/nil | Position définie par set_destination. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
em.create_location(x, y, z, world?, yaw?, pitch?) | number, number, number, string?, number?, number? | table | Renvoie une table de position. |
em.create_vector(x, y, z) | number, number, number | table | Renvoie une table de vecteur {x, y, z}. |
location.add(dx?=0, dy?=0, dz?=0) | number?=0, number?=0, number?=0 | table | Ajoute sur place et renvoie la même table de position. |
em.zone.create_sphere_zone(radius) | number | table | Renvoie une définition de sphère dotée de set_center(location). |
em.zone.create_dome_zone(radius) | number | table | Renvoie une définition de dôme dotée de set_center(location). |
em.zone.create_cylinder_zone(radius, height) | number, number | table | Renvoie une définition de cylindre dotée de set_center(location). |
em.zone.create_cuboid_zone(x, y, z) | number, number, number | table | Renvoie une définition de cuboïde dotée de set_center(location). |
em.zone.create_cone_zone(length, radius) | number, number | table | Renvoie une définition de cône dotée de set_origin(location) et set_destination(location). |
em.zone.create_static_ray_zone(length, thickness) | number, number | table | Renvoie une définition de rayon statique dotée des setters d'origine et de destination. |
em.zone.create_rotating_ray_zone(length, point_radius, animation_duration) | number, number, number | table | Renvoie une définition de rayon rotatif dotée des setters d'origine et de destination. |
em.zone.create_translating_ray_zone(length, point_radius, animation_duration) | number, number, number | table | Renvoie une définition de rayon translatif dotée des setters d'origine et de destination. |
zone.set_center(location) | table | table | Définit le centre comme zone.origin et renvoie la même table de zone. |
zone.set_origin(location) | table | table | Définit l'origine et renvoie la même table de zone. |
zone.set_destination(location) | table | table | Définit la destination et renvoie la même table de zone. |
em.location.is_in_dungeon(location) | table | bool | Teste les régions de donjon enregistrées et les propriétaires signalant le type dungeon. |
em.location.is_protected(location) | table | bool | Teste les adaptateurs WorldGuard/GriefPrevention intégrés et les propriétaires de protection enregistrés par les plugins. |
em.location.owned_by(location, namespace) | table, string | bool | Teste la propriété par un espace de noms de plugin. |
em.location.owners(location) | table | table | Renvoie un tableau de chaînes d'espaces de noms propriétaires. |
em.location.kinds_at(location) | table | table | Renvoie un tableau de chaînes de types de propriété. |
em.location.has_kind(location, kind) | table, string | bool | Teste un type de propriété. |
Pour em.location.*, world doit être un nom de monde chargé ou une table avec name ; il n'y a pas de repli sur le monde du propriétaire. Un monde absent ou non résolu renvoie false ou un tableau vide ; les coordonnées absentes valent zéro. Les espaces de noms de propriétaire sont sensibles à la casse, contrairement aux types. La propriété seule n'implique ni donjon ni protection. Les requêtes reflètent les fournisseurs enregistrés, pas tous les plugins de protection possibles ; un adaptateur de région enregistré qui échoue signale une protection. L'ordre des tableaux de propriétaires et de types n'est pas garanti.
Contexte d'un programme Mind
Les callbacks natifs Mind utilisent ce contexte à la place du contexte habituel des pouvoirs ou des PNJ. Les programmes de comportement définis par fichier sont aussi chargés depuis plugins/EliteMobs/behaviors/ ; consultez la configuration du comportement des boss. Les intégrations EliteMobs enregistrent les définitions ai.program et ai.module via EliteMindService ; placer ces définitions dans le répertoire habituel powers n'enregistre pas de programme Mind.
| Champ | Type | Description |
|---|---|---|
tick, generation | number | Tick actuel du jeu et génération du runtime. |
entity | table | Table partagée d'entité vivante de l'acteur. |
memory, perception, actuator, actions | table | Services ci-dessous, valables pour le callback courant. |
| Méthode | Arguments | Renvoie | Description |
|---|---|---|---|
memory.get(key) | string | value/nil | Lit une clé de mémoire déclarée. |
memory.set(key, value, ttl_ticks?) | string, value, int? | nil | Définit une mémoire déclarée selon son type configuré, avec une expiration facultative. |
memory.forget(key) | string | nil | Supprime une mémoire déclarée. |
memory.contains(key) | string | bool | Vérifie la présence d'une valeur de mémoire déclarée. |
perception.current_target() | — | table/nil | Renvoie la cible actuelle sous forme de table partagée d'entité vivante. |
perception.nearest_player(radius) | number | table/nil | Renvoie le joueur le plus proche à portée. |
perception.can_see(entity_or_uuid) | table/string | bool | Vérifie la ligne de vue vers une entité vivante. |
perception.navigation() | — | table | Renvoie destination_active, navigation_in_progress, consecutive_stuck_ticks, éventuellement destination et last_progress contenant tick et position. |
actuator.move_to(location, speed?=1) | table, number?=1 | bool | Demande un déplacement vers une position du même monde, avec une vitesse finie et positive ; false si la recherche de chemin n'a pas démarré. |
actuator.stop_moving() | — | nil | Arrête la navigation. |
actuator.look_at(location) | table | nil | Regarde vers une position. |
actuator.jump() | — | nil | Demande un saut. |
actuator.set_target(entity_or_uuid) | table/string | bool | Définit une cible vivante ; false si elle ne peut pas être résolue. |
actuator.clear_target() | — | nil | Efface la cible. |
actuator.attack(entity_or_uuid) | table/string | bool | Demande une attaque ; false si la cible ne peut pas être résolue. |
actuator.stop_all() | — | nil | Arrête le déplacement, la cible et l'attaque couverts par les contrôles que détient ce comportement. |
actions.request(identifier, payload?) | string, table? | string | Demande une action sémantique et renvoie son résultat en minuscules ; les données acceptent les scalaires, les tables d'UUID d'entité et les tables de position world/x/y/z. |
Chaque callback construit les sections de service au premier accès et les réutilise pendant ce callback. Les clés de mémoire doivent être déclarées ; une clé non déclarée provoque une erreur. Un retour positif de actuator.set_target ou actuator.attack signifie qu'une cible vivante a été résolue et la demande transmise, pas qu'un déplacement ou une attaque s'est achevé. Les données d'action acceptent les valeurs scalaires ou d'entité/position prévues, pas des tables Lua imbriquées arbitraires. Les identifiants d'action doivent être des clés en minuscules avec espace de noms, de 128 caractères au maximum ; les données contiennent au maximum 16 entrées, avec des clés en minuscules de 64 caractères au maximum, et les valeurs de type chaîne sont limitées à 256 caractères. Toutes les méthodes de l'actionneur sauf stop_all, ainsi que actions.request, lèvent une erreur si le comportement appelant ne détient pas le contrôle correspondant. Les capteurs ne peuvent utiliser ni l'actionneur ni les actions. Les programmes de comportement écrits en Lua sont décrits dans Programmes de comportement.
Global ai
MagmaCore installe ce global dans chaque environnement Lua. Les constructeurs se contentent de marquer la table qu'ils reçoivent ; EliteMobs compile les tables marquées à partir des fichiers de programmes de comportement.
| Champ | Type | Description |
|---|---|---|
ai.controls.move, look, jump, target, attack, use_item, action | string | Noms des contrôles pour le tableau controls d'un comportement ; use_item n'a pas de méthode d'actionneur Lua. |
| Méthode | Arguments | Renvoie | Description |
|---|---|---|---|
ai.program(definition) | table | table | Marque une définition de programme avec id, revision et, facultativement, modules, memories, sensors, behaviors, budget et runaway. |
ai.module(definition) | table | table | Marque une définition de module avec id, revision et, facultativement, dependencies, memories, sensors et behaviors. |
ai.sensor(definition) | table | table | Marque un capteur avec id, interval?=1 et sense(c). |
ai.behavior(definition) | table | table | Marque un comportement avec id, priority?=0, controls, can_start, can_continue, start, tick et stop(c, reason). |
context.mind_action : hook de pouvoir EliteMobs
Disponible pendant on_mind_action(context). Le hook renvoie "accepted", "deferred" ou "rejected" ; les pouvoirs associés sont parcourus dans leur ordre d'association jusqu'à ce que l'un accepte.
| Champ | Type | Description |
|---|---|---|
key | string | Identifiant d'action sémantique avec espace de noms. |
payload | table | Copie Lua des données d'action ; la modifier ne change pas la demande originale. Les UUID sont des chaînes et les positions des tables {world, x, y, z}. |
game_tick, generation | number | Tick de l'action et génération du runtime. |
context.state
Chaque instance de script MagmaCore reçoit une table Lua simple qui persiste pendant toute la durée de vie de cette instance. Utilisez-la pour les compteurs, les drapeaux, les identifiants de tâche et les valeurs partagées entre hooks.
context.state.counter = (context.state.counter or 0) + 1
context.log
Méthodes MagmaCore, FreeMinecraftModels et PNJ EliteMobs
| Méthode | Args | Retour | Description |
|---|---|---|---|
info(message) | string | nil | Journalise un message d'information avec le préfixe Lua partagé. |
warn(message) | string | nil | Journalise un avertissement. |
error(message) | string | nil | Journalise via le canal d'avertissement partagé. |
Méthodes des pouvoirs de boss EliteMobs
| Méthode | Args | Retour | Description |
|---|---|---|---|
info(message) | string | nil | Journalise un message d'information de pouvoir de boss. |
warn(message) | string | nil | Journalise un avertissement. |
debug(message) | string | nil | Journalise un message d'information avec le préfixe de débogage des pouvoirs Lua. |
context.scheduler
Les tâches planifiées appartiennent à l'instance de script et sont annulées à son arrêt. Les deux familles de noms ci-dessous sont disponibles sur les surfaces MagmaCore partagées et sur les pouvoirs de boss EliteMobs.
Les callbacks reçoivent un nouveau contexte, normalement sans event ni player déclencheur. Capturez les valeurs ou UUID nécessaires avant de planifier, puis résolvez l'entité actuelle. Conserver le contexte original ne conserve pas sûrement son événement résolu à la demande. Pendant une pause, les tâches uniques arrivées à échéance attendent et les tâches répétées sautent des exécutions sans les rattraper. Une erreur de callback ferme le script. L'arrêt annule les tâches et surveillances propres au script ; il n'annule pas les modifications arbitraires d'entités ou de monde ni tous les temporisateurs indépendants des fonctions auxiliaires.
| Méthode | Args | Retour | Description |
|---|---|---|---|
run_later(ticks, callback) | int, function | int | Exécute une fois après le délai et renvoie l'identifiant de tâche Bukkit. |
run_repeating(delay, interval, callback) | int, int, function | int | Exécute de façon répétée après un délai initial et renvoie l'identifiant de tâche. |
cancel(task_id) | int | nil | Annule une tâche possédée. |
run_after(ticks, callback) | int, function | int | Alias de run_later. |
run_every(interval, callback) | int, function | int | Exécute de façon répétée sans délai initial et renvoie l'identifiant de tâche. |
cancel_task(task_id) | int | nil | Alias de cancel. |
context.cooldowns
Une clé locale omise utilise __lua: suivi du nom de fichier du script. Les clés explicites sont utilisées telles quelles. Les magasins locaux MagmaCore appartiennent à l'adaptateur propriétaire du script : FMM crée un adaptateur par script de prop, tandis que tous les scripts d'un PNJ EliteMobs partagent le même adaptateur et peuvent employer la même clé locale explicite. Les recharges globales FMM sont partagées par les scripts du même prop ; celles des PNJ sont partagées sur l'adaptateur du PNJ.
Les pouvoirs de boss utilisent le magasin partagé du boss pour les clés locales et sa recharge de pouvoir intégrée pour l'état global. Les temporisateurs locaux et les globaux partagés MagmaCore mesurent le temps réel à 50 ms par tick, pauses et faibles TPS compris. Les recharges globales de boss comptent les ticks du serveur et conservent l'expiration la plus tardive : un set_global plus court n'écourte jamais une recharge globale active, et une durée non positive n'a aucun effet. Vérifier ou définir une recharge locale ne vérifie ni ne définit automatiquement la globale.
| Méthode | Args | Retour | Description |
|---|---|---|---|
local_ready(key?) | string? | bool | Teste si le temps de recharge local indexé est prêt. |
local_remaining(key?) | string? | int | Renvoie les ticks restants, ou 0 lorsqu'il est prêt. |
check_local(key, duration) | string/nil, int | bool | S'il est prêt, démarre le temps de recharge et renvoie true. Passez nil pour la clé par défaut. |
set_local(duration, key?) | int, string? | nil | Définit ou efface le temps de recharge local ; une durée non positive l'efface. |
global_ready() | — | bool | Teste si le temps de recharge global du propriétaire est prêt. |
set_global(duration) | int | nil | Définit le temps de recharge global en ticks. Sur les surfaces MagmaCore partagées, une durée non positive l'efface. |
context.zones : interface MagmaCore partagée
Les scripts FreeMinecraftModels, les scripts de PNJ EliteMobs et les autres consommateurs MagmaCore par défaut reçoivent des handles de zone entiers dans le monde du propriétaire de script actuel.
| Méthode | Args | Retour | Description |
|---|---|---|---|
create_sphere(x, y, z, radius) | number, number, number, number | int/nil | Enregistre une sphère et renvoie son handle, ou nil lorsque le propriétaire n'a pas de monde. |
create_cylinder(x, y, z, radius, height) | number, number, number, number, number | int/nil | Enregistre un cylindre et renvoie son handle, ou nil lorsque le propriétaire n'a pas de monde. |
create_cuboid(x, y, z, x_size, y_size, z_size) | number, number, number, number, number, number | int/nil | Enregistre un cuboïde et renvoie son handle, ou nil lorsque le propriétaire n'a pas de monde. |
watch(handle, on_enter?, on_leave?) | int, function?, function? | bool/nil | Active le suivi des franchissements pour un handle connu. La présence d'une fonction active le hook on_zone_enter ou on_zone_leave correspondant ; le corps de la fonction fournie n'est pas appelé directement. |
unwatch(handle) | int | nil | Arrête le suivi et supprime le handle. |
Les surveillances génériques testent les points de position des joueurs. Dans ce traitement, les dimensions des cuboïdes sont des demi-extensions ; un Z nul est remplacé par un X non nul. Cela ne définit pas le même volume que les requêtes de chevauchement d'entités ou de positions échantillonnées d'EliteMobs. Les zones conservent leurs coordonnées et monde de création, tandis que chaque tick examine les joueurs du monde actuel du propriétaire. Les hooks de zone génériques exposent le joueur qui franchit la limite via context.player et context.event.player.
La création commence immédiatement le suivi d'appartenance, avant que watch installe les déclencheurs de hooks. Installer la surveillance plus tard n'émet pas d'entrée pour un joueur déjà suivi à l'intérieur. Omettre un callback lors d'un second watch ne retire pas un déclencheur déjà installé. Les déconnexions et unwatch ne garantissent pas de hook de sortie. Les zones sont vérifiées avant on_game_tick.
context.event : interface MagmaCore partagée
Cette table existe tant qu'un hook partagé dispose d'un événement Bukkit courant ou d'un acteur. Elle est absente des callbacks planifiés et des hooks dépourvus de l'une et l'autre valeur.
| Champ ou méthode | Type | Description |
|---|---|---|
is_cancelled | bool | État d'annulation capturé à la première résolution de la sous-table d'événement ; appeler cancel() ou uncancel() ne rafraîchit pas ce champ. |
cancel() | méthode | Annule l'événement courant. Présente uniquement lorsqu'il implémente Cancellable de Bukkit. |
uncancel() | méthode | Désannule l'événement courant. Présente uniquement lorsqu'il implémente Cancellable de Bukkit. |
player | table | Living Entity Table de l'acteur courant lorsqu'il y en a un. |
Les hooks de zone génériques fournissent un acteur mais aucun événement Bukkit annulable : ils exposent donc is_cancelled = false et player sans cancel() ni uncancel().
context.item
Les scripts d'action d'enchantement exposent cette table lorsque leur source capturée possède un emplacement d'inventaire et un objet. Elle vise cet emplacement exact et compare le matériau et les métadonnées de l'objet actuel à l'instantané, en ignorant les dégâts et la quantité de la pile. Elle ne recherche pas dans l'inventaire du joueur et ne suit pas une identité unique d'objet : un remplacement équivalent dans l'emplacement capturé correspond aussi. Elle peut être nil pour les munitions consommées. Cela se distingue de l'ancien moteur d'objets équipés FreeMinecraftModels.
| Méthode | Arguments | Retour | Description |
|---|---|---|---|
get_durability() | — | table/nil | Durabilité restante {current, max} ; nil pour les objets indisponibles ou sans usure. |
get_durability_percentage() | — | number/nil | Durabilité restante divisée par le maximum du matériau ; normalement 0..1, mais des métadonnées excessivement endommagées par ailleurs peuvent sortir de cet intervalle. |
use_durability(amount, can_break?=false) | int, bool? | bool | Modifie les dégâts ; les valeurs négatives réparent. Conserve par défaut au moins un point de durabilité ; can_break=true peut consommer la pile. |
use_durability_percentage(fraction, can_break?=false) | number, bool? | bool | Applique ceil(max_durability * fraction) dégâts avec la même règle de casse. |
consume(amount) | entier positif | bool | Consomme dans la pile capturée uniquement si elle contient assez d'objets. |
La durabilité utilise le maximum du matériau, pas un composant personnalisé de dégâts maximaux. Ces modifications directes n'appliquent ni les calculs d'usure vanilla, ni Solidité, ni les vérifications d'objet incassable, ni les événements d'usure d'objet du joueur. Les pourcentages exigent des valeurs finies et un résultat dans l'intervalle des entiers ; les fractions négatives réparent. La casse consomme toute la pile capturée. Pour le cycle de vie des actions et le contexte complet, consultez les enchantements personnalisés.
context.prop
Les scripts de prop FreeMinecraftModels reçoivent cette table, qui hérite de l'Entity Table MagmaCore lorsqu'une entité porteuse existe.
Propriétés
| Champ | Type | Description |
|---|---|---|
model_id | string/nil | Nom du blueprint de modèle, ou nil lorsqu'aucun blueprint n'existe. |
current_location | table/nil | Position du prop en direct. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
play_animation(name, blend?=true, loop?=true) | string, bool?=true, bool?=true | bool | Joue l'animation nommée. |
stop_animation() | — | nil | Efface les lectures en attente et revient à idle si disponible ; l'état de mort terminale n'est pas affecté. |
hurt_visual() | — | nil | Joue l'effet visuel rouge de blessure sans infliger de dégâts. |
pickup() | — | nil | Met en file la suppression définitive et fait tomber un item de placement. |
has_mount_points() | — | bool | Teste si le prop possède des os de points de monture. |
mount(player) | table | bool | Met en file l'installation d'un joueur résolu sur le premier siège disponible. |
dismount(player) | table | bool | Met en file la descente d'un joueur résolu de ce prop. |
get_passengers() | — | table | Renvoie les Entity Tables des joueurs installés. |
spawn_elitemobs_boss(file, x, y, z) | string, number, number, number | table/nil | Fait apparaître un boss personnalisé EliteMobs lorsque EliteMobs est activé. |
open_inventory(player, title, rows?=3) | table, string, int?=3 | bool | Met en file l'ouverture du stockage persistant, le nombre de lignes étant plafonné entre 1 et 6. |
place_book(player) | table | bool | Met en file le rangement d'un livre écrit ou vierge tenu en main lorsque le prop n'en contient aucun. |
read_book(player) | table | bool | Met en file l'ouverture d'un livre écrit rangé. |
take_book(player) | table | bool | Met en file la restitution du livre rangé au joueur. |
has_book() | — | bool | Teste si le prop contient un livre. |
drop_inventory() | — | bool | Met en file le vidage du stockage persistant et fait tomber son contenu. |
drop_book() | — | bool | Met en file le vidage et la chute du livre rangé. |
is_viewing_inventory(player) | table | bool | Teste si le joueur consulte l'inventaire suivi de ce prop. |
set_persistent_data(key, value) | string, string | bool | Stocke une chaîne sous la clé fmm_lua_ propre au prop. |
get_persistent_data(key) | string | string/nil | Renvoie la chaîne stockée, ou nil. |
Pour les opérations de prop mises en attente, true signifie que les vérifications initiales du joueur et de l'entité porteuse ont réussi, pas qu'un siège était libre, qu'un livre a été rangé ou qu'une interface s'est ouverte. take_book supprime le stockage avant d'insérer le livre et ne dépose pas le surplus d'inventaire. Tous les spectateurs d'un même prop partagent un seul inventaire actif, enregistré lorsque le dernier spectateur le ferme ; tant qu'il est ouvert, les appels suivants réutilisent son titre et sa taille. Un contenu stocké plus grand que le nombre de lignes demandé s'ouvre à sa taille stockée : aucun emplacement n'est perdu. Les données du prop sont stockées sur son porte-armure ; un nouvel objet de placement ne garantit pas leur conservation lors du ramassage.
Dans on_projectile_hit, les scripts de props reçoivent aussi context.projectile, une Table d'entité partagée pour le projectile. Le hook ne se déclenche pas si un autre plugin a déjà annulé l'impact. context.event enveloppe l'événement d'impact annulable de FreeMinecraftModels, et context.event.player est le tireur lorsqu'il s'agit d'une entité vivante, mobs compris ; context.player n'est défini que si c'est un joueur qui a tiré le projectile.
context.npc
Les scripts de PNJ EliteMobs héritent des contextes MagmaCore partagés et ajoutent cette table spécifique aux PNJ.
Propriétés
| Champ | Type | Description |
|---|---|---|
name | string | Nom d'affichage configuré du PNJ. |
filename | string | Nom du fichier de configuration du PNJ. |
uuid | string | UUID du PNJ à l'exécution. |
activation_radius | number | Rayon d'activation configuré. |
current_location | table | Instantané de la position, présent uniquement tant que l'entité vivante porteuse existe. |
entity_type | string | Type d'entité Bukkit en majuscules, présent uniquement tant que l'entité vivante porteuse existe. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
is_valid() | — | bool | Teste si le PNJ est valide. |
remove() | — | nil | Supprime le PNJ via le cycle de vie qui le gère. |
get_location() | — | table | Renvoie la position actuelle du PNJ, avec repli sur sa position d'apparition. La table inclut également un vecteur direction. |
get_eye_location() | — | table | Renvoie la position actuelle des yeux, avec repli sur la position d'apparition. La table inclut également un vecteur direction. |
get_activation_radius() | — | number | Renvoie le rayon d'activation configuré actuel. |
get_nearby_players(radius) | number | table | Renvoie les tables des joueurs du même monde dans un rayon 3D autour des pieds du PNJ, sans filtre de mode de jeu. |
face_direction_or_location(target) | table | nil | Oriente selon un vecteur ou vers une position du même monde ; ignoré pendant un déplacement actif de patrouille. |
say_greeting(player?) | table/string? | nil | Envoie le message d'accueil configuré, par défaut au joueur déclencheur lorsqu'il est disponible. Une table de joueur, un UUID ou un nom sont acceptés. |
say_dialog(player?) | table/string? | nil | Envoie le dialogue configuré avec la même résolution de joueur. |
say_farewell(player?) | table/string? | nil | Envoie le message d'adieu configuré avec la même résolution de joueur. |
play_model_animation(name) | string | nil | Joue une animation de modèle lorsqu'un modèle personnalisé existe. |
patrol_pause() | — | bool | Met en pause la patrouille configurée. |
patrol_resume() | — | bool | Reprend la patrouille après une attente ou un déplacement de script. |
walk_to(x, y, z) | number, number, number | bool | Marche jusqu'à un décalage de l'origine puis reprend la patrouille. |
hold(x, y, z) | number, number, number | bool | Marche jusqu'à un décalage et y reste. |
teleport(x, y, z) | number, number, number | bool | Se téléporte vers un décalage où les entités sont traitées. |
Table de position des pouvoirs EliteMobs
Les tables des pouvoirs de boss EliteMobs renvoient cette forme de position depuis get_location(), get_eye_location(), current_location et les autres résultats de position. Une position absente renvoie une table vide.
Propriétés
| Champ | Type | Description |
|---|---|---|
x, y, z | number | Coordonnées. |
yaw, pitch | number | Rotation. |
world | string/nil | Nom du monde lorsque la position en possède un. |
direction | table | Vecteur d'orientation unitaire {x, y, z}. |
Méthodes
| Méthode | Arguments | Renvoie | Description |
|---|---|---|---|
add(dx?=0, dy?=0, dz?=0) | number?=0, number?=0, number?=0 | table | Ajoute aux coordonnées sur place et renvoie la même table ; direction n'est pas mis à jour. |
Table de référence d'entité des pouvoirs EliteMobs
Les méthodes de pouvoir de boss EliteMobs renvoient cette table allégée pour les entités non vivantes telles que les projectiles, les feux d'artifice et les blocs qui tombent.
Propriétés
| Champ | Type | Description |
|---|---|---|
name | string | Instantané du nom de l'entité. |
uuid | string | UUID de l'entité. |
entity_type | string | Instantané du type d'entité Bukkit en majuscules. |
is_player | bool | Toujours false. |
is_elite | bool | Toujours false. |
is_mount | bool | False sauf si un boss marque une table de monture renvoyée comme true. |
current_location | table | Instantané de la position. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
is_valid() | — | bool | Teste la validité en direct. |
get_location() | — | table | Renvoie la position en direct. |
get_velocity() | — | table | Renvoie la vélocité en direct. |
is_on_ground() | — | bool | Teste l'état au sol en direct. |
teleport_to_location(location) | table | nil | Téléporte lorsque la position est résolue. |
set_velocity_vector(vector) | table | nil | Définit la vélocité lorsque le vecteur est résolu. |
set_direction_vector(vector) | table | nil | Définit la direction d'une boule de feu le cas échéant. |
set_yield(amount) | number | nil | Définit la puissance d'une boule de feu le cas échéant. |
set_gravity(enabled) | bool | nil | Définit la gravité. |
detonate() | — | nil | Fait détoner l'entité lorsqu'il s'agit d'un feu d'artifice. |
remove() | — | nil | Supprime l'entité. |
unregister(reason?=OTHER) | string?=OTHER | nil | Désenregistre avec 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 ou ARENA_RESET. |
is_inside_vehicle() | — | bool | Teste si l'entité est montée sur un véhicule. |
has_vehicle() | — | bool | Teste si un véhicule existe. |
get_vehicle() | — | table/nil | Renvoie la référence du véhicule actuel. |
set_vehicle(vehicle) | table | bool | Fait monter cette entité sur le véhicule résolu. |
leave_vehicle() | — | bool | Quitte le véhicule actuel. |
has_passengers() | — | bool | Teste s'il existe des passagers. |
get_passenger_count() | — | int | Renvoie le nombre de passagers. |
get_passengers() | — | table | Renvoie les références des passagers. |
add_passenger(passenger) | table | bool | Ajoute le passager résolu. |
remove_passenger(passenger) | table | bool | Retire le passager résolu. |
eject_passengers() | — | bool | Éjecte tous les passagers. |
Table d'entité vivante des pouvoirs EliteMobs
Les valeurs vivantes des pouvoirs de boss EliteMobs utilisent cette table distincte ; les tables Boss et Player des pouvoirs EliteMobs en héritent.
Propriétés
| Champ | Type | Description |
|---|---|---|
name | string | Instantané du nom de l'entité. |
uuid | string | UUID de l'entité. |
entity_type | string | Instantané du type d'entité Bukkit en majuscules. |
is_player | bool | Indique si l'entité est un joueur. |
is_monster | bool | Indique si l'entité implémente Monster de Bukkit. |
is_elite | bool | Indique si EliteMobs suit l'entité. |
is_mount | bool | Indique si le boss personnalisé suivi est une monture. |
is_valid | bool | Instantané de la validité. |
health | number | Instantané de la vie. |
maximum_health | number | Instantané de la vie maximale. |
current_location | table | Instantané de la position. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
is_alive() | — | bool | Teste la validité en direct et l'état de mort. |
is_ai_enabled() | — | bool | Renvoie l'état d'IA en direct. |
is_frozen() | — | bool | Renvoie le paramètre de gel du boss personnalisé EliteMobs, ou false. |
get_location() | — | table | Renvoie la position en direct. |
get_eye_location() | — | table | Renvoie la position des yeux en direct. |
get_height() | — | number | Renvoie la hauteur de l'entité Bukkit. |
get_health() | — | number | Renvoie la vie en direct. |
get_maximum_health() | — | number | Renvoie la vie maximale en direct. |
get_velocity() | — | table | Renvoie la vélocité en direct. |
deal_damage(amount) | number | nil | Inflige des dégâts Bukkit génériques. |
deal_custom_damage(amount) | number | nil | Soumet des dégâts personnalisés bruts du boss à une cible vivante ; ignore le boss lui-même, les cibles invulnérables ou mortes et les joueurs hors Survie/Aventure. Sous réserve des règles d'instance et de l'annulation de l'événement de dégâts. |
deal_damage_from_boss(amount) | number | nil | Inflige des dégâts Bukkit attribués au boss du pouvoir. |
restore_health(amount) | number | nil | Soigne via EliteMobs lorsque l'entité est suivie, sinon plafonne la vie Bukkit au maximum. |
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | Joue un son enregistré ou personnalisé avec espace de noms au niveau de l'entité. Le deuxième argument peut aussi être {volume, pitch}. |
play_sound_at_self(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | Alias qui joue le son au niveau de l'entité. Le deuxième argument peut aussi être {volume, pitch}. |
spawn_particle_at_self(particle, count?=1) | string (Particle)/table, int?=1 | nil | Fait apparaître une particule (chaîne ou table de spécification) au niveau de l'entité. |
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?=0 | nil | Fait apparaître une particule à une position. |
teleport_to_location(location) | table | nil | Téléporte lorsque la position est résolue. |
set_velocity_vector(vector) | table | nil | Définit la vélocité lorsque le vecteur est résolu. |
set_gravity(enabled) | bool | nil | Définit la gravité. |
is_on_ground() | — | bool | Teste l'état au sol en direct. |
apply_push_vector(vector, additive?=false, delay?=1) | table, bool?=false, int?=1 | nil | Applique une vélocité après un délai, en l'ajoutant éventuellement à la vélocité actuelle. |
set_custom_name(name) | string | nil | Définit un nom personnalisé traité pour la couleur. |
reset_custom_name() | — | nil | Restaure le nom EliteMobs lorsque l'entité est suivie, sinon le nom Bukkit. |
set_custom_name_visible(visible) | bool | nil | Définit la visibilité du nom personnalisé. |
set_ai_enabled(enabled, duration?=0) | bool, int?=0 | nil | Définit l'IA comme un changement détenu ; un nombre de ticks positif restaure la valeur remplacée. true met fin au changement d'IA actif de ce pouvoir, s'il y en a un, au lieu d'appliquer une nouvelle valeur. |
set_awareness_enabled(enabled, duration?=0) | bool, int?=0 | nil | Définit la vigilance du mob comme un changement détenu ; un nombre de ticks positif restaure la valeur remplacée. true met fin au changement de vigilance actif de ce pouvoir, s'il y en a un, au lieu d'appliquer une nouvelle valeur. |
face_direction_or_location(target) | table | nil | Oriente vers un vecteur ou une position dans le même monde. |
play_model_animation(name) | string | nil | Joue une animation de modèle personnalisé lorsqu'elle est disponible. |
set_scale(scale, duration?=0) | number, int?=0 | nil | Définit l'échelle de base comme un changement détenu ; un nombre de ticks positif restaure la valeur remplacée. |
set_invulnerable(enabled, duration?=0) | bool, int?=0 | nil | Définit l'invulnérabilité comme un changement détenu ; un nombre de ticks positif restaure la valeur remplacée. |
remove_elite() | — | nil | Supprime une élite suivie via le pipeline de suppression d'EliteMobs. |
is_healing() | — | bool | Teste l'état de soin de l'élite suivie. |
set_healing(enabled) | bool | nil | true marque une élite suivie comme en soin si elle ne l'est pas déjà ; false n'efface que le soin défini par ce pouvoir. L'arrêt du pouvoir efface le soin qu'il détient encore. |
navigate_to_location(location, speed?=1, force?=false, timeout?=0) | table, number?=1, bool?=false, int?=0 | nil | Fait naviguer un boss personnalisé suivi. |
add_tag(tag, duration?=0) | string, int?=0 | nil | Ajoute un tag et le retire après un nombre de ticks positif. |
remove_tag(tag) | string | nil | Retire un tag. |
has_tag(tag) | string | bool | Teste un tag d'entité, d'élite ou de joueur. |
push_relative_to(location, force?=1, extra_x?=0, extra_y?=0, extra_z?=0) | table, number?=1, number?=0, number?=0, number?=0 | nil | Remplace immédiatement la vélocité par un vecteur sortant normalisé multiplié par force, puis ajoute les décalages selon les axes du monde. Fournissez une source du même monde. |
overlaps_box_at_location(center, half_x?=0.5, half_y?=half_x, half_z?=half_x) | table, number?=0.5, number?, number? | bool | Teste la boîte englobante de l'entité contre la boîte demandée. |
is_inside_vehicle() | — | bool | Teste si l'entité est montée sur un véhicule. |
has_vehicle() | — | bool | Teste si un véhicule existe. |
get_vehicle() | — | table/nil | Renvoie la référence du véhicule actuel. |
set_vehicle(vehicle) | table | bool | Fait monter cette entité sur le véhicule résolu. |
leave_vehicle() | — | bool | Quitte le véhicule actuel. |
has_passengers() | — | bool | Teste s'il existe des passagers. |
get_passenger_count() | — | int | Renvoie le nombre de passagers. |
get_passengers() | — | table | Renvoie les références des passagers. |
add_passenger(passenger) | table | bool | Ajoute le passager résolu. |
remove_passenger(passenger) | table | bool | Retire le passager résolu. |
eject_passengers() | — | bool | Éjecte tous les passagers. |
apply_potion_effect(type, duration, amplifier?=0) | string (PotionEffectType), int, int?=0 | nil | Résout un nom de potion Bukkit converti en majuscules et l'applique si les règles d'instance le permettent. Les amplificateurs commencent à zéro. |
set_equipment(slot, material, options?) | string (EquipmentSlot), string (Material), table? | nil | Définit l'équipement ; les options prennent en charge unbreakable et des entrées enchantments avec type et level. |
damage_equipment(slot, amount) | string, int | int | Demande 1–64 points d'usure sur HAND, OFF_HAND, HEAD, CHEST, LEGS ou FEET ; renvoie l'usure réellement appliquée. Respecte l'annulation de l'événement d'usure des objets du joueur et les objets incassables ; peut casser l'objet. |
set_fire_ticks(ticks) | int | nil | Définit les ticks de feu si les règles d'instance le permettent. |
add_visual_freeze_ticks(ticks?=1) | int?=1 | nil | Ajoute des ticks de gel Minecraft si les règles d'instance le permettent ; cela peut causer des dégâts de gel et ne bloque ni l'IA ni le mouvement. |
place_temporary_block(material, ticks?=0, require_air?=false) | string (Material), int?=0, bool?=false | nil | Place un bloc temporaire au niveau de l'entité. |
Les changements d'IA, de vigilance, d'échelle et d'invulnérabilité appartiennent au pouvoir appelant. Chacun enregistre la valeur qu'il a remplacée. Une durée positive restaure cette valeur après le nombre de ticks indiqué ; une durée de 0 conserve le changement jusqu'à l'arrêt du pouvoir, qui le restaure également. Lorsque plusieurs pouvoirs modifient la même propriété, la fin d'un changement restaure le changement restant le plus récent, ou la valeur d'origine s'il n'en reste aucun. Si un autre plugin ou une commande modifie la propriété entre-temps, sa valeur est conservée et rien n'est restauré. Mettre un pouvoir en pause ne met pas fin à ces changements. apply_push_vector retardé et les temporisateurs de suppression de tags fonctionnent toujours indépendamment du planificateur propre au script. reset_custom_name restaure le nom d'une élite suivie ; pour une entité Bukkit ordinaire, il utilise son nom actuel, pas un nom original conservé.
Table de joueur des pouvoirs EliteMobs
Les valeurs de joueur des pouvoirs de boss EliteMobs héritent de toutes les propriétés et méthodes de la table d'entité vivante des pouvoirs EliteMobs.
Propriétés
| Champ | Type | Description |
|---|---|---|
game_mode | string | Instantané du mode de jeu Bukkit en majuscules. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
send_message(text) | string | nil | Envoie un texte de chat traité pour la couleur. |
show_action_bar(text) | string | nil | Envoie une barre d'action traitée pour la couleur. |
show_title(title, subtitle?="", fade_in?=10, stay?=40, fade_out?=10) | string, string?="", int?=10, int?=40, int?=10 | nil | Affiche un titre traité pour la couleur. |
show_boss_bar(title, color?=WHITE, style?=SOLID, duration?=40) | string, string (BarColor)?=WHITE, string (BarStyle)?=SOLID, int?=40 | nil | Affiche une barre de boss et la retire après un nombre de ticks positif. |
run_command(command) | string | nil | Exécute une commande en tant que joueur. |
context.boss
Les pouvoirs de boss EliteMobs reçoivent cette table, qui hérite de toutes les propriétés et méthodes de la table d'entité vivante des pouvoirs EliteMobs et redéfinit les lignes listées ici avec une sémantique de niveau élite.
Propriétés
| Champ | Type | Description |
|---|---|---|
name | string | Instantané du nom d'affichage de l'élite ou du nom de fichier du script. |
uuid | string | UUID de l'élite. |
health | number | Instantané de la vie de l'élite. |
maximum_health | number | Instantané de la vie maximale de l'élite. |
current_location | table | Instantané de la position de l'élite. |
level | int | Instantané du niveau de l'élite. |
damager_count | int | Instantané du nombre d'assaillants. |
is_in_combat | bool | Instantané de l'état de combat. |
exists | bool | Instantané de l'existence de l'élite. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
is_alive() | — | bool | Teste l'état de l'entité vivante et l'existence côté EliteMobs. |
get_health() | — | number | Renvoie la vie de l'élite en direct. |
get_maximum_health() | — | number | Renvoie la vie maximale de l'élite en direct. |
get_location() | — | table | Renvoie la position de l'élite en direct. |
restore_health(amount) | number | nil | Soigne via l'entité EliteMobs. |
add_tag(tag, duration?=0) | string, int?=0 | nil | Ajoute un tag d'élite et le retire après un nombre de ticks positif. |
remove_tag(tag) | string | nil | Retire un tag d'élite. |
has_tag(tag) | string | bool | Teste un tag d'élite. |
reset_custom_name() | — | nil | Restaure le nom d'affichage de l'élite. |
play_sound_at_self(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | Joue un son enregistré ou personnalisé avec espace de noms à la position de l'élite. Le deuxième argument peut aussi être {volume, pitch}. |
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | Alias qui joue le son à la position de l'élite. Le deuxième argument peut aussi être {volume, pitch}. |
spawn_particle_at_self(particle, count?=1) | string (Particle)/table, int?=1 | nil | Fait apparaître une particule à la position de l'élite. |
play_model_animation(name) | string | nil | Joue l'animation du modèle du boss personnalisé lorsqu'elle est disponible. |
navigate_to_location(location, speed?=1, force?=false, timeout?=0) | table, number?=1, bool?=false, int?=0 | nil | Fait naviguer un boss personnalisé. |
get_damager_count() | — | int | Renvoie le nombre d'assaillants en direct. |
despawn() | — | nil | Supprime l'élite avec la raison OTHER. |
remove() | — | nil | Alias de despawn(). |
patrol_pause() | — | bool | Met en pause la patrouille configurée. |
patrol_resume() | — | bool | Reprend la patrouille après une attente ou un déplacement de script. |
walk_to(x, y, z) | number, number, number | bool | Marche jusqu'à un décalage de l'origine puis reprend la patrouille. |
hold(x, y, z) | number, number, number | bool | Marche jusqu'à un décalage et y reste. |
teleport(x, y, z) | number, number, number | bool | Se téléporte vers un décalage où les entités sont traitées. |
get_ender_dragon_phase() | — | string/nil | Renvoie le nom de EnderDragon.Phase, ou nil. |
set_ender_dragon_phase(phase) | string (EnderDragon.Phase) | nil | Définit une phase d'ender dragon valide. |
has_mount() | — | bool | Teste si le boss dispose d'un véhicule de monture actif. |
get_mount() | — | table/nil | Renvoie la référence de monture marquée is_mount = true. |
set_mount(mount) | table | bool | Fait monter le boss sur l'entité résolue. |
clear_mount() | — | bool | Quitte le véhicule actuel. |
dismount() | — | bool | Alias de clear_mount(). |
start_tracking_fireball_system(speed?=0.5) | number?=0.5 | nil | Pour un boss de type monstre, tire des boules de feu à tête chercheuse sur les joueurs Survie/Aventure situés à moins de 20 blocs sur chaque axe, au tick suivant puis toutes les 160 ticks tant qu'il a une cible. Le pouvoir détient cette tâche : la mise en pause la suspend, et la perte de la cible ou l'arrêt du pouvoir l'arrête. La vitesse doit être finie et positive. |
handle_spirit_walk_damage(cause) | string (DamageCause) | nil | Exécute la gestion des dégâts de Spirit Walk. |
shield_wall_is_active() | — | bool | Teste l'état du mur de boucliers. |
initialize_shield_wall(openingDirection?=1) | int?=1 | nil | Initialise des réserves par direction égales au niveau du boss. Ouverture : 1 nord, 2 est, 3 sud, 4 ouest ; les autres entiers protègent tous les côtés. Un mur déjà actif reste inchangé. |
shield_wall_absorb_damage(player, damage) | table, number | bool | Soustrait les dégâts de la réserve du côté de l'attaquant si elle était positive ; true indique que le script doit annuler lui-même l'événement de dégâts. Aucune annulation automatique. |
deactivate_shield_wall() | — | nil | Arrête la tâche indépendante du mur et retire son état et ses effets. La fermeture de Lua seule ne le désactive pas. |
start_zombie_necronomicon(target, chant) | table, string | nil | Démarre le contrôleur indépendant pour une cible vivante. La chaîne est du texte affiché, pas un nom de fichier ; invoque les fichiers fixes de zombie/squelette du necronomicon au niveau du lanceur. |
send_message(text, range?=20) | string, number?=20 | nil | Envoie un texte traité pour la couleur aux joueurs à portée. |
get_nearby_players(range) | number | table | Renvoie les tables de joueur des pouvoirs EliteMobs à proximité. |
get_nearby_elites(radius) | number | table | Renvoie au plus 32 élites vivantes suivies dans le même monde, sans le boss ; triées par distance, puis par UUID en cas d'égalité. Rayon strictement supérieur à 0 et inférieur ou égal à 64. |
get_target_player() | — | table/nil | Renvoie la cible actuelle du mob lorsqu'il s'agit d'un joueur. |
get_nearby_players_in_zone(zone) | table | table | Renvoie les joueurs contenus dans la zone. |
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?=1 | nil | Échantillonne l'intérieur de la zone et y fait apparaître des particules. |
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?=1 | nil | Échantillonne le bord de la zone et y fait apparaître des particules. |
get_particles_from_self_toward_zone(zone, particle, speed?=0.1) | table, string (Particle), number?=0.1 | table | Construit des spécifications de particules directionnelles allant du boss vers des points échantillonnés de la zone. |
get_particles_toward_self(zone, particle, speed) | table, string (Particle), number | table | Construit des spécifications de particules directionnelles vers le boss ; le constructeur actuel lit la vitesse dans le dernier argument fourni. |
spawn_particles_with_vector(particles) | table | nil | Fait apparaître un tableau de spécifications de particules directionnelles. |
summon_reinforcement(file, zone_or_location?, duration?=0) | string, table?, int?=0 | table/nil | Invoque un renfort à un point échantillonné de la zone, à une position ou sur le boss ; une durée positive le retire après ce nombre de ticks. |
summon_projectile(type, origin, destination, speed?=1, options?) | string (EntityType), table, table, number?=1, table? | table/nil | Fait apparaître un projectile ; les options prennent en charge custom_damage, detonation_power, yield, incendiary, gravity, glowing, invulnerable, persistent, duration, l'effect EntityEffect, spawn_at_origin, direction_only, track, on_land et max_ticks. |
context.players : pouvoirs de boss EliteMobs
| Méthode | Args | Retour | Description |
|---|---|---|---|
current_target() | — | table/nil | Renvoie l'acteur de l'événement lorsqu'il s'agit d'un joueur, sinon la cible actuelle du mob du boss lorsqu'il s'agit d'un joueur. |
nearby_players(radius) | number | table | Renvoie les Player Tables situées dans le rayon autour du boss. |
all_players_in_world() | — | table | Renvoie toutes les Player Tables du monde actuel du boss. |
context.entities : pouvoirs de boss EliteMobs
Les requêtes de collections excluent le boss lui-même. Les filtres acceptent player/players, elite/elites, mob/mobs ou toute autre valeur pour toutes les entités vivantes. Elles ne filtrent pas par Survie/Aventure ni par appartenance à une instance de donjon. La requête de cible directe renvoie la cible fournie par le hook indépendamment de ces filtres de collection.
| Méthode | Args | Retour | Description |
|---|---|---|---|
get_nearby_entities(radius, filter?="living") | number, string? | table | Les filtres d'entités vivantes utilisent un rayon 3D à la position des pieds. all ou entities utilise plutôt la requête Bukkit de boîte alignée sur les axes et inclut les entités non vivantes. |
get_entities_in_box(center, half_x, half_y, half_z, filter?="living") | table, number, number, number, string? | table | Renvoie les entités vivantes dont les pieds sont dans la boîte, limites comprises. |
get_all_entities(filter?="living") | string? | table | Renvoie les entités vivantes correspondantes dans le monde du boss. |
get_direct_target_entity() | — | table/nil | Renvoie la cible directe fournie par le hook courant. |
get_boss_spawn_location() | — | table | Renvoie la position d'apparition d'origine du boss. |
context.vectors : pouvoirs de boss EliteMobs
| Méthode | Args | Retour | Description |
|---|---|---|---|
get_vector_between_locations(source, destination, options?) | table, table, table? | table | Renvoie le vecteur entre deux positions du même monde, ou {x=0,y=0,z=0} pour une entrée invalide ou inter-mondes. Les options prennent en charge normalize, multiplier et un offset vectoriel. |
rotate_vector(vector, pitch?=0, yaw?=0) | table, number?=0, number?=0 | table | Renvoie le vecteur pivoté selon le pitch et le yaw, en degrés. |
normalize_vector(vector) | table | table | Renvoie un vecteur unitaire ; un vecteur nul reste nul. |
context.zones : pouvoirs de boss EliteMobs
Les pouvoirs de boss EliteMobs remplacent la surface de zone partagée à handles entiers par des requêtes sur les définitions de zone Elite Script.
L'appartenance des entités, la contenance des points et les positions échantillonnées pour les particules sont des opérations distinctes qui peuvent différer aux limites. coverage modifie les positions échantillonnées, pas la sélection d'entités. watch_zone capture une forme et appelle chaque callback avec une table d'entité, pas un contexte ; la vérification commence après un tick et signale les entités déjà présentes comme entrées. Arrêter une surveillance n'émet pas de callbacks de sortie.
| Méthode | Args | Retour | Description |
|---|---|---|---|
get_entities_in_zone(zone, options?) | table, table? | table | Renvoie les entités vivantes correspondantes. Les options prennent en charge filter et mode = "full" ou "border". |
get_locations_in_zone(zone, options?) | table, table? | table | Renvoie des positions échantillonnées. Les options prennent en charge coverage et mode = "full" ou "border". |
zone_contains(zone, location, mode?="full") | table, table, string? | bool | Teste si la position se trouve dans la forme complète ou sur le bord. |
watch_zone(zone, callbacks, options?) | table, table, table? | nil | Surveille avec des callbacks {on_enter, on_leave}. Les options prennent en charge filter et mode ; la surveillance possédée s'arrête avec le script. |
context.script : pouvoirs de boss EliteMobs
Ce pont accepte les mêmes clés de table que la configuration YAML Elite Script des cibles, des zones et des vecteurs relatifs.
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
target(spec) | table | handle de cible | Crée un handle de cible. |
zone(spec) | table | handle de zone | Crée un handle de zone. |
relative_vector(spec, location?, zone?) | table, table?, handle de zone? | handle de vecteur | Crée un handle de vecteur relatif, dont la position d'action est par défaut celle du boss. |
damage(target, amount?=0, multiplier?=1) | handle de cible, number?=0, number?=1 | nil | Soumet des dégâts Bukkit attribués au boss. Les coups contre des joueurs passent par le calcul de combat EliteMobs avec le multiplicateur ; les autres cibles n'appliquent pas ce multiplicateur. |
push(target, vector, additive?=false) | handle de cible, table/handle de vecteur, bool?=false | nil | Après un tick via une tâche propre au script, remplace ou ajoute la vélocité des cibles capturées ; un même vecteur résolu est utilisé pour toutes, et un vecteur absent/non fini devient nul. |
set_facing(target, vector) | handle de cible, table/handle de vecteur | nil | Oriente les entités cibles résolues le long du vecteur. |
spawn_particles(target, particles) | handle de cible, table/string | nil | Fait apparaître la spécification de particules aux positions cibles résolues. |
Ces appels n'exécutent pas automatiquement une liste d'actions Elite Script, ses conditions, recharges, délais d'avertissement ou répétitions. Les handles de cible conservent le contexte d'événement et de cible directe d'origine ; évitez de réutiliser des handles dépendant d'un événement entre hooks indépendants. first_entity() désigne le premier résultat du résolveur, pas forcément l'entité la plus proche.
Méthodes du handle de cible
| Méthode | Args | Retour | Description |
|---|---|---|---|
entities() | — | table | Résout et renvoie des Entity Tables. |
locations() | — | table | Résout et renvoie des tables de position. |
first_entity() | — | table/nil | Renvoie la première entité résolue. |
first_location() | — | table/nil | Renvoie la première position résolue. |
Méthodes du handle de zone
| Méthode | Args | Retour | Description |
|---|---|---|---|
full_target(coverage?) | number? | handle de cible | Crée un handle de cible pour l'intérieur de la forme. |
border_target(coverage?) | number? | handle de cible | Crée un handle de cible pour le bord. |
full_locations(coverage?) | number? | table | Résout les positions échantillonnées à l'intérieur. |
border_locations(coverage?) | number? | table | Résout les positions échantillonnées sur le bord. |
full_entities() | — | table | Résout les entités situées à l'intérieur de la forme. |
border_entities() | — | table | Résout les entités situées sur le bord. |
contains(location, mode?="full") | table, string? | bool | Teste l'appartenance à la forme complète ou au bord. |
watch(callbacks, mode?="full") | table, string? | int | Démarre une surveillance possédée {on_enter, on_leave} et renvoie son identifiant de tâche. |
Méthodes du handle de vecteur relatif
| Méthode | Args | Retour | Description |
|---|---|---|---|
resolve() | — | table | Résout le vecteur pour le contexte courant. |
Table d'événement des pouvoirs EliteMobs
Les valeurs d'événement des pouvoirs de boss EliteMobs exposent des champs et des méthodes de façon conditionnelle selon le type d'événement.
Propriétés
| Champ | Type | Description |
|---|---|---|
damage_amount | number/nil | Instantané du montant d'un événement de dégâts. |
damage_cause | string/nil | Nom de DamageCause lorsque l'événement de dégâts en expose un. |
damager | table/nil | Référence brute du responsable des dégâts par entité ; pour un projectile, il s'agit du projectile et non de son tireur. |
projectile | table/nil | Référence du projectile lorsque l'assaillant est un projectile. |
spawn_reason | string/nil | Raison d'apparition de l'élite. |
entity | table/nil | Renfort blessé, entité de l'événement de mort ou de zone, selon le hook. |
is_damage_transfer | bool/nil | Dégâts de joueur à élite uniquement : indique si ce hook traite un coup explicitement transféré. |
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
cancel_event() | — | nil | Annule un EliteDamageEvent ou un autre événement annulable. |
set_damage_amount(amount) | number | nil | Remplace les dégâts d'un EliteDamageEvent ; exige l'appel avec un point : context.event.set_damage_amount(...). |
multiply_damage_amount(multiplier) | number | nil | Multiplie les dégâts d'un EliteDamageEvent ; exige l'appel avec un point : context.event.multiply_damage_amount(...). |
get_damage_amount() | — | number | Retourne le montant actuel d'EliteDamageEvent après modifications. |
transfer_damage(target, amount) | référence d'entité, number | bool | Dégâts de joueur à élite uniquement : soumet des dégâts finis et non négatifs à une autre élite vivante autorisée par l'instance. Zéro, entrées annulées, transferts imbriqués et cible originale retournent false ; un destinataire non élite provoque une erreur. True signifie soumis, pas dégâts garantis. Ne soustrait ni n'annule les dégâts originaux. |
context.world : ajouts et redéfinitions EliteMobs
Les pouvoirs de boss héritent de la table de monde partagée, notamment des fonctions EliteMobs partagées d'effet de foudre et d'apparition de PNJ, puis ajoutent ou redéfinissent les méthodes ci-dessous. Les méthodes de coordonnées héritées conservent leur comportement partagé. Les méthodes de position propres au boss utilisent son convertisseur : une valeur absente ou non-table utilise le boss, les coordonnées omises valent zéro et un monde explicitement nommé doit être résolu.
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
play_sound_at_location(location, sound, volume?=1, pitch?=1) | table, string (Sound), number?=1, number?=1 | nil | Redéfinition qui accepte les sons enregistrés ou personnalisés avec espace de noms via la prise en charge d'EliteMobs. |
spawn_particle_at_location(location, particle, count?=1) | table, string (Particle)/table, int?=1 | nil | Redéfinition qui accepte une table de spécification de particules EliteMobs. |
set_block_at_location(location, material, require_air?=false) | table, string (Material), bool?=false | nil | Redéfinition qui place le bloc de façon permanente via le gestionnaire de blocs temporaires, sans temporisateur ni suivi. |
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false) | table, string (Material), int?=0, bool?=false | nil | Redéfinition qui utilise le placement de bloc temporaire d'EliteMobs. |
get_block_type_at_location(location) | table | string/nil | Renvoie un nom de Material en majuscules, ou nil pour une position invalide. |
get_highest_block_y_at_location(location) | table | int/nil | Redéfinition qui renvoie le Y du bloc le plus haut, ou nil. |
get_blast_resistance_at_location(location) | table | number | Renvoie la résistance aux explosions du bloc, 0 par défaut pour une position invalide. |
is_air_at_location(location) | table | bool | Teste si le bloc visé est de l'air. |
is_passable_at_location(location) | table | bool | Teste la traversabilité au sens de Bukkit. |
is_passthrough_at_location(location) | table | bool | Teste si le matériau n'est pas solide. |
is_on_floor_at_location(location) | table | bool | Teste la présence d'une cible non solide avec un bloc solide en dessous. |
is_standing_on_material(location, material) | table, string (Material) | bool | Teste le bloc situé en dessous. |
strike_lightning_at_location(location) | table | nil | Redéfinition qui active le contournement de foudre d'EliteMobs avant de frapper. |
run_empowered_lightning_task_at_location(location) | table | nil | Émet indépendamment 60 itérations d'avertissement, puis un véritable éclair et une boule de feu descendante de puissance 5. Inflige des dégâts ; la pause ou fermeture de Lua ne l'annule pas. |
set_world_time(time) / set_world_time(location, time) | int/table, int? | nil | Définit l'heure du monde du boss ou celle du monde de la position fournie. |
set_world_weather(weather, duration?=6000) / set_world_weather(location, weather, duration?=6000) | string/table, string/int?, int?=6000 | nil | Définit CLEAR, PRECIPITATION, RAIN ou THUNDER. |
run_console_command(command) | string | nil | Exécute une commande en tant que console. |
spawn_boss_at_location(file, location?, level?) | string, table?, int? | table/nil | Fait apparaître un boss personnalisé à la position fournie ou actuelle et au niveau fourni ou actuel. |
spawn_custom_boss_at_location(file, location, options?) | string, table, table? | table/nil | Fait apparaître un boss personnalisé ; les options prennent en charge silent, level, add_as_reinforcement et velocity. |
spawn_entity_at_location(type, location, options?) | string (EntityType), table, table? | table/nil | Fait apparaître une entité vanilla ; les options prennent en charge velocity, duration, l'effect EntityEffect, on_land et max_ticks. |
spawn_falling_block_at_location(location, material, options?) | table, string (Material), table? | table/nil | Fait apparaître un bloc qui tombe ; les options prennent en charge drop_item, hurt_entities, velocity et on_land. |
spawn_reinforcement_at_location(file, location, duration?=0, velocity?) | string, table, int?=0, table? | table/nil | Invoque un renfort lié au boss ; une durée positive le retire après ce nombre de ticks. |
spawn_fireworks_at_location(location, options) | table, table | table/nil | Fait apparaître un feu d'artifice ; les options prennent en charge effects, type, flicker, trail, colors, fade_colors, power, velocity et shot_at_angle, avec des noms FireworkEffect.Type pour type. |
spawn_splash_potion_at_location(location, options) | table, table | table/nil | Fait apparaître une potion projetable ; les entrées effects acceptent un type PotionEffectType, duration, amplifier et overwrite, plus un velocity de premier niveau. |
generate_fake_explosion(locations, source?) | table, table? | nil | Retire de vrais blocs et crée des débris qui infligent des dégâts si la régénération des explosions est activée. La restauration commence après 1200 ticks ; fermer Lua ne l'annule pas. Gardez les positions dans le monde du boss. |
spawn_fake_gold_nugget_at_location(location, velocity, gravity?=false) | table, table, bool?=false | table/nil | Fait apparaître un faux projectile de pépite d'or. |
run_fake_gold_nugget_damage(projectiles) | table | nil | Exécute la passe de dégâts des faux projectiles. |
generate_player_loot(times?=1) | int?=1 | nil | Génère le butin des joueurs pour les assaillants éligibles. |
drop_bonus_coins(multiplier?=2) | number?=2 | nil | Fait tomber des pièces bonus pour les assaillants éligibles. |
Table de faux projectile EliteMobs
spawn_fake_gold_nugget_at_location renvoie cette table lorsque l'apparition réussit.
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
get_location() | — | table | Renvoie la position du faux projectile. |
set_gravity(enabled) | bool | nil | Définit la gravité du faux projectile. |
remove() | — | nil | Supprime le faux projectile. |
is_removed() | — | bool | Teste s'il a été supprimé. |
context.settings
Les pouvoirs de boss EliteMobs reçoivent cette table de paramètres du même constructeur de table de monde.
Méthodes
| Méthode | Args | Retour | Description |
|---|---|---|---|
warning_visual_effects_enabled() | — | bool | Renvoie le paramètre actuel des effets visuels d'avertissement. |