エリートスクリプト条件
条件(Conditions)を使うと、スクリプターは特定の条件に基づいてスクリプトやアクションを実行しないようにできます。
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Conditions:
isAlive: true
conditionType: BLOCKING
Target:
targetType: SELF
Actions:
- action: PLACE_BLOCK
Target:
targetType: DIRECT_TARGET
duration: 20
material: DIRT
offset: 0,3,0
Conditions:
locationIsAir: true
conditionType: BLOCKING
Target:
targetType: ACTION_TARGET
Cooldowns:
local: 60
global: 20
この例では、Exampleスクリプトはエリートがまだ生存している場合にのみ実行され、エリートの位置から3ブロック上のブロックが空気ブロックである場合にのみ土ブロックを設置します。各アクションは個別に条件を持つことができます。
Target
条件はTargetsシステムを使用して、どのエンティティまたは位置が条件の対象となるかを指定します。つまり、条件をボスやプレイヤー、あるいはターゲットにできるあらゆる対象に関連付けることができます。
条件タイプ
| Key | Details | Values |
|---|---|---|
conditionType | 条件のタイプを設定します | BLOCKING / FILTERING |
条件にはBLOCKINGとFILTERINGの2種類があります。BLOCKING条件はスクリプトやアクションの実行を停止させます。FILTERING条件は、条件を満たさないターゲットをアクションがスキップするようにします。つまり、空気ではないブロックだけをターゲットにしたい場合はFILTERING条件が必要であり、プレイヤーが死亡している場合にアクションを停止させたい場合はBLOCKING条件が必要です。
アクションの外側にある条件は常にBLOCKINGです。アクションの内側にある条件はBLOCKINGまたはFILTERINGにできます。
注意:ターゲットがSELF(ボス)で、条件チェックがisAliveの場合、そのチェックは常にBLOCKINGになります! これはFILTERING条件の内側に置いても、この特定の部分はBLOCKINGとして動作します。
アクションの内側にある条件はデフォルトでFILTERINGに設定されます。
条件ブロックの配置
条件ブロックは次の2つの方法で配置・ネストできます:
-
各アクションの下に配置 – 条件は特定のアクションにのみ適用されます。条件が満たされればアクションは実行され、そうでなければ実行されません。
-
スクリプト全体の下に配置 – 条件はスクリプト内のすべてのアクションに適用されます。条件が満たされない場合、いずれのアクションも実行されません。
以下は、各アクションとスクリプト全体の両方について、条件ブロックをネストする方法を示す例です。
各アクションの下に配置:
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: MESSAGE
Target:
targetType: NEARBY_PLAYERS
range: 10
sValue: "&2Hello World!"
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"
ボスが立っている位置から2ブロック上の位置が空気かどうかをチェックし、空気であればモブが攻撃されたときにSET_WEATHERアクションを実行します。そうでなければSET_WEATHERアクションをブロックします。ただし、MESSAGEアクションには条件が適用されていないため、ボスは攻撃されたときに常にMESSAGEアクションを実行します。
スクリプト全体の下に配置:
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: MESSAGE
Target:
targetType: NEARBY_PLAYERS
range: 10
sValue: "&2Hello World!"
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"
ボスが立っている位置から2ブロック上のブロックが空気であれば、モブが攻撃されたときにすべてのスクリプトの実行を許可します。そうでなければ、SET_WEATHERおよびMESSAGEアクションを含むスクリプト全体の実行をブロックします。
runIfConditionIs
| Key | Details | Values |
|---|---|---|
runIfConditionIs | 条件がtrueまたはfalseのときにアクションの実行を許可するかどうかを設定します。 | true / false |
条件名の前にrunIfプレフィックス、後ろにIsサフィックスを付けることで、条件を反転できます。
例としてisAlive条件を考えてみましょう。通常、次のように書くと:
isAlive: true
これはボスが生存している場合にのみアクションが実行されることを意味します。
しかし、同じ条件内で次のようにも書くと:
runIfAliveIs: false
条件は反転され、アクションはボスが死亡している場合にのみ実行されるようになります。
この構造により、アクションを実行する前に条件をパスさせるか失敗させるかを制御できます。
例:
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
runIfAliveIs: false
Target:
targetType: SELF
このスクリプトは、ボスが死亡している場合にのみ天候を雷雨に設定するようになります。
位置ベースの条件
locationIsAir
ターゲットの位置が空気かどうかを条件として設定します。
| Key | Details | Values |
|---|---|---|
locationIsAir | 位置が空気ブロックかどうか(またはその逆)をチェックするように設定します。 | Boolean |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"
ボスが立っている位置から2ブロック上の位置が空気かどうかをチェックし、空気であればモブが攻撃されたときに天候スクリプトの実行をブロックしません。そうでなければアクションをブロックします。
isOnFloor
位置が床の上にあるかどうかをチェックします。つまり、その位置のブロックは固体ではないが、その下のブロックは固体であることを意味します。
| Key | Details | Values |
|---|---|---|
isOnFloor | 位置が床の位置かどうか(またはその逆)をチェックするように設定します。 | Boolean |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isOnFloor: true
Target:
targetType: SELF
ボスが固体ブロックの上にいるかどうかをチェックし、いる場合はスクリプトを実行し、そうでなければスクリプトの実行をブロックします。
isStandingOnMaterial
ターゲットの真下の位置が、一致するマテリアルタイプかどうかをチェックします。
| Key | Details | Values |
|---|---|---|
isStandingOnMaterial | どのマテリアルタイプをチェックするかを設定します。 | Material |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isStandingOnMaterial: BIRCH_WOOD
Target:
targetType: SELF
ボスがBIRCH_WOODブロックの上に立っている場合にのみ実行され、そうでなければスクリプトの実行はブロックされます。
エンティティベースの条件
isAlive
条件のターゲットエンティティが生存しているかどうかを条件として設定します。
| Key | Details | Values |
|---|---|---|
isAlive | エンティティが生存しているか(または死亡しているか)をチェックするように設定します。 | Boolean |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
Target:
targetType: SELF
ボスが現在生存している場合にのみ実行され、そうでなければスクリプトはブロックされます。
hasTags
ターゲットエンティティが特定のタグを持っているかどうかをチェックします。スクリプターはアクションを通じて任意のタグを割り当てたり解除したりでき、それらを後の動作の条件として使用できます。タグは、ボスに割り当てることができる単なる文字列(単語)です。
| Key | Details | Values |
|---|---|---|
hasTags | エンティティがタグのリストを持っているかどうかをチェックするように設定します。 | String List |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
hasTags:
- isCool
- hasANiceBeard
Target:
targetType: SELF
ボスが "isCool" と "hasANiceBeard" のタグを持っている場合にのみ実行され、そうでなければスクリプトはブロックされます。
doesNotHaveTags
hasTagsと同じですが、ボスがこれらの値を持っていないかどうかをチェックします。
| Key | Details | Values |
|---|---|---|
doesNotHaveTags | エンティティがタグのリストを持っていないかどうかをチェックするように設定します。 | String List |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
doesNotHaveTags:
- isStinky
- isSus
Target:
targetType: SELF
ボスが "isStinky" と "isSus" のタグを持っていない場合にのみ実行され、そうでなければスクリプトはブロックされます。
その他の条件
randomChance
条件が有効になるランダムな確率を与えます。
| Key | Details | Values |
|---|---|---|
randomChance | 条件が有効になる確率。 | 0.0から1.0までの数値 |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
randomChance: 0.1
Target: # Not required
targetType: SELF # Not required
これにより、スクリプトが実行される確率が10%になり、そうでなければスクリプトはブロックされます。
この条件はターゲットを必要としない点で特別であることに注意してください。
タグでNEARBYをフィルタリング
特定のタグに基づいてNEARBY_MOBSやNEARBY_PLAYERSをフィルタリングするには、条件のターゲットとしてACTION_TARGETを使用します(条件がスクリプト自体ではなくアクションに適用されている場合)。これにより、指定したタグを持つモブ/プレイヤーのみを正確にフィルタリングできます。
例
eliteScript:
Example:
Actions:
- action: SET_MOB_AI
Target:
targetType: NEARBY_MOBS
range: 40
bValue: false
Conditions:
conditionType: FILTERING
hasTags:
- TurnOff
Target:
targetType: ACTION_TARGET
このスクリプトはTurnOffタグを持つ近くのモブを探し、そのタグを持っている場合にAIをオフにします。
targetCountLowerThan と targetCountGreaterThan
指定したターゲット数が定義した値より少ない、または多い場合にのみアクションの実行を許可する条件を作成します。
| Key | Details | Values |
|---|---|---|
targetCountLowerThan | ターゲット数が指定した数値より少ない場合にのみアクションを実行します。 | 0から999までの数値 |
| Key | Details | Values |
|---|---|---|
targetCountGreaterThan | ターゲット数が指定した数値より多い場合にのみアクションを実行します。 | 0から999までの数値 |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
targetCountGreaterThan: 2
Target: #required
targetType: NEARBY_MOBS #required
range: 15
このスクリプトは、15ブロックの半径内に2体を超えるモブがいる場合にのみ実行されます。
この条件はターゲットを必要とすることに注意してください。