メインコンテンツまでスキップ

Luaスクリプティング:列挙型と値

webapp_banner.jpg

このページでは、EliteMobsのLuaメソッドが使用するSpigotの値の型を紹介します。Luaコードでは "FLAME"、"ZOMBIE"、"STONE" などの定数名を文字列として渡してください。サーバーのAPIバージョンで使用できる値を選んでください。

  • スペルはenum定数名と正確に一致する必要があります
  • 大文字小文字は通常内部で正規化されますが、安全のためにJavadocのスペルに合わせてください
  • 無効な値の処理はメソッドによって異なります。警告を記録するもの、nil を返すか何もしないものがあり、入力を検証する API では Lua エラーが発生する場合があります

列挙型リファレンス​

列挙型用途Javadoc
BarColorボスバーの色BarColor
BarStyleボスバーのスタイルBarStyle
DamageCauseダメージ原因フィルタリングEntityDamageEvent.DamageCause
EnderDragon.Phaseエンダードラゴンフェーズ制御EnderDragon.Phase
EntityEffectエンティティの視覚効果EntityEffect
EntityTypeエンティティの出現EntityType
EquipmentSlotエンティティの装備スロット。damage_equipment が受け付けるのは HAND、OFF_HAND、HEAD、CHEST、LEGS、FEET のみEquipmentSlot
FireworkEffect.Type花火の形FireworkEffect.Type
MaterialブロックとアイテムMaterial
Particleパーティクル効果Particle。旧名の変換はEliteScriptのパーティクルアクションに適用されます。Luaのネイティブパーティクル関数には現在のAPI名が必要です。
PotionEffectTypeポーション効果PotionEffectType
Soundサウンド再生Sound
サウンドは2種類の形式に対応

すべてのLuaサウンドヘルパー(boss:play_sound_at_self、entity:play_sound_at_entity、world:play_sound_at_location)は、文字列を2段階で解決します。まず Spigot の Sound enum 名として解釈を試み(大文字化されるため "entity_blaze_shoot" も機能します)、それが失敗した場合はネームスペース付きのサウンドキーとして扱います(小文字化されるため "entity.blaze.shoot" も、独自のリソースパックキー "mypack:boss.roar" も機能します)。

どちらの処理も前後の空白を除去します。名前空間のないキーには minecraft を使用します。形式が不正なキーは無視されますが、構文が正しいキーはサウンドの存在を確認せずにクライアントへ送られます。そのため、キーの誤字やリソースパック内のサウンド不足によって音が鳴らない場合があります。

Spigot以外の値​

これらの値はEliteMobs固有であり、Spigot Javadocsには含まれていません:

ゾーンの形状​

ネイティブゾーン定義の kind フィールドと、スクリプトユーティリティのゾーン仕様の shape フィールドで使用します。これらの値は大文字小文字を区別します。ネイティブ形状には小文字、スクリプトユーティリティの形状には大文字を使用してください。

ネイティブ (kind)スクリプトユーティリティ (shape)
sphereSPHERE
domeDOME
cylinderCYLINDER
cuboidCUBOID
coneCONE
static_raySTATIC_RAY
rotating_rayROTATING_RAY
translating_rayTRANSLATING_RAY

エンティティフィルター​

context.zones および context.entities のクエリオプションで使用されます。値は大文字小文字を区別しません。使用できる別名は次のとおりです。

フィルター対象
player / playersプレイヤーのみ
elite / elitesエリートモブのみ
mob / mobsプレイヤー以外のリビングエンティティ(エリートを含みます)
livingプレイヤーを含むすべてのリビングエンティティ(デフォルト)
all / entities非リビングを含むすべてのエンティティ。context.entities:get_nearby_entities でのみ認識されます

不明なフィルターは living として扱われるため、"playr" のような誤字では検索範囲内のすべての種類のリビングエンティティが対象になります。これらのネイティブクエリはボス自身を除外します。ゾーンのエンティティ検索はボスのワールドで、ボックス検索は指定した中心のワールドで行います。

get_nearby_entities(radius, filter) は、リビングエンティティのフィルターでは球状の距離判定を使用します。all または entities では、各軸方向に radius だけ広がる軸平行の直方体を検索し、非リビングも含むエンティティ参照テーブルを返します。他のネイティブクエリでは、この2つのフィルターも living として扱います。

context.script:zone({...}) は EliteScript エンジンを実行するため、異なる大文字のフィルターセット(PLAYER、ELITE、LIVING)を使用します。

天候の値​

context.world:set_world_weather(weather) で使用します。値は大文字に変換されますが、空白は除去されません。不明な値は警告を記録し、天候を変更しません。

値効果
CLEAR晴天
PRECIPITATION / RAIN雨
THUNDER雷雨

ターゲットの種類​

以下はEliteScriptのターゲット値です。context.script:target() は同じ解決処理を使いますが、継承元のアクションや着地のデータは提供しません。ゾーンターゲットはゾーンハンドルの full_target() または border_target() から取得してください。

値解決される対象
SELFボスのエンティティ
SELF_SPAWN位置の解決ではボスの出現位置、エンティティの解決ではボス自身
DIRECT_TARGET現在のイベントの直接ターゲット。イベントがターゲットを提供しない場合は何も選択しない
NEARBY_PLAYERSボスから各軸方向に range だけ広がる直方体内のプレイヤー
NEARBY_MOBS同じ直方体内のプレイヤー以外のリビングエンティティ。ボスを除く
NEARBY_ELITES同じ直方体内のエリートモブ。ボスを除く
ALL_PLAYERSオンラインの全プレイヤー
WORLD_PLAYERSボスのワールド内の全プレイヤー
ZONE_FULLゾーン内部のエンティティや位置
ZONE_BORDERゾーン境界上のエンティティや位置
LOCATIONspec の location フィールドで指定した特定の位置
LOCATIONSspec の locations リストで指定した複数の位置
LANDING_LOCATION落下ブロックまたは召喚エンティティが着地した位置
ACTION_TARGET周囲の EliteScript アクションのターゲットを継承します
INHERIT_SCRIPT_TARGET呼び出し元 EliteScript のターゲットを継承します
INHERIT_SCRIPT_ZONE_FULL呼び出し元EliteScriptのゾーンを継承。現在のエンティティ選択はその境界を使用します。継承ゾーンの制限を参照してください。
INHERIT_SCRIPT_ZONE_BORDER呼び出し元EliteScriptのゾーン境界。位置の解決については継承ゾーンの制限を参照してください。

context.script:target() では LANDING_LOCATION、ACTION_TARGET、3つの INHERIT_SCRIPT_* 値を使用しないでください。Luaハンドルには対応するアクション、継承、着地の状態がないため、ターゲットが返らないか処理が失敗します。単独の ZONE_FULL や ZONE_BORDER 仕様にもゾーンがありません。YAMLアクションでの意味は EliteScriptターゲット を参照してください。


次のステップ​