Skip to content
瑠璃 edited this page Dec 21, 2022 · 36 revisions

DamageAPI

実行者のエンティティにダメージを与えます。
実行者は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について

補正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

DeathMessageについて

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

HealAPI

実行者のエンティティを回復させます。
実行者は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

MPAPI

対象プレイヤーのMPに関する処理ができます。

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設定

任意の数値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チェック

指定した数値より現在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取得

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最大値取得

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

LostItemsAPI

プレイヤーの失ったアイテムに対する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

ModifierAPI

プレイヤーの与/被ダメージや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

データ取得API

実行者のデータを軽量に取得し、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"}

EntityLinkAPI

Work In Progress...

MobSummonAPI

指定したIDのモブを召喚するAPI

引数

要求データ 必須 説明
Argument.ID o Int MobのID

# ID15のモブを召喚
    data modify storage api: Argument.ID set value 15
    function api:mob/summon