Lua APIリファレンス
このリファレンスは、MagmaCore、FreeMinecraftModels、EliteMobsのLuaテーブルと実行コンテキストを説明します。共有テーブルとEliteMobsのボスパワーテーブルでは契約が異なるため、作成するスクリプトに対応する節を参照してください。
ほとんどのテーブルメソッドは table.method(...) と table:method(...) の両方を受け付けます。グローバル関数 em.create_*、em.zone.create_*、em.location.* と、後述するボスイベントのダメージsetterはドット構文が必要です。共有のライブフィールドはアクセス時に解決されるため、最新値が必要なら再度読み取ってください。代入するとこの取得処理が隠れます。Lua変数に保存した位置などのスナップショットは自動更新されません。
色処理を行うと記載されたメソッドは、共通のカラーコード構文を使用します。チャット、タイトル、バー、カスタム名、propのインベントリタイトルなどが対象です。
エンティティテーブル
MagmaCoreのentityテーブルは汎用エンティティ値の基底です。Living Entity、Player、FreeMinecraftModels Propの各テーブルはこれを継承します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
uuid | string | エンティティのUUID。 |
entity_type | string | 小文字のBukkitエンティティタイプ。 |
is_valid | bool | 現在の有効性の値。 |
is_dead | bool | 現在の死亡状態。 |
current_location | table/nil | 現在の {x, y, z, yaw, pitch, world} ロケーション。 |
world | string/nil | 現在のワールド名。 |
is_player | bool | エンティティがプレイヤーかどうか。 |
is_hostile | bool | エンティティがBukkitの Monster を実装しているかどうか。 |
is_passive | bool | エンティティがBukkitの Animals を実装しているかどうか。 |
is_on_ground | bool | 現在の接地状態。 |
is_flying | bool | プレイヤーの現在の飛行状態。他の種類はfalse。 |
in_block | bool | 矢のみ:現在ブロックに刺さっているか。 |
attachment_location | table/nil | 刺さった矢の現在位置を含むブロックの中心。刺さっていなければnil。 |
attachment_block | table/nil | 有効なエンチャントのアクションが所有する矢が実際に当たったブロックの中心。記録された有効な命中がない場合や、矢が離れた、ワールドが変わった、アクションが終了した後はnil。当たったブロックを識別するもので、衝突しない安全な移動先を示すものではない。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
teleport(location) | table | nil | locationテーブルの位置へテレポートする。 |
remove() | — | nil | まだ有効であればエンティティを削除する。 |
set_silent(enabled) | bool | nil | サイレント状態を設定する。 |
set_invulnerable(enabled) | bool | nil | 無敵状態を設定する。 |
set_gravity(enabled) | bool | nil | 重力の状態を設定する。 |
set_glowing(enabled) | bool | nil | 発光状態を設定する。 |
set_velocity(x, y, z) | number, number, number | nil | 速度を置き換える。各成分は有限値が必要。 |
set_fall_distance(distance) | number | nil | 有限かつ非負の落下距離を設定する。 |
set_shooter(uuid) | string | bool | 投射物のみ:Bukkitの ProjectileSource を実装する解決済みエンティティを設定する。 |
set_direction(x, y, z) | number, number, number | nil | ファイアボールのみ:有限かつ非ゼロの飛行方向を設定する。 |
set_pickup(status) | string | nil | 矢のみ:ALLOWED、DISALLOWED、CREATIVE_ONLY。 |
can_receive_hostile_effect(actor_uuid) | string | bool | オンラインのプレイヤーから敵対効果を受けられるか確認する。提供元は追加の戦闘制限を適用できる。 |
has_clear_movement_path(location) | table | bool | 同一ワールドでの移動を、衝突、ワールド境界、読み込み済みチャンクに対して事前確認する。プレイヤー以外のエンティティでは保護領域も拒否する。実際には移動しない。 |
movement_path_status(location) | table | string | clear、blocked、protected、unavailable を返す。protected はプレイヤー以外に適用される。衝突判定は当たり判定ボックスが通る範囲全体を保守的に調べる。 |
プレイヤーの経路が通行可能でも、入場や戦闘が許可されるわけではありません。実際の移動には、領域への入場制限などの移動リスナーが引き続き適用されます。建築保護だけでプレイヤーの移動が禁止されることはありません。
共有の位置引数には x、y、z が必要です。ワールドの省略時や名前を解決できない場合は、エンティティのワールドを使用します。一方、em.location.* は読み込み済みワールドが必要で、省略座標はゼロです。移動の事前確認や can_receive_hostile_effect は、直接のテレポート、速度、ダメージ呼び出しに自動適用されません。
can_receive_hostile_effect は有効なオンラインプレイヤーを実行者とし、同じワールドの有効で生存中の非プレイヤーを対象とします。アーマースタンド、無敵、NPCタグ付き、飼いならされた動物は拒否されます。EliteMobsは戦闘の認可条件を追加できます。set_shooter、set_owner の不正UUIDや、無効なpickup列挙名はエラーになる場合があります。
エンティティテーブル:EliteMobs拡張
EliteMobsのエンリッチャーは共有テーブルに以下を追加します。追跡フラグと elite の有無は構築時に決まり、ライブと明記したフィールドだけがアクセス時に更新されます。FreeMinecraftModelsの任意のEliteMobsアダプターはエリート情報を追加しますが、elite_player は追加しません。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
is_elite | bool | テーブル構築時にEliteMobsが追跡していたか。 |
is_custom_boss | bool | 追跡中のエリートがカスタムボスかどうか。 |
is_significant_boss | bool | 体力倍率が 1 を超えるカスタムボスかどうか。 |
elite | table/nil | ネストされたEliteMobsデータ。解決済みのエリートにのみ存在する。 |
elite.level | int | エリートレベルのスナップショット。 |
elite.name | string/nil | エリートの表示名のスナップショット。 |
elite.health | number | 現在の体力。 |
elite.max_health | number | 現在の最大体力。 |
elite.is_custom_boss | bool | そのエリートがカスタムボスかどうか。 |
elite.health_multiplier | number | 設定された体力倍率のスナップショット。 |
elite.damage_multiplier | number | 設定されたダメージ倍率のスナップショット。 |
elite_player | table/nil | プレイヤー専用。EliteMobsプレイヤーデータがあればアクセス時に解決される。 |
elite_player.tier | number | エンチャント照会を更新せず、スキルXPから計算した戦闘ティア。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
elite.remove() | — | nil | EliteMobsの削除パイプラインを通してエリートを削除する。 |
エンティティテーブル:FreeMinecraftModels拡張
FreeMinecraftModelsのエンリッチャーは以下のスナップショットを追加します。構築時に is_modeled がtrueなら model が存在します。プレイヤー専用の値はプレイヤーテーブルにのみ現れます。モデルと権限のメソッドは呼び出し時に実際のオブジェクトを照会します。EliteMobsのスクリプトでは、EliteMobsの任意のFreeMinecraftModelsアダプターが is_modeled、is_prop、model を追加しますが、is_op と has_permission は追加しません。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
is_modeled | bool | FreeMinecraftModelsがモデル付きエンティティとして解決するかどうか。 |
is_prop | bool | エンティティがアーマースタンドを基盤とするFreeMinecraftModelsのpropかどうか。 |
model | table/nil | ネストされたモデルデータ。モデル付きエンティティに対してのみ存在する。 |
model.model_id | string/nil | モデルブループリントの識別子。 |
model.is_dynamic | bool | モデル付きエンティティが動的かどうか。 |
is_op | bool | プレイヤー専用のサーバーオペレーター状態。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
model.play_animation(name, blend?=false, loop?=false) | string, bool?=false, bool?=false | bool | 再生要求を受理したかを返す。待機中や抑制された攻撃要求も含み、終端の死亡状態では拒否する。 |
model.stop_animations() | — | nil | 待機中の再生を消去し、可能ならidleへ戻す。終端の死亡状態は維持する。 |
model.remove() | — | nil | モデル付きエンティティを削除する。 |
has_permission(node) | string | bool | プレイヤー専用の権限チェック。 |
生物エンティティテーブル
MagmaCoreのliving entityテーブルは、Entity Tableのすべてのプロパティとメソッドを継承します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
health | number | 現在の体力。 |
maximum_health | number | 現在の最大体力。 |
name | string/nil | 現在のBukkitエンティティ名。 |
is_alive | bool | Bukkitの死亡状態を現在時点で反転した値。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
damage(amount) | number | nil | Bukkitのダメージを与える。 |
push(x, y, z) | number, number, number | nil | 現在の速度へ即座にベクトルを加算する。 |
set_facing(x, y, z) | number, number, number | nil | 向きを変えたテレポートで方向ベクトルへ向かせる。 |
add_potion_effect(type, duration, amplifier) | string (PotionEffectType), int, int | nil | typeが解決できた場合にポーション効果を追加する。 |
remove_potion_effect(type) | string (PotionEffectType) | nil | typeが解決できた場合にポーション効果を除去する。 |
get_scale() | — | number | 修飾子込みの実効scale値を返す。利用できなければ 1.0。 |
set_scale(value) | number | nil | サーバーが対応していればscaleの基礎値を設定する。 |
set_ai(enabled) | bool | nil | 生物エンティティのAIを有効または無効にする。 |
set_owner(player_uuid) | string | bool | 飼いならせるエンティティをオンラインプレイヤーのものにし、オオカミの怒りも解除する。非対応の対象や不在プレイヤーはfalse。 |
has_potion_effect(type) | string | bool | Bukkitのポーション名を照会する。名前を解決できなければfalse。 |
プレイヤーテーブル
MagmaCoreのplayerテーブルは、Living Entity Tableのすべてのプロパティとメソッドを継承します。
FreeMinecraftModelsは is_holding_elitemobs_item(filename) も追加します。shroomwhispers_shears.yml のように .yml を含む完全なEliteMobsアイテムファイル名を渡してください。メインハンドのEliteMobsタグを確認し、表示名では判定しません。空の手、別のアイテム、利用できないEliteMobs連携ではfalseです。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
game_mode | string | 小文字のBukkitゲームモードのスナップショット。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
send_message(text) | string | nil | MagmaCoreの色パーサーで処理したテキストを送信する。 |
chat(text) | string | nil | プレイヤーとしてBukkitチャットを送る。先頭がスラッシュならそのプレイヤーとしてコマンドも実行する。色処理を行う。 |
get_held_item() | — | table/nil | メインハンドの {type, amount, display_name} スナップショットを返す。空ならnil。typeは大文字、表示名がなければマテリアル名を使う。 |
consume_held_item(amount?=1) | int?=1 | nil | タスク実行時にメインハンドにあるスタックを減らす。支払いの成否は返さず、確認したアイテムも保持しない。正の量を渡すこと。負数は拒否されずスタックを増やす場合がある。 |
has_item(material, amount?=1) | string (Material), int?=1 | bool | インベントリに指定数量が含まれるかを判定する。 |
get_target_entity(range?=50) | number?=50 | table/nil | 目からブロックとエンティティを同時にレイキャストする。液体、通過可能ブロック、自身を除外し、エンティティの判定半径は 0.5。 |
get_eye_location() | — | table | 目の高さのロケーションを返す。 |
get_look_direction() | — | table | 単位ベクトルの {x, y, z} 方向を返す。 |
send_block_change(x, y, z, material, ticks?=-1) | int, int, int, string (Material), int?=-1 | bool | クライアント限定のブロックと、正のticks後の任意の復元をキューに入れる。trueは受理を示す。無効または設置不能なマテリアルはfalse。 |
reset_block(x, y, z) | int, int, int | bool | このプレイヤーに対して実際のブロックを復元する処理をキューに入れる。 |
sleep(x, y, z) | number, number, number | nil | 実物の WHITE_BED の設置と強制睡眠の試行をキューに入れる。起床・切断時に元のBlockDataのみを復元し、ブロックエンティティの内容は保存しない。最初の確認は20ticks後、以降10ticksごと。 |
wake_up() | — | nil | 睡眠中であればプレイヤーを起こす処理をキューに入れる。 |
show_boss_bar(text, color?=WHITE, progress, ticks?=-1) | string, string (BarColor)?=WHITE, number, int?=-1 | nil | 現在のソリッドなボスバーを置き換え、正のticks後に非表示にする。進捗は 0..1 に制限し、不正な色はWHITE。進捗は必ず第3引数で、既定色にはnilを渡す。 |
hide_boss_bar() | — | nil | プレイヤーの現在のLuaボスバーを削除する。 |
show_action_bar(text, ticks?=-1) | string, int?=-1 | nil | 一度だけ送信するか、正の継続時間が終わるまで40ticksごとに繰り返す。 |
show_title(title, subtitle?="", fade_in, stay, fade_out) | string, string?="", int, int, int | nil | 色処理されたタイトルとサブタイトルを表示する。 |
UIヘルパーはBukkit処理をキューに入れ、ホストプラグインに組み込まれたMagmaCoreのコピー内でプレイヤー単位にバーを共有します。スクリプト単位ではありません。新しい show_boss_bar はプレイヤーの現在のバーを置き換え、新しい show_action_bar は現在の繰り返しアクションバーをキャンセルします。終了タイマーは自身を開始したバーまたはアクションバーだけを削除するため、古い終了タイマーが新しいものを消すことはなくなりました。これらのUIタイマーとキューに入ったブロック変更は context.scheduler に属しません。ブロック変更は実行時のプレイヤーワールドを使い、後の復元もその時点のワールドを読みます。ワールド移動後に元の世界へ復元されるとは限りません。睡眠の後片付けは20tick後に最初の確認を行い、その後は10tickごとに確認します。
ワールドテーブル
MagmaCoreのworldテーブルは context.world として公開され、構築時のワールドを保持します。ボスパワーはこれを継承し後述の上書きを適用します。共有の近傍検索は radius を半寸法とする軸平行ボックスで、球ではありません。配列は1から始まり、所有者やゲームモードを自動では除外しません。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
name | string | ワールド名のスナップショット。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
get_block_at(x, y, z) | int, int, int | string | 小文字のMaterial名を返す。未読み込みのチャンクを読み込むことはなく、その場合は air を返す。 |
set_block_at(x, y, z, material) | int, int, int, string (Material) | bool | ブロック設置をキューに入れる。無効なマテリアルはfalseを返し、未読み込みのチャンクはキューされたタスクによりスキップされる。 |
get_highest_block_y(x, z) | int, int | int | 最も高いブロックのY座標を返す。 |
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 | パーティクルを生成する。無効な名前の場合は何も起きない。 |
play_sound(sound, x, y, z, volume?=1, pitch?=1) | string (Sound), number, number, number, number?=1, number?=1 | nil | 登録済みのサウンド、または小文字の名前空間付きリソースパックサウンドキーを再生する。 |
strike_lightning(x, y, z) | number, number, number | nil | 落雷を発生させる。 |
get_time() | — | int | ワールド時間をtick単位で返す。 |
set_time(ticks) | int | nil | ワールド時間を設定する。 |
get_nearby_entities(x, y, z, radius) | number, number, number, number | table | 付近のEntityテーブルまたはLiving Entityテーブルを返す。 |
get_nearby_players(x, y, z, radius) | number, number, number, number | table | 付近のPlayerテーブルを返す。 |
spawn_entity(type, x, y, z) | string (EntityType), number, number, number | table/nil | バニラエンティティを生成する。未知の列挙名はnilだが、有効でも生成不能な種類はエラーになる場合がある。 |
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) | 数値6個、number?、string?、bool?、bool? | table/nil | hit_entity、hit_location、hit_block を返す。液体モードは NEVER、SOURCE_ONLY、ALWAYS。loaded_only はレイの外接矩形内の未読み込みチャンクを拒否してnilを返す。 |
place_temporary_block(x, y, z, material, ticks?=0, require_air?=false) | int, int, int, string (Material), int?=0, bool?=false | bool | 一時ブロックを設置する。無効なマテリアルや未読み込みのチャンクの場合はfalseを返す。 |
drop_item(x, y, z, material, amount?=1) | number, number, number, string (Material), int?=1 | table/nil | アイテムを自然にドロップし、そのEntity Tableを返す。無効なマテリアルの場合はnilを返す。 |
spawn_firework(x, y, z, colors, type?=BALL, power?=1) | number, number, number, table, string (FireworkEffect.Type)?=BALL, int?=1 | nil | Bukkitの Color 定数名を使って花火をキューに入れる。1つも解決できない場合は白になる。 |
strike_lightning_at_location(location) | table | nil | locationテーブルのワールドで落雷を発生させる。 |
play_sound_at_location(location, sound, volume?=1, pitch?=1) | table, string (Sound), number?=1, number?=1 | nil | 登録済みのサウンド、または小文字の名前空間付きリソースパックサウンドキーを再生する。 |
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 | このテーブルのワールドを通して生成する。同じワールドの位置を渡すこと。 |
get_block_at_location(location) | table | string | 小文字のマテリアル名を返す。無効なロケーションや未読み込みのチャンクの場合は air。 |
set_block_at_location(location, material) | table, string (Material) | bool | locationテーブルのワールドでブロック設置をキューに入れる。 |
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false) | table, string (Material), int?=0, bool?=false | bool | locationテーブルのワールドに一時ブロックを設置する。 |
get_highest_block_y_at_location(location) | table | int/nil | 最も高いブロックのY座標を返す。無効なロケーションの場合はnil。 |
terrain_impact_at_location(location, options?) | table, table? | table/nil | 一時的な地形衝撃の視覚効果を表示する。オプションは radius=4.5 (0.5–6)、intensity=1 (0–1)、duration_ticks=35 (1–200)、view_range=48 (1–96)、seed。ハンドルまたは nil を返す。 |
terrain_impact(x, y, z, options?) | number, number, number, table? | table/nil | このワールドの座標に同じ視覚効果を表示する。 |
impact.is_active() | — | bool | 返されたハンドルの効果が有効かを調べる。impact.id は文字列の識別子。 |
impact.remove() | — | bool | 有効な効果を削除する。既に無効な場合や削除に失敗した場合は false。 |
get_entity(uuid) | string | table/nil | このワールドの読み込み済みエンティティ登録簿から有効な対象を解決する。有効なUUID文字列を使うこと。 |
block_is_passable(x, y, z) | int, int, int | bool/nil | ブロックの通過可否を返す。未読み込みチャンクや高さ範囲外はnil。 |
location_is_protected(location) | table | bool | 登録された保護提供元を照会する。ワールド省略時はこのワールドを使う。 |
spawn_dust(location, count, red, green, blue) | table, int, int, int, int | nil | RGB各0~255、固定サイズ、各軸の広がり0.1でDUSTを生成する。未読み込みチャンクは無視。同じワールドの位置を使う。 |
何にも当たらないレイキャストは、ヒットフィールドがnilの空テーブルを返します。ブロックへのヒットは小文字のmaterialを持つ hit_block = {x, y, z, material} です。複合検索は判定半径 0.5 でエンティティフィルターを使いません。loaded_only=true は外接矩形全体を調べるため、実際の経路から離れた未読み込みチャンクでも拒否できます。不正な液体名はエラーです。
共有のパーティクル名は検索前に大文字化されます。これらの位置指定メソッドにはデータ引数がないため、データ必須のパーティクルはエラーになる場合があります。RGBの粉塵には spawn_dust を使ってください。最高ブロック検索や生成処理には一般的なチャンク読み込み防止機能はありません。ブロック設置は保護領域を自動確認しません。trueは、予約した編集や require_air 条件の成功を証明しません。
正のticksを指定した一時ブロックは元のBlockDataを保存し、タイマー終了時、チャンクやワールドのアンロード時、またはプラグインの終了時に復元します。復元はブロックがまだ一時ブロックのままである場合にだけ行われるため、後からの編集は上書きされません。まだ一時ブロックが置かれているブロックに再度一時ブロックを設置すると、タイマーが再開され、最初に保存した元のブロックが維持されます。チェストや看板などのブロックエンティティを持つブロック、未ロードのチャンク、別の一時ブロック所有者がすでに保持しているブロックはスキップされます。一時ブロックを壊しても何もドロップせず、復元しないまま追跡が終了します。そこにブロックを設置した場合も追跡は終了します。0以下のticksでは、追跡せずにブロックを恒久的に設置します。スクリプト単位の変更取り消し機能ではありません。
共有ワールドのEliteMobs追加機能
EliteMobsはNPCスクリプトを含む共有ワールドテーブルに以下を追加します。対象チャンクが読み込まれている必要があります。共有版 spawn_boss_at_location は位置とレベルが必須で、ボスパワーでは後述の省略可能な形式に上書きされます。
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
lightning_effect_at_location(location) | table | nil | EliteMobsの雷生成バイパスを使い、通常のダメージを伴わない雷を表示する。 |
spawn_npc_at_location(file, location) | string, table | table/nil | 設定済みNPCを生成して remove() を持つハンドルを返す。生成不能ならnil。 |
spawn_boss_at_location(file, location, level) | string, table, int | table/nil | 設定済みカスタムボスを生成し、共有のLiving Entity Tableを返す。利用できなければnil。 |
context.world:FreeMinecraftModels追加機能
FreeMinecraftModelsは自身のMagmaCoreワールドテーブルにこれらを登録し、propスクリプトの context.world で公開します。EliteMobsが無効、またはプレイヤーを解決できない場合はfalseです。ルートヘルパーは位置が省略または使用不能ならプレイヤー位置を使います。
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
start_elitemobs_transport(player, route_id) | player, string | bool | 同一ワールドのプレイヤーに保存済みEliteMobs輸送ルートを開始する。プレイヤーや連携が利用不能ならfalse。 |
drop_elitemobs_procedural_loot(player, level, location?) | table/string, int, table? | bool | プレイヤー向けに手続き生成されたEliteMobsアイテムを1つドロップする。手続き生成アイテムのドロップが無効な場合はfalseを返す。 |
drop_elitemobs_random_loot(player, level, location?) | table/string, int, table? | bool | 指定レベルでそのプレイヤー向けにEliteMobsのルートテーブルを抽選する。 |
drop_elitemobs_custom_loot(player, file, level, location?) | table/string, string, int, table? | bool | 指定したEliteMobsカスタムアイテムファイルをプレイヤー向けにドロップする。ファイルが解決できない場合はfalseを返す。 |
player 引数はplayerテーブル、UUID文字列、または正確なプレイヤー名を受け付けます。location 引数はlocationテーブル、または current_location を持つentityテーブルを受け付けます。手続き生成ルートはEliteMobsのインベントリ直接配布設定に従い、入りきらない分はプレイヤー位置へ落とします。常に指定位置へ落とすわけではありません。
em ヘルパーテーブル
MagmaCoreはフック実行前にこのテーブルをグローバル公開します。コンストラクターはデータのみを作り、監視登録、ワールド読み込み、形状全体の検証は行いません。グローバル関数にはドットを使います。返された位置・ゾーンのメソッドはコロンも受け付け、テーブルを変更して同じテーブルを返します。ゾーンsetterは渡した位置テーブルを参照のまま保持します。
プロパティ
ヘルパーコンストラクタは以下のコンパクトなデータテーブルを返します。
| フィールド | 型 | 説明 |
|---|---|---|
location.x | number | em.create_location が返すX座標。 |
location.y | number | em.create_location が返すY座標。 |
location.z | number | em.create_location が返すZ座標。 |
location.world | string/nil | em.create_location に渡された場合のワールド名。 |
location.yaw | number/nil | em.create_location に渡された場合のyaw。 |
location.pitch | number/nil | em.create_location に渡された場合のpitch。 |
vector.x | number | em.create_vector が返すX成分。 |
vector.y | number | em.create_vector が返すY成分。 |
vector.z | number | em.create_vector が返すZ成分。 |
zone.kind | string | sphere、dome、cylinder、cuboid、cone、static_ray、rotating_ray、translating_ray のいずれか。 |
zone.radius | number/nil | sphere、dome、cylinder、coneの半径。 |
zone.height | number/nil | cylinderの高さ。 |
zone.x | number/nil | cuboidのXサイズ。 |
zone.y | number/nil | cuboidのYサイズ。 |
zone.z | number/nil | cuboidのZサイズ。 |
zone.length | number/nil | coneまたはrayの長さ。 |
zone.thickness | number/nil | static-rayの太さ。 |
zone.point_radius | number/nil | rotating-rayまたはtranslating-rayのポイント半径。 |
zone.animation_duration | number/nil | rotating-rayまたはtranslating-rayのアニメーション継続時間。 |
zone.origin | table/nil | set_center または set_origin で設定されたロケーション。 |
zone.destination | table/nil | set_destination で設定されたロケーション。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
em.create_location(x, y, z, world?, yaw?, pitch?) | number, number, number, string?, number?, number? | table | locationテーブルを返す。 |
em.create_vector(x, y, z) | number, number, number | table | {x, y, z} のベクトルテーブルを返す。 |
location.add(dx?=0, dy?=0, dz?=0) | number?=0, number?=0, number?=0 | table | その場で加算し、同じlocationテーブルを返す。 |
em.zone.create_sphere_zone(radius) | number | table | set_center(location) を持つsphere定義を返す。 |
em.zone.create_dome_zone(radius) | number | table | set_center(location) を持つdome定義を返す。 |
em.zone.create_cylinder_zone(radius, height) | number, number | table | set_center(location) を持つcylinder定義を返す。 |
em.zone.create_cuboid_zone(x, y, z) | number, number, number | table | set_center(location) を持つcuboid定義を返す。 |
em.zone.create_cone_zone(length, radius) | number, number | table | set_origin(location) と set_destination(location) を持つcone定義を返す。 |
em.zone.create_static_ray_zone(length, thickness) | number, number | table | originとdestinationのセッターを持つstatic-ray定義を返す。 |
em.zone.create_rotating_ray_zone(length, point_radius, animation_duration) | number, number, number | table | originとdestinationのセッターを持つrotating-ray定義を返す。 |
em.zone.create_translating_ray_zone(length, point_radius, animation_duration) | number, number, number | table | originとdestinationのセッターを持つtranslating-ray定義を返す。 |
zone.set_center(location) | table | table | 中心を zone.origin として設定し、同じzoneテーブルを返す。 |
zone.set_origin(location) | table | table | originを設定し、同じzoneテーブルを返す。 |
zone.set_destination(location) | table | table | destinationを設定し、同じzoneテーブルを返す。 |
em.location.is_in_dungeon(location) | table | bool | 登録済みのダンジョン領域と、dungeon の種別を報告するオーナーを判定する。 |
em.location.is_protected(location) | table | bool | 組み込みのWorldGuard/GriefPreventionアダプターと、プラグインが登録した保護オーナーを判定する。 |
em.location.owned_by(location, namespace) | table, string | bool | プラグイン名前空間による所有を判定する。 |
em.location.owners(location) | table | table | オーナー名前空間文字列の配列を返す。 |
em.location.kinds_at(location) | table | table | 所有種別の文字列配列を返す。 |
em.location.has_kind(location, kind) | table, string | bool | 所有種別を判定する。 |
em.location.* は読み込み済みワールドの名前か {name = ...} が必要で、所有者のワールドには代替しません。解決不能ならfalseまたは空配列、省略座標はゼロです。所有者の名前空間は大文字小文字を区別し、種別は区別しません。所有されているだけでダンジョンや保護対象とは限りません。登録済み提供元を調べるもので、すべてのプラグインを自動検出するわけではありません。照会した領域アダプターの失敗は保護扱いです。配列の順序は保証されません。
Mind プログラムのコンテキスト
ネイティブMindコールバックは通常のパワーやNPC用の代わりにこのコンテキストを使います。ファイル形式の行動プログラムは plugins/EliteMobs/behaviors/ からも読み込みます。ボスの行動設定を参照してください。EliteMobs連携は EliteMindService で ai.program と ai.module を登録します。通常の powers ディレクトリに置くだけでは登録されません。
| フィールド | 型 | 説明 |
|---|---|---|
tick, generation | number | 現在のゲーム tick とランタイムの世代。 |
entity | table | アクターの共有 Living Entity Table。 |
memory, perception, actuator, actions | table | 現在のコールバック内で使う、以下のサービス。 |
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
memory.get(key) | string | value/nil | 宣言済みのメモリキーを読み取る。 |
memory.set(key, value, ttl_ticks?) | string, value, int? | nil | 宣言済みのメモリに設定された型の値を書き込む。有効期限は省略可能。 |
memory.forget(key) | string | nil | 宣言済みのメモリ値を削除する。 |
memory.contains(key) | string | bool | 宣言済みのメモリ値が存在するかを調べる。 |
perception.current_target() | — | table/nil | 現在のターゲットを共有 Living Entity Table として返す。 |
perception.nearest_player(radius) | number | table/nil | 範囲内で最も近いプレイヤーを返す。 |
perception.can_see(entity_or_uuid) | table/string | bool | 生きているエンティティまでの視線が通るかを調べる。 |
perception.navigation() | — | table | destination_active、navigation_in_progress、consecutive_stuck_ticks、省略可能な destination、および tick と position を含む省略可能な last_progress を返す。 |
actuator.move_to(location, speed?=1) | table, number?=1 | bool | 有限の正の速度で、同じワールド内の位置への移動を要求する。経路探索が開始されなかった場合はfalse。 |
actuator.stop_moving() | — | nil | 経路移動を停止する。 |
actuator.look_at(location) | table | nil | 指定位置の方向を向く。 |
actuator.jump() | — | nil | ジャンプを要求する。 |
actuator.set_target(entity_or_uuid) | table/string | bool | 生きているターゲットを設定する。対象を解決できない場合は false。 |
actuator.clear_target() | — | nil | ターゲットを解除する。 |
actuator.attack(entity_or_uuid) | table/string | bool | 攻撃を要求する。対象を解決できない場合は false。 |
actuator.stop_all() | — | nil | このビヘイビアが保持するコントロールの範囲にある移動、ターゲット、攻撃を停止する。 |
actions.request(identifier, payload?) | string, table? | string | 意味に基づくアクションを要求し、結果を小文字で返す。ペイロードにはスカラー値、エンティティの UUID テーブル、world/x/y/z の位置テーブルを使用できる。 |
サービスの各テーブルはコールバック内の最初のアクセス時に作成され、再利用されます。未宣言のメモリキーはエラーです。アクチュエーターのtrueは要求の転送を示し、移動や攻撃の完了を保証しません。アクションのデータは記載した形式に対応し、任意に入れ子にしたLuaテーブルには対応しません。アクションの識別子は128文字以内の小文字の名前空間付きキーである必要があります。ペイロードに含められるエントリーは最大16個で、キーは64文字以内の小文字、文字列の値は256文字までに制限されます。stop_all を除くすべてのアクチュエーターメソッドと actions.request は、呼び出したビヘイビアが対応するコントロールを保持していない限りエラーになります。センサーはアクチュエーターもアクションもまったく使えません。Luaで記述する行動プログラムについては行動プログラムを参照してください。
ai グローバル
MagmaCoreはすべてのLua環境にこのグローバルを導入します。コンストラクターは受け取ったテーブルにタグを付けるだけで、タグ付きのテーブルはEliteMobsが行動プログラムのファイルからコンパイルします。
| フィールド | 型 | 説明 |
|---|---|---|
ai.controls.move, look, jump, target, attack, use_item, action | string | ビヘイビアの controls 配列に使うコントロール名。use_item にはLuaのアクチュエーターメソッドがない。 |
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
ai.program(definition) | table | table | id、revision、任意の modules、memories、sensors、behaviors、budget、runaway を持つプログラム定義にタグを付ける。 |
ai.module(definition) | table | table | id、revision、任意の dependencies、memories、sensors、behaviors を持つモジュール定義にタグを付ける。 |
ai.sensor(definition) | table | table | id、interval?=1、sense(c) を持つセンサーにタグを付ける。 |
ai.behavior(definition) | table | table | id、priority?=0、controls、can_start、can_continue、start、tick、stop(c, reason) を持つビヘイビアにタグを付ける。 |
context.mind_action: EliteMobs パワーフック
on_mind_action(context) で使用できます。フックは "accepted"、"deferred"、"rejected" のいずれかを返します。パワーは取り付け順に呼び出され、いずれかが受け入れると終了します。
| フィールド | 型 | 説明 |
|---|---|---|
key | string | 名前空間付きの意味的アクション識別子。 |
payload | table | 不変のJavaアクション要求から作る、変更可能なLuaコピー。UUIDは文字列、位置はテーブル。編集しても元の要求は変更されない。 |
game_tick, generation | number | アクションの tick とランタイムの世代。 |
context.state
すべてのMagmaCoreスクリプトインスタンスは、そのインスタンスの生存期間中維持されるプレーンなLuaテーブルを受け取ります。カウンター、フラグ、タスクID、フック間で共有する値の保持に使用してください。
context.state.counter = (context.state.counter or 0) + 1
context.log
MagmaCore、FreeMinecraftModels、EliteMobs NPCのメソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
info(message) | string | nil | 共有のLuaプレフィックス付きで情報メッセージをログ出力する。 |
warn(message) | string | nil | 警告をログ出力する。 |
error(message) | string | nil | 共有の警告チャンネルを通してログ出力する。 |
EliteMobsボスパワーのメソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
info(message) | string | nil | ボスパワーの情報メッセージをログ出力する。 |
warn(message) | string | nil | 警告をログ出力する。 |
debug(message) | string | nil | Luaパワーのデバッグプレフィックス付きで情報メッセージをログ出力する。 |
context.scheduler
スケジュールされたタスクはスクリプトインスタンスに属し、インスタンスが終了すると同時にキャンセルされます。以下の2系統の命名はいずれも、共有のMagmaCore面とEliteMobsのボスパワーの両方で利用できます。
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
run_later(ticks, callback) | int, function | int | 遅延後に一度だけ実行し、BukkitのタスクIDを返す。 |
run_repeating(delay, interval, callback) | int, int, function | int | 初回遅延の後に繰り返し実行し、タスクIDを返す。 |
cancel(task_id) | int | nil | 所有しているタスクをキャンセルする。 |
run_after(ticks, callback) | int, function | int | run_later のエイリアス。 |
run_every(interval, callback) | int, function | int | 初回遅延なしで繰り返し実行し、タスクIDを返す。 |
cancel_task(task_id) | int | nil | cancel のエイリアス。 |
コールバックは新しいコンテキストを受け取り、通常イベントやプレイヤーはありません。遅延解決する古いコンテキストを保存せず、必要な値やUUIDを取得しておきます。一度だけのタスクは一時停止中なら実行を待ち、繰り返しタスクは停止中のtickを飛ばして後から再実行しません。コールバックエラーはスクリプトを閉じます。所有タスクの停止は任意のワールド・エンティティ変更や別系統のUIタイマーを取り消しません。
context.cooldowns
ローカルの保存先は ScriptableEntity アダプターです。FreeMinecraftModelsはpropスクリプトごとに作成しますが、EliteMobsのNPCは全スクリプトで1つを共有するため、名前付きローカルキーが衝突します。グローバル値は同じpropまたはNPCで共有します。キー省略時は __lua: とファイル名で、名前付きキーは完全一致です。ボスパワーはボスのローカル保存先と組み込みグローバルクールダウンを共有します。
共有のローカル・グローバルとボスのローカルは、要求した1tickを50msとして実時間を測り、一時停止や低TPSでも進みます。ボスのグローバルはサーバーtickを数え、遅い方の期限を保持します。短い set_global で有効なグローバルクールダウンが短縮されることはなく、0以下の期間では何も起こりません。ローカル確認はグローバルを自動確認しません。
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
local_ready(key?) | string? | bool | 指定キーのローカルクールダウンが準備完了かを判定する。 |
local_remaining(key?) | string? | int | 残りticksを返す。準備完了の場合は 0。 |
check_local(key, duration) | string/nil, int | bool | 準備完了ならクールダウンを開始してtrueを返す。デフォルトキーを使う場合はnilを渡す。 |
set_local(duration, key?) | int, string? | nil | ローカルクールダウンを設定または解除する。0以下の値を渡すと解除される。 |
global_ready() | — | bool | オーナーのグローバルクールダウンが準備完了かを判定する。 |
set_global(duration) | int | nil | グローバルクールダウンをtick単位で設定する。共有のMagmaCore面では0以下の値を渡すと解除される。 |
context.zones:共有MagmaCore API
FreeMinecraftModelsスクリプト、EliteMobsのNPCスクリプト、その他のデフォルトのMagmaCoreコンシューマは、現在のスクリプトオーナーのワールド内で整数のゾーンハンドルを受け取ります。
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
create_sphere(x, y, z, radius) | number, number, number, number | int/nil | sphereを登録してそのハンドルを返す。オーナーにワールドがない場合はnil。 |
create_cylinder(x, y, z, radius, height) | number, number, number, number, number | int/nil | cylinderを登録してそのハンドルを返す。オーナーにワールドがない場合はnil。 |
create_cuboid(x, y, z, x_size, y_size, z_size) | number, number, number, number, number, number | int/nil | cuboidを登録してそのハンドルを返す。オーナーにワールドがない場合はnil。 |
watch(handle, on_enter?, on_leave?) | int, function?, function? | bool/nil | 既知のハンドルに対して境界の追跡を有効にする。関数を渡すと対応する on_zone_enter または on_zone_leave フックが有効になる。渡した関数の本体が直接呼び出されるわけではない。 |
unwatch(handle) | int | nil | 追跡を停止してハンドルを削除する。 |
汎用の監視はプレイヤーの位置点を判定します。この経路の直方体寸法は半寸法で、Zがゼロなら非ゼロのXを代用します。EliteMobsのエンティティ重なりやサンプル点検索と同一の体積ではありません。ゾーンは作成座標とワールドを保持し、各tickには所有者の現在のワールドのプレイヤーを調べます。境界を越えたプレイヤーは context.player と context.event.player から取得できます。
作成直後から内外の追跡が始まり、watch は後からフックの呼び出しを設定します。既に内部として追跡されたプレイヤーに対し、後から監視を付けても入場は通知しません。2回目の watch で省略したコールバックは、以前の設定を消しません。切断や unwatch は退場フックを保証しません。ゾーン確認は on_game_tick より先です。
context.event:共有MagmaCore API
このテーブルは、共有フックが現在のBukkitイベントまたはアクターを持っている間だけ存在します。スケジュールされたコールバックや、いずれの値も持たないフックには存在しません。
| フィールドまたはメソッド | 型 | 説明 |
|---|---|---|
is_cancelled | bool | イベントのサブテーブルを最初に解決した時点のキャンセル状態。cancel() や uncancel() で更新されない。 |
cancel() | method | 現在のイベントをキャンセルする。Bukkitの Cancellable を実装している場合にのみ存在する。 |
uncancel() | method | 現在のイベントのキャンセルを取り消す。Bukkitの Cancellable を実装している場合にのみ存在する。 |
player | table | 現在のアクターが取得できる場合の、そのアクターのLiving Entity Table。 |
汎用のゾーンフックはアクターを提供しますがキャンセル可能なBukkitイベントは提供しないため、is_cancelled = false と player は公開されますが cancel() と uncancel() は存在しません。
context.item
エンチャントのアクションスクリプトは、取得元にスロットとアイテムがあればこのテーブルを公開します。そのスロットを対象とし、現在のマテリアルとメタデータを取得時のものと比較しますが、損傷値と個数は無視します。インベントリを検索したり固有IDを追跡したりせず、同じスロットの同等品への交換も一致します。消費済みの弾薬ではnilの場合があります。廃止されたFreeMinecraftModelsの装備アイテム用ランタイムとは別機能です。
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
get_durability() | — | table/nil | 残り耐久度 {current, max}。対象不在や耐久度のないアイテムはnil。 |
get_durability_percentage() | — | number/nil | 残り耐久度をマテリアルの最大値で割った値。通常 0..1 だが、外部から過剰な損傷値が設定されると範囲外にもなる。 |
use_durability(amount, can_break?=false) | int, bool? | bool | 損傷を変更する。負数は修復。既定で最低1の耐久度を残し、can_break=true ならスタックを消費できる。 |
use_durability_percentage(fraction, can_break?=false) | number, bool? | bool | 同じ破壊規則で ceil(max_durability * fraction) の損傷を適用する。 |
consume(amount) | positive int | bool | 十分な個数がある場合だけ取得元スタックから消費する。 |
耐久度にはマテリアルの最大値を使い、独自の最大損傷コンポーネントは使いません。直接変更なのでバニラの消耗計算、Unbreaking、破壊不可、プレイヤーのアイテム損傷イベントは適用しません。割合は有限で計算結果が整数範囲内である必要があり、負の割合は修復します。破壊すると取得元のスタック全体を消費します。ライフサイクルと全コンテキストは独自エンチャントを参照してください。
context.prop
FreeMinecraftModelsのpropスクリプトはこのテーブルを受け取ります。基盤となるエンティティが存在する場合、MagmaCoreのEntity Tableを継承します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
model_id | string/nil | モデルブループリント名。ブループリントが存在しない場合はnil。 |
current_location | table/nil | 現在のpropのロケーション。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
play_animation(name, blend?=true, loop?=true) | string, bool?=true, bool?=true | bool | 指定した名前のアニメーションを再生する。 |
stop_animation() | — | nil | 待機中の再生を消し、可能ならidleへ戻す。終端の死亡状態は維持する。 |
hurt_visual() | — | nil | ダメージを与えずに赤く点滅する被弾表現を再生する。 |
pickup() | — | nil | 恒久的な削除をキューに入れ、設置用アイテムをドロップする。 |
has_mount_points() | — | bool | propにマウントポイントのボーンがあるかを判定する。 |
mount(player) | table | bool | 解決されたプレイヤーを最初の空き座席に乗せる処理をキューに入れる。 |
dismount(player) | table | bool | 解決されたプレイヤーをこのpropから降ろす処理をキューに入れる。 |
get_passengers() | — | table | 搭乗中のプレイヤーのEntity Tableを返す。 |
spawn_elitemobs_boss(file, x, y, z) | string, number, number, number | table/nil | EliteMobsが有効な場合にEliteMobsのカスタムボスをスポーンさせる。 |
open_inventory(player, title, rows?=3) | table, string, int?=3 | bool | 永続ストレージを開く処理をキューに入れる。行数は 1 から 6 にクランプされる。 |
place_book(player) | table | bool | propが本を保持していない場合に、手に持っている記入済みまたは未記入の本を1冊保管する処理をキューに入れる。 |
read_book(player) | table | bool | 保管されている記入済みの本を開く処理をキューに入れる。 |
take_book(player) | table | bool | 保管されている本をプレイヤーに返す処理をキューに入れる。 |
has_book() | — | bool | propが本を保管しているかを判定する。 |
drop_inventory() | — | bool | 永続ストレージを空にして中身をドロップする処理をキューに入れる。 |
drop_book() | — | bool | 保管されている本を取り除いてドロップする処理をキューに入れる。 |
is_viewing_inventory(player) | table | bool | プレイヤーがこのpropの追跡対象インベントリを表示中かを判定する。 |
set_persistent_data(key, value) | string, string | bool | propスコープの fmm_lua_ キーの下に文字列を保存する。 |
get_persistent_data(key) | string | string/nil | 保存された文字列を返す。ない場合はnil。 |
予約するprop操作のtrueは、最初のプレイヤー・基盤エンティティ確認に通ったことを示します。空席、本の保存、GUI表示の完了を保証しません。take_book は保存データを消してからインベントリに追加し、入りきらない分を落としません。1つのpropのすべての閲覧者は1つのライブインベントリを共有し、最後の閲覧者が閉じたときに保存されます。開いている間の以後の呼び出しは、そのタイトルとサイズを再利用します。保存内容が要求した行数より大きい場合は保存時のサイズで開くため、スロットが失われることはありません。propデータは基盤のアーマースタンドに保存され、回収時の新しい設置アイテムが保持するとは限りません。
on_projectile_hit では、propスクリプトは投射物の共有エンティティテーブルである context.projectile も受け取ります。他のプラグインがすでに命中をキャンセルしている場合、このフックは発火しません。context.event はキャンセル可能なFreeMinecraftModelsの命中イベントをラップし、context.event.player は射手が生物エンティティ(Mobを含む)の場合はその射手です。context.player はプレイヤーが投射物を発射した場合にのみ設定されます。
context.npc
EliteMobsのNPCスクリプトは共有のMagmaCoreコンテキストを継承し、このNPC固有のテーブルを追加します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
name | string | 設定されたNPCの表示名。 |
filename | string | NPC設定ファイル名。 |
uuid | string | ランタイムのNPC UUID。 |
activation_radius | number | 設定されたアクティベーション半径。 |
current_location | table | ロケーションのスナップショット。基盤となるliving entityが存在する間のみ利用できる。 |
entity_type | string | 大文字のBukkitエンティティタイプ。基盤となるliving entityが存在する間のみ利用できる。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
is_valid() | — | bool | NPCが有効かを判定する。 |
remove() | — | nil | NPCを管理するライフサイクルを通して削除する。 |
get_location() | — | table | 現在のNPCロケーションを返す。取得できない場合はスポーン地点にフォールバックする。返されるテーブルには direction ベクトルも含まれる。 |
get_eye_location() | — | table | 現在の目の高さのロケーションを返す。取得できない場合はスポーン地点にフォールバックする。返されるテーブルには direction ベクトルも含まれる。 |
get_activation_radius() | — | number | 現在設定されているアクティベーション半径を返す。 |
get_nearby_players(radius) | number | table | NPCの足元から3D半径内にいる同じワールドのプレイヤーを返す。ゲームモードでは絞らない。 |
face_direction_or_location(target) | table | nil | ベクトルまたは同じワールドの位置を向く。巡回移動中は無視する。 |
say_greeting(player?) | table/string? | nil | 設定された挨拶を送信する。省略時は取得できればトリガーしたプレイヤーが対象になる。playerテーブル、UUID、名前を受け付ける。 |
say_dialog(player?) | table/string? | nil | 同じプレイヤー解決方法で設定された会話文を送信する。 |
say_farewell(player?) | table/string? | nil | 同じプレイヤー解決方法で設定された別れの挨拶を送信する。 |
play_model_animation(name) | string | nil | カスタムモデルが存在する場合にモデルアニメーションを再生する。 |
patrol_pause() | — | bool | 設定された巡回を一時停止する。 |
patrol_resume() | — | bool | スクリプトの待機・一時移動後に巡回を再開する。 |
walk_to(x, y, z) | number, number, number | bool | 原点オフセットまで歩いて巡回を再開する。 |
hold(x, y, z) | number, number, number | bool | オフセットまで歩いて待機する。 |
teleport(x, y, z) | number, number, number | bool | エンティティが tick するオフセットへテレポートする。 |
EliteMobsパワーの位置テーブル
EliteMobsのボスパワー用テーブルは、get_location()、get_eye_location()、current_location、その他の位置の結果としてこの形の位置を返します。位置がない場合は空のテーブルを返します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
x, y, z | number | 座標。 |
yaw, pitch | number | 回転。 |
world | string/nil | 位置にワールドがある場合のワールド名。 |
direction | table | 向きを表す単位ベクトル {x, y, z}。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
add(dx?=0, dy?=0, dz?=0) | number?=0, number?=0, number?=0 | table | 座標をその場で加算し、同じテーブルを返す。direction は更新されない。 |
EliteMobsパワーのエンティティ参照テーブル
EliteMobsのボスパワーのメソッドは、投射物、花火、落下ブロックなどの非生物エンティティに対してこの軽量テーブルを返します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
name | string | エンティティ名のスナップショット。 |
uuid | string | エンティティのUUID。 |
entity_type | string | 大文字のBukkitエンティティタイプのスナップショット。 |
is_player | bool | 常にfalse。 |
is_elite | bool | 常にfalse。 |
is_mount | bool | ボスが返されたマウントテーブルをtrueとしてマークしない限りfalse。 |
current_location | table | ロケーションのスナップショット。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
is_valid() | — | bool | 現在の有効性を判定する。 |
get_location() | — | table | 現在のロケーションを返す。 |
get_velocity() | — | table | 現在の速度を返す。 |
is_on_ground() | — | bool | 現在の接地状態を判定する。 |
teleport_to_location(location) | table | nil | ロケーションが解決できた場合にテレポートする。 |
set_velocity_vector(vector) | table | nil | ベクトルが解決できた場合に速度を設定する。 |
set_direction_vector(vector) | table | nil | 該当する場合にファイアボールの方向を設定する。 |
set_yield(amount) | number | nil | 該当する場合にファイアボールの爆発威力を設定する。 |
set_gravity(enabled) | bool | nil | 重力を設定する。 |
detonate() | — | nil | エンティティが花火の場合に爆発させる。 |
remove() | — | nil | エンティティを削除する。 |
unregister(reason?=OTHER) | string?=OTHER | nil | 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、ARENA_RESET のいずれかを使って登録解除する。 |
is_inside_vehicle() | — | bool | エンティティが乗り物に乗っているかを判定する。 |
has_vehicle() | — | bool | 乗り物が存在するかを判定する。 |
get_vehicle() | — | table/nil | 現在の乗り物の参照を返す。 |
set_vehicle(vehicle) | table | bool | このエンティティを解決された乗り物に乗せる。 |
leave_vehicle() | — | bool | 現在の乗り物から降りる。 |
has_passengers() | — | bool | 搭乗者が存在するかを判定する。 |
get_passenger_count() | — | int | 搭乗者の数を返す。 |
get_passengers() | — | table | 搭乗者の参照を返す。 |
add_passenger(passenger) | table | bool | 解決された搭乗者を追加する。 |
remove_passenger(passenger) | table | bool | 解決された搭乗者を降ろす。 |
eject_passengers() | — | bool | すべての搭乗者を降ろす。 |
EliteMobsパワーの生物エンティティテーブル
EliteMobsのボスパワーにおける生物の値はこの独立したテーブルを使用します。BossテーブルとEliteMobs Power Playerテーブルはこれを継承します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
name | string | エンティティ名のスナップショット。 |
uuid | string | エンティティのUUID。 |
entity_type | string | 大文字のBukkitエンティティタイプのスナップショット。 |
is_player | bool | エンティティがプレイヤーかどうか。 |
is_monster | bool | エンティティがBukkitの Monster を実装しているかどうか。 |
is_elite | bool | EliteMobsがそのエンティティを追跡しているかどうか。 |
is_mount | bool | 追跡中のカスタムボスがマウントかどうか。 |
is_valid | bool | 有効性のスナップショット。 |
health | number | 体力のスナップショット。 |
maximum_health | number | 最大体力のスナップショット。 |
current_location | table | ロケーションのスナップショット。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
is_alive() | — | bool | 現在の有効性と死亡状態を判定する。 |
is_ai_enabled() | — | bool | 現在のAI状態を返す。 |
is_frozen() | — | bool | EliteMobsのカスタムボスのfrozen設定を返す。該当しない場合はfalse。 |
get_location() | — | table | 現在のロケーションを返す。 |
get_eye_location() | — | table | 現在の目の高さのロケーションを返す。 |
get_height() | — | number | Bukkitのエンティティの高さを返す。 |
get_health() | — | number | 現在の体力を返す。 |
get_maximum_health() | — | number | 現在の最大体力を返す。 |
get_velocity() | — | table | 現在の速度を返す。 |
deal_damage(amount) | number | nil | 汎用のBukkitダメージを与える。 |
deal_custom_damage(amount) | number | nil | 生きている対象へ、ボスからの生のカスタムダメージを要求する。ボス自身、無敵または死亡した対象、Survival/Adventure以外のプレイヤーはスキップする。インスタンス規則とダメージイベントのキャンセルに従う。 |
deal_damage_from_boss(amount) | number | nil | パワーの持ち主であるボスに帰属するBukkitダメージを与える。 |
restore_health(amount) | number | nil | 追跡対象であればEliteMobsを通して回復し、そうでなければBukkitの体力を最大値でクランプする。 |
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | 登録済みまたはカスタムの名前空間付きサウンドをエンティティの位置で再生する。第2引数には {volume, pitch} を渡すこともできる。 |
play_sound_at_self(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | エンティティの位置で再生するエイリアス。第2引数には {volume, pitch} を渡すこともできる。 |
spawn_particle_at_self(particle, count?=1) | string (Particle)/table, int?=1 | nil | パーティクル名の文字列またはパーティクル仕様テーブルをエンティティの位置で生成する。 |
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 | 指定したロケーションでパーティクルを生成する。 |
teleport_to_location(location) | table | nil | ロケーションが解決できた場合にテレポートする。 |
set_velocity_vector(vector) | table | nil | ベクトルが解決できた場合に速度を設定する。 |
set_gravity(enabled) | bool | nil | 重力を設定する。 |
is_on_ground() | — | bool | 現在の接地状態を判定する。 |
apply_push_vector(vector, additive?=false, delay?=1) | table, bool?=false, int?=1 | nil | 遅延後に速度を適用する。現在の速度に加算することもできる。 |
set_custom_name(name) | string | nil | 色処理されたカスタム名を設定する。 |
reset_custom_name() | — | nil | 追跡対象であればEliteMobsの名前を、そうでなければBukkitの名前を復元する。 |
set_custom_name_visible(visible) | bool | nil | カスタム名の表示状態を設定する。 |
set_ai_enabled(enabled, duration?=0) | bool, int?=0 | nil | 所有する変更としてAIを設定する。正のticksでは置き換えた値を復元する。true は、このパワーに有効なAIの変更があれば、新しい値を適用する代わりにその変更を終了する。 |
set_awareness_enabled(enabled, duration?=0) | bool, int?=0 | nil | 所有する変更としてモブの認識を設定する。正のticksでは置き換えた値を復元する。true は、このパワーに有効な認識の変更があれば、新しい値を適用する代わりにその変更を終了する。 |
face_direction_or_location(target) | table | nil | ベクトル、または同一ワールド内のロケーションの方を向く。 |
play_model_animation(name) | string | nil | 利用可能な場合にカスタムモデルのアニメーションを再生する。 |
set_scale(scale, duration?=0) | number, int?=0 | nil | 所有する変更として基礎スケールを設定する。正のticksでは置き換えた値を復元する。 |
set_invulnerable(enabled, duration?=0) | bool, int?=0 | nil | 所有する変更として無敵状態を設定する。正のticksでは置き換えた値を復元する。 |
remove_elite() | — | nil | 追跡中のエリートをEliteMobsの削除パイプラインを通して削除する。 |
is_healing() | — | bool | 追跡中のエリートの回復状態を判定する。 |
set_healing(enabled) | bool | nil | true は、まだ回復中でない追跡中のエリートを回復中としてマークする。false は、このパワーが設定した回復状態だけを解除する。パワーの終了時には、まだ所有している回復状態を解除する。 |
navigate_to_location(location, speed?=1, force?=false, timeout?=0) | table, number?=1, bool?=false, int?=0 | nil | 追跡中のカスタムボスを移動させる。 |
add_tag(tag, duration?=0) | string, int?=0 | nil | タグを追加し、ticksが正の値ならその後削除する。 |
remove_tag(tag) | string | nil | タグを削除する。 |
has_tag(tag) | string | bool | エンティティ、エリート、プレイヤーのタグを判定する。 |
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 | 速度を即座に、原点から外向きの単位ベクトル×forceとワールド軸オフセットの和へ置き換える。同じワールドの原点を渡すこと。 |
overlaps_box_at_location(center, half_x?=0.5, half_y?=half_x, half_z?=half_x) | table, number?=0.5, number?, number? | bool | エンティティの当たり判定ボックスと指定したボックスの重なりを判定する。 |
is_inside_vehicle() | — | bool | エンティティが乗り物に乗っているかを判定する。 |
has_vehicle() | — | bool | 乗り物が存在するかを判定する。 |
get_vehicle() | — | table/nil | 現在の乗り物の参照を返す。 |
set_vehicle(vehicle) | table | bool | このエンティティを解決された乗り物に乗せる。 |
leave_vehicle() | — | bool | 現在の乗り物から降りる。 |
has_passengers() | — | bool | 搭乗者が存在するかを判定する。 |
get_passenger_count() | — | int | 搭乗者の数を返す。 |
get_passengers() | — | table | 搭乗者の参照を返す。 |
add_passenger(passenger) | table | bool | 解決された搭乗者を追加する。 |
remove_passenger(passenger) | table | bool | 解決された搭乗者を降ろす。 |
eject_passengers() | — | bool | すべての搭乗者を降ろす。 |
apply_potion_effect(type, duration, amplifier?=0) | string (PotionEffectType), int, int?=0 | nil | 大文字化したBukkitポーション名を解決し、インスタンス規則で許可されれば適用する。増幅値は0始まり。 |
set_equipment(slot, material, options?) | string (EquipmentSlot), string (Material), table? | nil | 装備を設定する。optionsは unbreakable と、type および level を持つ enchantments のエントリに対応する。 |
damage_equipment(slot, amount) | string, int | int | HAND、OFF_HAND、HEAD、CHEST、LEGS、FEET の装備に1–64の耐久値ダメージを要求し、実際に適用した値を返す。プレイヤーのアイテム損傷イベントのキャンセルと破壊不可設定を尊重する。アイテムが壊れる場合がある。 |
set_fire_ticks(ticks) | int | nil | インスタンス規則で許可されれば炎上ticksを設定する。 |
add_visual_freeze_ticks(ticks?=1) | int?=1 | nil | 許可されればMinecraftの凍結ticksを加算する。凍結ダメージを生じる場合があり、AIや移動を止める機能ではない。 |
place_temporary_block(material, ticks?=0, require_air?=false) | string (Material), int?=0, bool?=false | nil | エンティティの位置に一時ブロックを設置する。 |
AI、認識、スケール、無敵の変更は、呼び出したパワーが所有します。各変更は置き換えた値を記録します。正の期間では指定したticks後にその値を復元し、期間が 0 の場合はパワーが終了するまで変更が続き、終了時にも復元されます。複数のパワーが同じプロパティを変更している場合、1つの変更が終わると残っている最新の変更が復元され、残りがなければ元の値に戻ります。その間に他のプラグインやコマンドがプロパティを変更した場合は、その値が維持され、何も復元されません。パワーを一時停止しても、これらの変更は終了しません。遅延 apply_push_vector とタグ削除のタイマーは、引き続きスクリプト所有のschedulerから独立して動作します。reset_custom_name は追跡中エリートの名前を復元しますが、通常のBukkitエンティティでは保存済みの元の名前ではなく現在の名前を使います。
EliteMobsパワーのプレイヤーテーブル
EliteMobsのボスパワーにおけるプレイヤーの値は、EliteMobs Power Living Entityのすべてのプロパティとメソッドを継承します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
game_mode | string | 大文字のBukkitゲームモードのスナップショット。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
send_message(text) | string | nil | 色処理されたチャットテキストを送信する。 |
show_action_bar(text) | string | nil | 色処理されたアクションバーを送信する。 |
show_title(title, subtitle?="", fade_in?=10, stay?=40, fade_out?=10) | string, string?="", int?=10, int?=40, int?=10 | nil | 色処理されたタイトルを表示する。 |
show_boss_bar(title, color?=WHITE, style?=SOLID, duration?=40) | string, string (BarColor)?=WHITE, string (BarStyle)?=SOLID, int?=40 | nil | ボスバーを表示し、ticksが正の値ならその後削除する。 |
run_command(command) | string | nil | プレイヤーとしてコマンドを実行する。 |
context.boss
EliteMobsのボスパワーはこのテーブルを受け取ります。EliteMobs Power Living Entityのすべてのプロパティとメソッドを継承し、ここに挙げた行はエリートレベルの意味論でオーバーライドされます。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
name | string | エリートの表示名、またはスクリプトファイル名のスナップショット。 |
uuid | string | エリートのUUID。 |
health | number | エリートの体力のスナップショット。 |
maximum_health | number | エリートの最大体力のスナップショット。 |
current_location | table | エリートのロケーションのスナップショット。 |
level | int | エリートレベルのスナップショット。 |
damager_count | int | ダメージを与えた者の数のスナップショット。 |
is_in_combat | bool | 戦闘状態のスナップショット。 |
exists | bool | エリートの存在状態のスナップショット。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
is_alive() | — | bool | living entityの状態とEliteMobsでの存在状態を判定する。 |
get_health() | — | number | 現在のエリートの体力を返す。 |
get_maximum_health() | — | number | 現在のエリートの最大体力を返す。 |
get_location() | — | table | 現在のエリートのロケーションを返す。 |
restore_health(amount) | number | nil | EliteMobsのエンティティを通して回復する。 |
add_tag(tag, duration?=0) | string, int?=0 | nil | エリートタグを追加し、ticksが正の値ならその後削除する。 |
remove_tag(tag) | string | nil | エリートタグを削除する。 |
has_tag(tag) | string | bool | エリートタグを判定する。 |
reset_custom_name() | — | nil | エリートの表示名を復元する。 |
play_sound_at_self(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | 登録済みまたはカスタムの名前空間付きサウンドをエリートの位置で再生する。第2引数には {volume, pitch} を渡すこともできる。 |
play_sound_at_entity(sound, volume_or_options?=1, pitch?=1) | string (Sound), number/table?=1, number?=1 | nil | エリートの位置で再生するエイリアス。第2引数には {volume, pitch} を渡すこともできる。 |
spawn_particle_at_self(particle, count?=1) | string (Particle)/table, int?=1 | nil | エリートの位置でパーティクルを生成する。 |
play_model_animation(name) | string | nil | 利用可能な場合にカスタムボスモデルのアニメーションを再生する。 |
navigate_to_location(location, speed?=1, force?=false, timeout?=0) | table, number?=1, bool?=false, int?=0 | nil | カスタムボスを移動させる。 |
get_damager_count() | — | int | 現在のダメージを与えた者の数を返す。 |
despawn() | — | nil | 理由 OTHER でエリートを削除する。 |
remove() | — | nil | despawn() の別名。 |
patrol_pause() | — | bool | 設定された巡回を一時停止する。 |
patrol_resume() | — | bool | スクリプトの待機・一時移動後に巡回を再開する。 |
walk_to(x, y, z) | number, number, number | bool | 原点オフセットまで歩いて巡回を再開する。 |
hold(x, y, z) | number, number, number | bool | オフセットまで歩いて待機する。 |
teleport(x, y, z) | number, number, number | bool | エンティティが tick するオフセットへテレポートする。 |
get_ender_dragon_phase() | — | string/nil | EnderDragon.Phase名を返す。該当しない場合はnil。 |
set_ender_dragon_phase(phase) | string (EnderDragon.Phase) | nil | 有効なエンダードラゴンのフェーズを設定する。 |
has_mount() | — | bool | ボスが生存中のマウント(乗り物)を持っているかを判定する。 |
get_mount() | — | table/nil | is_mount = true とマークされたマウントの参照を返す。 |
set_mount(mount) | table | bool | ボスを解決されたエンティティに乗せる。 |
clear_mount() | — | bool | 現在の乗り物から降りる。 |
dismount() | — | bool | clear_mount() のエイリアス。 |
start_tracking_fireball_system(speed?=0.5) | number?=0.5 | nil | モンスター系ボスで、ターゲットがある間、次のtickとその後160tickごとに、各軸20ブロック以内のSurvival/Adventureプレイヤーへ追尾ファイアボールを発射する。このタスクはパワーが所有し、一時停止すると一時停止し、ターゲットを失うか終了すると停止する。速度は有限の正の値である必要がある。 |
handle_spirit_walk_damage(cause) | string (DamageCause) | nil | Spirit Walkのダメージ処理を実行する。 |
shield_wall_is_active() | — | bool | シールドウォールの状態を判定する。 |
initialize_shield_wall(openingDirection?=1) | int?=1 | nil | 各方向の耐久値をボスのレベルで初期化。開口方向は1北、2東、3南、4西。それ以外の整数は全方向を防御する。有効な壁は変更しない。 |
shield_wall_absorb_damage(player, damage) | table, number | bool | 攻撃者側の耐久値が正ならダメージを引く。trueの場合、スクリプト自身がダメージイベントをキャンセルする必要がある。自動ではキャンセルしない。 |
deactivate_shield_wall() | — | nil | 壁の独立タスクを止め、状態と表示を削除する。Luaを閉じるだけでは解除されない。 |
start_zombie_necronomicon(target, chant) | table, string | nil | 生きている対象に対する独立コントローラーを開始。文字列はファイル名ではなく表示する詠唱文。固定のnecronomiconゾンビ/スケルトンファイルを術者のレベルで召喚する。 |
send_message(text, range?=20) | string, number?=20 | nil | 範囲内のプレイヤーに色処理されたテキストを送信する。 |
get_nearby_players(range) | number | table | 付近のEliteMobs Power Playerテーブルを返す。 |
get_nearby_elites(radius) | number | table | 同じワールドで追跡中の生存エリートを最大32体返す。ボス自身を除き、距離順、同距離なら UUID 順。半径は0より大きく64以下。 |
get_target_player() | — | table/nil | 現在のモブのターゲットがプレイヤーの場合にそれを返す。 |
get_nearby_players_in_zone(zone) | table | table | ゾーンに含まれるプレイヤーを返す。 |
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 | ゾーンの内部をサンプリングしてパーティクルを生成する。 |
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 | ゾーンの縁をサンプリングしてパーティクルを生成する。 |
get_particles_from_self_toward_zone(zone, particle, speed?=0.1) | table, string (Particle), number?=0.1 | table | ボスからサンプリングされたゾーン上の点へ向かう方向付きパーティクル仕様を構築する。 |
get_particles_toward_self(zone, particle, speed) | table, string (Particle), number | table | ボスへ向かう方向付きパーティクル仕様を構築する。現行のビルダーは最後に渡された引数からspeedを読み取る。 |
spawn_particles_with_vector(particles) | table | nil | 方向付きパーティクル仕様の配列を生成する。 |
summon_reinforcement(file, zone_or_location?, duration?=0) | string, table?, int?=0 | table/nil | サンプルしたゾーン点、指定位置、またはボス位置に増援を召喚する。正のdurationならそのticks後に削除する。 |
summon_projectile(type, origin, destination, speed?=1, options?) | string (EntityType), table, table, number?=1, table? | table/nil | 投射物をスポーンさせる。optionsは custom_damage、detonation_power、yield、incendiary、gravity、glowing、invulnerable、persistent、duration、EntityEffectの effect、spawn_at_origin、direction_only、track、on_land、max_ticks に対応する。 |
context.players:EliteMobsボスパワー
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
current_target() | — | table/nil | イベントのアクターがプレイヤーの場合はそれを返し、そうでなければボスの現在のモブターゲットがプレイヤーの場合にそれを返す。 |
nearby_players(radius) | number | table | ボスから指定半径内のPlayer Tableを返す。 |
all_players_in_world() | — | table | ボスの現在のワールドにいるすべてのPlayer Tableを返す。 |
context.entities:EliteMobsボスパワー
集合検索はボス自身を除外します。生物フィルターは player/players、elite/elites、mob/mobs を受け付け、それ以外はすべての生物です。Survival/Adventureやダンジョンインスタンス所属で自動では絞りません。直接ターゲットの取得はこの集合フィルターとは独立し、フックが渡した対象を返します。
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
get_nearby_entities(radius, filter?="living") | number, string? | table | 生物フィルターは足元の3D距離を使う。all と entities は代わりにBukkitの軸平行ボックス検索を使い、非生物も含む。 |
get_entities_in_box(center, half_x, half_y, half_z, filter?="living") | table, number, number, number, string? | table | 足元の位置がボックス内またはその境界上にある生物を返す。 |
get_all_entities(filter?="living") | string? | table | ボスのワールド内で条件に一致するliving entityを返す。 |
get_direct_target_entity() | — | table/nil | 現在のフックが提供する直接のターゲットを返す。 |
get_boss_spawn_location() | — | table | ボスの元のスポーン地点を返す。 |
context.vectors:EliteMobsボスパワー
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
get_vector_between_locations(source, destination, options?) | table, table, table? | table | 同一ワールド内のロケーション間のベクトルを返す。無効な入力やワールドをまたぐ入力の場合は {x=0,y=0,z=0}。optionsは normalize、multiplier、ベクトルの offset に対応する。 |
rotate_vector(vector, pitch?=0, yaw?=0) | table, number?=0, number?=0 | table | pitchとyaw(度単位)で回転させたベクトルを返す。 |
normalize_vector(vector) | table | table | 単位ベクトルを返す。ゼロベクトルはゼロのまま。 |
context.zones:EliteMobsボスパワー
EliteMobsのボスパワーは、共有の整数ハンドル方式のゾーン面を、Elite Scriptのゾーン定義クエリに置き換えます。
エンティティの所属、点の内包、パーティクル点のサンプリングは別の演算で、境界の結果が異なる場合があります。coverage はサンプル点に影響し、エンティティ選択には影響しません。watch_zone は形状を保持し、コールバックにはコンテキストではなくエンティティテーブルを渡します。1tick後から確認を始め、既に内部にいる対象も入場として通知します。監視停止時に退場は通知しません。
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
get_entities_in_zone(zone, options?) | table, table? | table | 条件に一致するliving entityを返す。optionsは filter と mode = "full" または "border" に対応する。 |
get_locations_in_zone(zone, options?) | table, table? | table | サンプリングされたロケーションを返す。optionsは coverage と mode = "full" または "border" に対応する。 |
zone_contains(zone, location, mode?="full") | table, table, string? | bool | ロケーションが形状全体または境界に含まれるかを判定する。 |
watch_zone(zone, callbacks, options?) | table, table, table? | nil | {on_enter, on_leave} コールバックで監視する。optionsは filter と mode に対応する。所有された監視はスクリプトの終了とともに停止する。 |
context.script:EliteMobsボスパワー
このブリッジは、Elite Scriptのtarget、zone、relative vectorのYAML設定と同じテーブルキーを受け付けます。
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
target(spec) | table | targetハンドル | targetハンドルを作成する。 |
zone(spec) | table | zoneハンドル | zoneハンドルを作成する。 |
relative_vector(spec, location?, zone?) | table, table?, zoneハンドル? | vectorハンドル | relative vectorのハンドルを作成する。アクションのロケーションは既定でボスになる。 |
damage(target, amount?=0, multiplier?=1) | targetハンドル, number?=0, number?=1 | nil | ボスに帰属するBukkitダメージを要求する。プレイヤーには倍率込みでEliteMobsの戦闘補正が入り、非プレイヤーにはその倍率を適用しない。 |
push(target, vector, additive?=false) | targetハンドル, table/vectorハンドル, bool?=false | nil | 所有タスクで1tick後に取得済み対象の速度を置換または加算する。解決した1本のベクトルを全対象に使い、欠損・非有限ベクトルはゼロにする。 |
set_facing(target, vector) | targetハンドル, table/vectorハンドル | nil | 解決されたターゲットエンティティをベクトルの方向に向かせる。 |
spawn_particles(target, particles) | targetハンドル, table/string | nil | 解決されたターゲットのロケーションでパーティクル仕様を生成する。 |
これらはElite Scriptのアクション列、条件、クールダウン、予告待機、繰り返しを自動実行しません。ターゲットハンドルは作成時のイベントと直接ターゲットを保持します。イベント依存ハンドルを無関係なフックで使い回さないでください。first_entity() は解決結果の先頭で、最も近い対象とは限りません。
ターゲットハンドルのメソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
entities() | — | table | 解決してEntity Tableを返す。 |
locations() | — | table | 解決してlocationテーブルを返す。 |
first_entity() | — | table/nil | 最初に解決されたエンティティを返す。 |
first_location() | — | table/nil | 最初に解決されたロケーションを返す。 |
ゾーンハンドルのメソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
full_target(coverage?) | number? | targetハンドル | 形状の内部に対するtargetハンドルを作成する。 |
border_target(coverage?) | number? | targetハンドル | 境界に対するtargetハンドルを作成する。 |
full_locations(coverage?) | number? | table | サンプリングされた内部のロケーションを解決する。 |
border_locations(coverage?) | number? | table | サンプリングされた境界のロケーションを解決する。 |
full_entities() | — | table | 形状の内部にいるエンティティを解決する。 |
border_entities() | — | table | 境界上にいるエンティティを解決する。 |
contains(location, mode?="full") | table, string? | bool | 形状全体または境界への所属を判定する。 |
watch(callbacks, mode?="full") | table, string? | int | 所有された {on_enter, on_leave} の監視を開始し、そのタスクIDを返す。 |
相対ベクトルハンドルのメソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
resolve() | — | table | 現在のコンテキストに対してベクトルを解決する。 |
EliteMobsパワーのイベントテーブル
EliteMobsのボスパワーのイベント値は、イベントの種類に応じて条件付きでフィールドとメソッドを公開します。
プロパティ
| フィールド | 型 | 説明 |
|---|---|---|
damage_amount | number/nil | ダメージイベントのダメージ量のスナップショット。 |
damage_cause | string/nil | ダメージイベントが公開している場合のDamageCause名。 |
damager | table/nil | ダメージ元エンティティの生の参照。投射物の命中では射手ではなく投射物そのもの。 |
projectile | table/nil | ダメージ元が投射物の場合の投射物の参照。 |
spawn_reason | string/nil | エリートのスポーン理由。 |
entity | table/nil | フックに応じて、被弾した増援、死亡またはゾーンイベントのエンティティ。 |
is_damage_transfer | bool/nil | プレイヤーからエリートへのダメージのみ:明示的に転送された命中を処理しているか。 |
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
cancel_event() | — | nil | EliteDamageEventまたはその他のキャンセル可能なイベントをキャンセルする。 |
set_damage_amount(amount) | number | nil | EliteDamageEventのダメージを置き換える。context.event.set_damage_amount(...) のようにドットで呼び出す必要がある。 |
multiply_damage_amount(multiplier) | number | nil | EliteDamageEventのダメージを乗算する。context.event.multiply_damage_amount(...) のようにドットで呼び出す必要がある。 |
get_damage_amount() | — | number | 変更後の現在のEliteDamageEventダメージ量を返す。 |
transfer_damage(target, amount) | entity reference, number | bool | プレイヤーからエリートへのダメージのみ:インスタンス規則で許可された別の生存エリートへ有限かつ非負のダメージを要求する。ゼロ、キャンセル済み、入れ子の転送、元の対象はfalse。非エリートの宛先はエラー。trueは要求送信でありダメージ保証ではない。元のダメージを減らしたりキャンセルしたりしない。 |
context.world:EliteMobsの追加と上書き
ボスパワーは共有ワールドテーブルを継承し、視覚的な雷やNPC生成ヘルパーも含めたうえで以下を追加・上書きします。継承した座標メソッドは共有の動作を維持します。ボス専用の位置メソッドはボスの変換処理を使用し、省略またはテーブル以外ならボス位置、省略座標はゼロ、明示したワールド名は解決必須です。
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
play_sound_at_location(location, sound, volume?=1, pitch?=1) | table, string (Sound), number?=1, number?=1 | nil | EliteMobsのサポートを通じて登録済みサウンドとカスタムの名前空間付きサウンドを受け付けるオーバーライド。 |
spawn_particle_at_location(location, particle, count?=1) | table, string (Particle)/table, int?=1 | nil | EliteMobsのパーティクル仕様テーブルを受け付けるオーバーライド。 |
set_block_at_location(location, material, require_air?=false) | table, string (Material), bool?=false | nil | 一時ブロックマネージャーを通じて、タイマーも追跡もなしにブロックを恒久的に設置するオーバーライド。 |
place_temporary_block_at_location(location, material, ticks?=0, require_air?=false) | table, string (Material), int?=0, bool?=false | nil | EliteMobsの一時ブロック設置を使用するオーバーライド。 |
get_block_type_at_location(location) | table | string/nil | 大文字のMaterial名を返す。無効なロケーションの場合はnil。 |
get_highest_block_y_at_location(location) | table | int/nil | 最も高いブロックのY座標を返すオーバーライド。取得できない場合はnil。 |
get_blast_resistance_at_location(location) | table | number | ブロックの爆発耐性を返す。無効なロケーションの場合は既定で 0。 |
is_air_at_location(location) | table | bool | 対象のブロックが空気かを判定する。 |
is_passable_at_location(location) | table | bool | Bukkitの通過可能性を判定する。 |
is_passthrough_at_location(location) | table | bool | マテリアルが非固体かを判定する。 |
is_on_floor_at_location(location) | table | bool | 対象が非固体で、その下が固体ブロックかを判定する。 |
is_standing_on_material(location, material) | table, string (Material) | bool | 真下のブロックを判定する。 |
strike_lightning_at_location(location) | table | nil | 落雷の前にEliteMobsの雷バイパスを有効にするオーバーライド。 |
run_empowered_lightning_task_at_location(location) | table | nil | 独立して警告を60回出し、実際の落雷と爆発威力5の下向きの火球を生成する。ダメージを与え、Luaの一時停止や終了ではキャンセルされない。 |
set_world_time(time) / set_world_time(location, time) | int/table, int? | nil | ボスのワールドの時間、または渡されたロケーションのワールドの時間を設定する。 |
set_world_weather(weather, duration?=6000) / set_world_weather(location, weather, duration?=6000) | string/table, string/int?, int?=6000 | nil | CLEAR、PRECIPITATION、RAIN、THUNDER を設定する。 |
run_console_command(command) | string | nil | コンソールとしてコマンドを実行する。 |
spawn_boss_at_location(file, location?, level?) | string, table?, int? | table/nil | 指定または現在のロケーションで、指定または現在のレベルのカスタムボスをスポーンさせる。 |
spawn_custom_boss_at_location(file, location, options?) | string, table, table? | table/nil | カスタムボスをスポーンさせる。optionsは silent、level、add_as_reinforcement、velocity に対応する。 |
spawn_entity_at_location(type, location, options?) | string (EntityType), table, table? | table/nil | バニラのエンティティをスポーンさせる。optionsは velocity、duration、EntityEffectの effect、on_land、max_ticks に対応する。 |
spawn_falling_block_at_location(location, material, options?) | table, string (Material), table? | table/nil | 落下ブロックをスポーンさせる。optionsは drop_item、hurt_entities、velocity、on_land に対応する。 |
spawn_reinforcement_at_location(file, location, duration?=0, velocity?) | string, table, int?=0, table? | table/nil | ボスに紐づく増援を召喚し、正のdurationならそのticks後に削除する。 |
spawn_fireworks_at_location(location, options) | table, table | table/nil | 花火をスポーンさせる。optionsは effects、type、flicker、trail、colors、fade_colors、power、velocity、shot_at_angle に対応し、type にはFireworkEffect.Typeの名前を使う。 |
spawn_splash_potion_at_location(location, options) | table, table | table/nil | スプラッシュポーションをスポーンさせる。effects の各エントリはPotionEffectTypeの type、duration、amplifier、overwrite を受け付け、トップレベルの velocity も使用できる。 |
generate_fake_explosion(locations, source?) | table, table? | nil | 爆発再生が有効な場合、実際のブロックを除去し、ダメージを与える落下する破片を生成する。1200ティック後に復元開始。Luaの終了では取り消されない。位置はボスと同じワールドにする。 |
spawn_fake_gold_nugget_at_location(location, velocity, gravity?=false) | table, table, bool?=false | table/nil | 疑似金塊の投射物をスポーンさせる。 |
run_fake_gold_nugget_damage(projectiles) | table | nil | 疑似投射物のダメージ処理を実行する。 |
generate_player_loot(times?=1) | int?=1 | nil | 条件を満たすダメージ元プレイヤーに対してプレイヤールートを生成する。 |
drop_bonus_coins(multiplier?=2) | number?=2 | nil | 条件を満たすダメージ元プレイヤーにボーナスコインをドロップする。 |
EliteMobsの疑似投射物テーブル
spawn_fake_gold_nugget_at_location は、スポーンに成功したときにこのテーブルを返します。
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
get_location() | — | table | 疑似投射物のロケーションを返す。 |
set_gravity(enabled) | bool | nil | 疑似投射物の重力を設定する。 |
remove() | — | nil | 疑似投射物を削除する。 |
is_removed() | — | bool | すでに削除済みかを判定する。 |
context.settings
EliteMobsのボスパワーは、worldテーブルと同じビルダーからこのsettingsテーブルを受け取ります。
メソッド
| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
warning_visual_effects_enabled() | — | bool | 現在の警告用ビジュアルエフェクト設定を返す。 |