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

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

webapp_banner.jpg

このページは、EliteMobs Luaメソッドで使用されるすべてのenum型についてSpigot Javadocsにリンクしています。Luaコードでは正確なenum定数名(例:"FLAME""ZOMBIE""STONE")を文字列として使用してください。

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

Enum Reference

EnumUsed forJavadoc
BarColorBoss bar colorBarColor
BarStyleBoss bar styleBarStyle
DamageCauseダメージ原因フィルタリングEntityDamageEvent.DamageCause
EnderDragon.Phaseエンダードラゴンフェーズ制御EnderDragon.Phase
EntityEffectEntity visual effectsEntityEffect
EntityTypeEntity spawningEntityType
EquipmentSlotエンティティ装備スロットEquipmentSlot
FireworkEffect.TypeFirework shapeFireworkEffect.Type
MaterialBlocks and itemsMaterial
ParticleParticle effectsParticle -- レガシー名の変換については有効なパーティクルリストも参照してください
PotionEffectTypePotion effectsPotionEffectType
Soundサウンド再生Sound
Sounds accept two formats

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

つまり、もうどちらの形式かを選ぶ必要はありません -- ただし、どちらの形式でもタイプミスは静かに無視されます。フォールバック経路では、不正な enum 名と、単にインストールされていないカスタムパックのサウンドを区別できないためです。

Non-Spigot Values

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

Zone shapes

Used by native zone definitions (kind field) and script utility zone specs (shape field).

Native (kind)Script Utility (shape)
sphereSPHERE
domeDOME
cylinderCYLINDER
cuboidCUBOID
coneCONE
static_raySTATIC_RAY
rotating_rayROTATING_RAY
translating_rayTRANSLATING_RAY

Entity filters

context.zones および context.entities のクエリオプションで使用されます。大文字小文字を区別せず、それぞれに複数形のエイリアスがあります。

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

これらの文字列以外はエラーにならず living の挙動にフォールバックするため、"playr" のようなタイプミスは静かにすべてのリビングエンティティを返します。

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

Weather values

Used by context.world:set_weather(weather).

ValueEffect
CLEARClear skies
RAINRain
THUNDERThunderstorm

Target types

Used by context.script:target() specs.

ValueResolves to
SELFThe boss entity
SELF_SPAWNThe boss's spawn location
DIRECT_TARGETThe entity involved in the current event
NEARBY_PLAYERSPlayers within range of the boss
NEARBY_MOBSNon-player mobs within range
NEARBY_ELITESElite mobs within range
ALL_PLAYERSAll online players
WORLD_PLAYERSAll players in the boss's world
ZONE_FULLEntities/locations inside a zone volume
ZONE_BORDEREntities/locations on a 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 のゾーンの境界上

最後の4つは継承元となる EliteScript が周囲に存在する場合にしか解決されないため、Lua からの実用性はほとんどありません。完全な意味論は EliteScript ターゲット を参照してください -- context.script はまさにその実装を使用しています。


次のステップ