プレイヤーは同じtickでの2回目以降の実行で死亡しない。
Closed this issue · 3 comments
NePonpon commented
概要
プレイヤーに対して同じtick内で複数回実行したときに、2回目以降で合計が現在体力以上のダメージを与えた時に死亡しない。
11ダメージを2回実行して22ダメージを与えたとしても体力が1.0f残ってしまう。
2回目以降であっても現在体力以上のダメージを与えれば死亡する。
再現方法
以下に示す「使用コマンド」を実行する。
1tickで実行できればいいのでFunctionもしくはCommandBlockで実行する。
私の想定する動作
同じtickで複数回実行したとき、そのダメージの合計が現在体力以上なら死亡する。
11ダメージを2回実行すると、合計22ダメージとなって死亡する。
検証環境
- Minecraft 1.19.4
- ChenCMD/MCCMD-ScoreDamage 3.2-1.19
- Ai-Akaishi/ScoreToHealth
使用コマンド
data modify storage score_damage: Argument set value {Damage:11d}
execute as @p run function score_damage:api/attack
data modify storage score_damage: Argument set value {Damage:11d}
execute as @p run function score_damage:api/attack
参考動画
https://twitter.com/i/status/1659186999390269440
考えられる原因
$Health ScoreDamageCore
を設定するとき、毎回@s Health
から取得しており、同tickですでに設定された@s ScoreToHealth
と違いが生じる。
すると、@s ScoreToHealth
は0以下になるが、$SubtractedHealth ScoreToHealth
は1以上のままという場合が起こり、結果killされなくなる。
修正方法の提案
score_damage:core/get_status
で現在HPを取得するとき、@s ScoreToHealth
が設定されていればその100倍の値を$Health ScoreDamageCore
に設定する。
ChenCMD commented
ちょっと忙しいので修正出来ても5月末くらいになります(PR 出してくれてもいいんだよ)
NePonpon commented
forkするとして、どのブランチを利用して開発すればいいでしょう?
master-1.19
ですかね?