-
Notifications
You must be signed in to change notification settings - Fork 6
api
実行者のエンティティにダメージを与えます。
実行者はHealthを持つEntityである必要があります。
特別な理由がない限り補正function(lib:damage/modifier
)を実行してください。
要求データ | 必須 | 型 | 説明 | デフォルト |
---|---|---|---|---|
実行者 | o | Entity | ダメージを与える対象 | - |
Argument.Damage | o | float | 与えるダメージ | - |
Argument.AttackType | o |
"Physical" /"Magic"
|
ダメージの第一属性 | - |
Argument.ElementType | x |
"None" /"Fire" /"Water" /"Thunder"
|
ダメージの第二属性 | "None" |
Argument.FixedDamage | x | boolean | ダメージをプレイヤーの補正値で補正しないか否か | false |
Argument.DisableParticle | x | boolean | パーティクルを無効化するか否か | false |
Argument.BypassResist | x | boolean | 属性耐性・防御力/防具強度・耐性エフェクトを無視するか否か | false |
Argument.DeathMessage | x | TextComponent/TextComponent[] | 通常の死亡メッセージと置き換えて出力するメッセージ (プレイヤー専用) | - |
Note: 実装の都合上、function lib:damage/
を呼び出してもArgumentはリセットされない為、実行後にリセットすること。
リセット方法は例を参照。
function lib:damage/
補正function(lib:damage/modifier
)を実行することで、信仰等の自身のダメージ補正値をArgument.Damageに適用するよ。
通常はダメージを与える場合はこれを使用するんだけど、必ず決まったダメージを与えたい場合とかは実行者の補正値を適用すると増減するから使用しないようにしてね。
これを実行すると、引数のDamageの値が変わるから、一回補正を掛けた後に異なる数値や属性のダメージを再度与える場合はDamageを再設定&補正functionを実行してね。
範囲5Mのゾンビに7.5の魔法・雷属性ダメージを与える
# 引数の設定
# 与えるダメージ = 7.5
data modify storage lib: Argument.Damage set value 7.5f
# 第一属性
data modify storage lib: Argument.AttackType set value "Magic"
# 第二属性
data modify storage lib: Argument.ElementType set value "Thunder"
# 補正functionを実行
function lib:damage/modifier
# 範囲5m以内のゾンビを対象に
execute as @e[type=zombie,distance=..5] run function lib:damage/
# リセット
function lib:damage/reset
範囲5Mのゾンビに7.5の魔法・雷属性の貫通ダメージを与える(信仰等によるダメージ補正あり)
# 引数の設定
# 与えるダメージ = 7.5
data modify storage lib: Argument.Damage set value 7.5f
# 第一属性
data modify storage lib: Argument.AttackType set value "Magic"
# 第二属性
data modify storage lib: Argument.ElementType set value "Thunder"
# 属性耐性・防御力/防具強度・耐性エフェクトを無視するか否か
data modify storage lib: Argument.BypassResist set value true
# 補正functionを実行
function lib:damage/modifier
# 範囲5m以内のゾンビを対象に
execute as @e[type=zombie,distance=..5] run function lib:damage/
# リセット
function lib:damage/reset
範囲5Mのゾンビに7.5の魔法・雷属性の貫通ダメージを確定で与える
# 引数の設定
# 与えるダメージ = 7.5
data modify storage lib: Argument.Damage set value 7.5f
# 第一属性
data modify storage lib: Argument.AttackType set value "Magic"
# 第二属性
data modify storage lib: Argument.ElementType set value "Thunder"
# 属性耐性・防御力/防具強度・耐性エフェクトを無視するか否か
data modify storage lib: Argument.BypassResist set value true
# 範囲5m以内のゾンビを対象に
execute as @e[type=zombie,distance=..5] run function lib:damage/
# リセット
function lib:damage/reset
Argument.DeathMessageにTextComponentをそのままもしくは配列として指定することで、与えたダメージによってプレイヤーが死亡した際のメッセージを変更する事が可能です。
同tick内に別の箇所等から同じプレイヤーに対してlib:damage/を実行した場合、死亡メッセージは上書きされます。(上書きで未指定になる可能性を含みます)
TextComponentをダブルクォート""
で囲うとエスケープが必要になるため、シングルクォート''
で囲う事をおすすめします。
Argument.DeathMessageに例通りTextComponentを代入するとプレイヤーの死亡メッセージを置き換えられる。
複数指定するとランダムで一つが選ばれる。
同tick内に同じプレイヤーに対してlib:damage/を実行すると、死亡メッセージが上書きされる。未指定なら未指定に上書き。
死亡メッセージが二つ、プレイヤー名のみの場合
# 引数設定
# ダメージ量
data modify storage lib: Argument.Damage set value 27.0f
# 属性
data modify storage lib: Argument.AttackType set value "Physical"
data modify storage lib: Argument.ElementType set value "Water"
# 死亡メッセージ
data modify storage lib: Argument.DeathMessage append value '[{"translate": "%1$sは大量の水に押し潰された。","with":[{"selector":"@s"}]}]'
data modify storage lib: Argument.DeathMessage append value '[{"translate": "%1$sは降ってきた大量の水に耐えられなかった。","with":[{"selector":"@s"}]}]'
# 補正
function lib:damage/modifier
# 実行
execute as @p[distance=..5] run function lib:damage/
# リセット
function lib:damage/reset
死亡メッセージが一つ、プレイヤー名と攻撃元の場合
# 引数設定
# ダメージ量
data modify storage lib: Argument.Damage set value 12.0f
# 属性
data modify storage lib: Argument.AttackType set value "Physical"
data modify storage lib: Argument.ElementType set value "Thunder"
# 死亡メッセージ
data modify storage lib: Argument.DeathMessage append value '[{"translate": "%1$sは%2$sに串刺しにされた。","with":[{"selector":"@s"},{"nbt":"Return.AttackerName","storage":"lib:","interpret":true}]}]'
# 補正
function lib:damage/modifier
# 実行
execute as @a[distance=..5] run function lib:damage/
# リセット
function lib:damage/reset
実行者のエンティティを回復させます。
実行者はHealthを持つEntityである必要があります。
回復量が固定でない場合は、補正function(lib:heal/modifier
)を実行すること
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | 回復を与える対象 |
Argument.Heal | o | float | 回復する量 |
注: 実装の都合上、function lib:heal/
を呼び出してもArgumentはリセットされない為、実行後にリセットすること。
リセット方法は例を参照。
function lib:heal/
# 引数の設定
# 回復する量 = 7.5
data modify storage lib: Argument.Heal set value 7.5f
# 補正function
function lib:heal/modifier
# 範囲5m以内のプレイヤーを対象に
execute as @a[distance=..5] run function lib:heal/
# リセット
data remove storage lib: Argument
対象プレイヤーのMPに関する処理ができます。
任意の数値MPを増減させます。
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | MPを増減させるプレイヤー |
$Fluctuation |
o | Scoreboard | MPの増減量 |
function lib:mp/fluctuation
scoreboard players set $Fluctuation Lib <number>
execute as <selector> run function lib:mp/fluctuation
任意の数値MPをその値に設定します。
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | MPを設定するプレイヤー |
$Set |
o | Scoreboard | MPの設定値 |
function lib:mp/set
scoreboard players set $Set Lib <number>
execute as <selector> run function lib:mp/set
指定した数値より現在MPが多いか確認します。
注: このライブラリはもやんのせいでfunction内以外から実行すると成功し続けます。function内で実行する分には問題ないからバグ報告しないでね☆
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | MPをチェックする対象のプレイヤー |
$CheckMP |
o | Scoreboard | MPのしきい値 |
データ | 想定される値 | 型 | 説明 |
---|---|---|---|
Result | 0,1 | Scoreboard | 対象がMPを持っているか否か |
execute store success ~ run function lib:mp/check
scoreboard players set $CheckMP Lib <number>
execute as <selector> store success score <entity> OBJECTIVE run function lib:mp/check
MPの現在値を取得します。
注: このライブラリはもやんのせいでfunction内以外から実行すると成功し続けます。function内で実行する分には問題ないからバグ報告しないでね☆
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | MPの現在値を取得するプレイヤー |
データ | 想定される値 | 型 | 説明 |
---|---|---|---|
Result | 0.. | Scoreboard | 対象のMPの現在値 |
execute store result ~ run function lib:mp/get
execute as <selector> store result score <entity> OBJECTIVE run function lib:mp/get
MPの最大値を取得します。
注: このライブラリはもやんのせいでfunction内以外から実行すると成功し続けます。function内で実行する分には問題ないからバグ報告しないでね☆
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | MPの最大値を取得するプレイヤー |
データ | 想定される値 | 型 | 説明 |
---|---|---|---|
Result | 0.. | Scoreboard | 対象のMPの最大値 |
execute store result ~ run function lib:mp/get_max
execute as <selector> store result score <entity> OBJECTIVE run function lib:mp/get_max
プレイヤーの失ったアイテムに対するAPI
没収されたアイテムのスロット数を取得します。
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | 取得するプレイヤー |
データ | 想定される値 | 型 | 説明 |
---|---|---|---|
Result | 0.. | Scoreboard | 対象の没収されたアイテムのスロット数 |
execute store result ~ run function api:lost_items/get_length
# 実行者の没収されたアイテムのスロット数を$SlotItemCount Temporaryに取得する
execute store result score $SlotItemCount Temporary run function api:lost_items/get_length
没収されたアイテムをランダムに指定したスロット数分返却します。
一定の確率で指定したスロット数より少ない数が返却されることがあります。
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | 返却するプレイヤー |
Argument.Count | o | int | 返却するスロット数 |
function api:lost_items/give
# 引数の設定
# 返却するスロット数 = 10個
data modify storage lib: Argument.Count set value 10
# 返却するプレイヤーの上にアイテムを返却
execute positioned ~ ~3 ~ run function api:lost_items/give
プレイヤーの与/被ダメージやHP/MP回復量に掛かる補正に対するAPI
- Attack
- Base (attack/base)
- Physical (attack/physical)
- Magic (attack/magic)
- None (attack/none)
- Fire (attack/fire)
- Water (attack/water)
- Thunder (attack/thunder)
- Defense
- Base (defense/base)
- Physical (defense/physical)
- Magic (defense/magic)
- None (defense/none)
- Fire (defense/fire)
- Water (defense/water)
- Thunder (defense/thunder)
- Heal (heal)
- Receive Heal (receive_heal)
- MPRegen (mp_regen)
指定したステータスに補正を追加します。
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | 補正を与える対象 |
Argument.UUID | o | int[4] | 削除するときに利用するID |
Argument.Amount | o | double | 補正値 |
Argument.Operation | o | "add" | "multiply_base" | "multiply" | 補正計算方法 計算方法はGamepedia参照 |
function api:player_modifier/<補正対象>/add
# 引数の設定
# UUID
data modify storage api: Argument.UUID set value [I;1,1,0,0]
# 補正値 +15%
data modify storage api: Argument.Amount set value 0.15
# 補正方法
data modify storage api: Argument.Operation set value "multiply_base"
# 補正の追加(この場合与える物理ダメージが15%上昇する)
function api:player_modifier/attack/physical/add
指定したステータスの指定されたUUIDの補正を削除します。
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | 補正を削除する対象 |
Argument.UUID | o | int[4] | 削除するID |
function api:player_modifier/<補正対象>/remove
# 引数の設定
# UUID
data modify storage api: Argument.UUID set value [I;1,1,0,0]
# 補正の削除
function api:player_modifier/attack/physical/remove
実行者のデータを軽量に取得し、storageに代入します。
このAPIをMobに対して利用すると負荷が増えることが想定されるので利用しないでください。
対応するNBT
- id
- Pos
- Motion
- Rotation
- fallDistance
- Fire
- Air
- OnGround
- NoGravity
- Invulnerable
- PortalCooldown
- UUID
- CustomName
- CustomNameVisible
- Silent
- Passengers
- Glowing
- Tags
- Health
- AbsorptionAmount
- HurtTime
- DeathTime
- FallFlying
- SleepingX
- SleepingY
- SleepingZ
- Brain
- Attributes
- ActiveEffects
- NoAI
- Team
- DataVersion
- Dimension
- playerGameType
- previousPlayerGameType
- Score
- SlectedItemSlot
- SlectedItem
- SpawnX
- SpawnY
- SpawnZ
- SpawnForced
- SleepTimer
- foodLevel
- foodExhaustionLevel
- foodSaturationLevel
- foodTickTimer
- XpLevel
- XpP
- XpTotal
- XpSeed
- Inventory
- EnderItems
- abilities
- enteredNetherPosition
- RootVehicle
- ShoulderEntityLeft
- ShoulderEntityRight
- seenCredits
- recipeBook
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
実行者 | o | Player | データを取得する対象 |
データ | 想定される値 | 型 | 説明 |
---|---|---|---|
api: <データ名> | - | storage | 対象のMPの最大値 |
function api:data_get/<対応するNBT>
# データ取得
function api:data_get/health
# 実行者のHealthがapi: Healthに入ってるので出力する
tellraw @a {"storage":"api:","nbt":"Health"}
Work In Progress...
指定したIDのモブを召喚するAPI
要求データ | 必須 | 型 | 説明 |
---|---|---|---|
Argument.ID | o | Int | MobのID |
# ID15のモブを召喚
data modify storage api: Argument.ID set value 15
function api:mob/summon