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

エリートスクリプト条件

条件(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システムを使用して、どのエンティティまたは位置が条件の対象となるかを指定します。つまり、条件をボスやプレイヤー、あるいはターゲットにできるあらゆる対象に関連付けることができます。


条件タイプ

KeyDetailsValues
conditionType条件のタイプを設定しますBLOCKING / FILTERING

条件にはBLOCKINGFILTERINGの2種類があります。BLOCKING条件はスクリプトやアクションの実行を停止させます。FILTERING条件は、条件を満たさないターゲットをアクションがスキップするようにします。つまり、空気ではないブロックだけをターゲットにしたい場合はFILTERING条件が必要であり、プレイヤーが死亡している場合にアクションを停止させたい場合はBLOCKING条件が必要です。

アクションの外側にある条件は常にBLOCKINGです。アクションの内側にある条件はBLOCKINGまたはFILTERINGにできます。

注意:ターゲットがSELF(ボス)で、条件チェックがisAliveの場合、そのチェックは常にBLOCKINGになります! これはFILTERING条件の内側に置いても、この特定の部分はBLOCKINGとして動作します。

アクションの内側にある条件はデフォルトでFILTERINGに設定されます。


条件ブロックの配置

条件ブロックは次の2つの方法で配置・ネストできます:

  1. 各アクションの下に配置 – 条件は特定のアクションにのみ適用されます。条件が満たされればアクションは実行され、そうでなければ実行されません。

  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

KeyDetailsValues
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

ターゲットの位置が空気かどうかを条件として設定します。

KeyDetailsValues
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

位置が床の上にあるかどうかをチェックします。つまり、その位置のブロックは固体ではないが、その下のブロックは固体であることを意味します。

KeyDetailsValues
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

ターゲットの真下の位置が、一致するマテリアルタイプかどうかをチェックします。

KeyDetailsValues
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

条件のターゲットエンティティが生存しているかどうかを条件として設定します。

KeyDetailsValues
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

ターゲットエンティティが特定のタグを持っているかどうかをチェックします。スクリプターはアクションを通じて任意のタグを割り当てたり解除したりでき、それらを後の動作の条件として使用できます。タグは、ボスに割り当てることができる単なる文字列(単語)です。

KeyDetailsValues
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と同じですが、ボスがこれらの値を持っていないかどうかをチェックします。

KeyDetailsValues
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

条件が有効になるランダムな確率を与えます。

KeyDetailsValues
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_MOBSNEARBY_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

指定したターゲット数が定義した値より少ない、または多い場合にのみアクションの実行を許可する条件を作成します。

KeyDetailsValues
targetCountLowerThanターゲット数が指定した数値より少ない場合にのみアクションを実行します。0から999までの数値
KeyDetailsValues
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体を超えるモブがいる場合にのみ実行されます。

この条件はターゲットを必要とすることに注意してください。