diff --git a/ScoreToHealth/changes.diff b/ScoreToHealth/changes.diff index 0b849bf0ab..28f28e290c 100644 --- a/ScoreToHealth/changes.diff +++ b/ScoreToHealth/changes.diff @@ -1,3 +1,12 @@ +--- original/ScoreToHealth/data/minecraft/tags/functions/load.json ++++ modified/ScoreToHealth/data/minecraft/tags/functions/load.json +@@ -2,3 +2,3 @@ +- "values": [ +- "score_to_health:load" +- ] ++ "values": [ ++ "score_to_health:load" ++ ] --- original/ScoreToHealth/data/score_to_health/functions/check.mcfunction +++ modified/ScoreToHealth/data/score_to_health/functions/check.mcfunction @@ -15,3 +15,4 @@ @@ -16,13 +25,14 @@ +execute if score $__ ScoreToHealth matches 1.. run function score_to_health:anti_glitch/protect --- original/ScoreToHealth/data/score_to_health/functions/load.mcfunction +++ modified/ScoreToHealth/data/score_to_health/functions/load.mcfunction -@@ -14,0 +15,5 @@ +@@ -15 +15,13 @@ +-scoreboard objectives add ScoreToHealth dummy {"text":"プレイヤーをこの体力にする(*0.01HP)"} +#> ObjectDeclare +# @within * +# score_to_health:** +# lib:score_to_health_wrapper/** +# lib:has_health_modify_score -@@ -15,0 +21,7 @@ ++ scoreboard objectives add ScoreToHealth dummy {"text":"プレイヤーをこの体力にする(*0.01HP)"} + +#> PrivateUse +# @internal @@ -198,8 +208,22 @@ +execute store result score $_ ScoreToHealth run attribute @s minecraft:generic.max_health get 100 +execute if score @s ScoreToHealth <= $_ ScoreToHealth run attribute @s minecraft:generic.max_health modifier add bab7cdc2-fb6a-47f6-0001-00 "ScoreToHealth" -0.0001 add +execute if score @s ScoreToHealth > $_ ScoreToHealth run attribute @s minecraft:generic.max_health modifier add bab7cdc2-fb6a-47f6-0001-00 "ScoreToHealth" 0.0001 add +--- original/ScoreToHealth/data/score_to_health/functions/player_tick.mcfunction ++++ modified/ScoreToHealth/data/score_to_health/functions/player_tick.mcfunction +@@ -15 +15 @@ +-execute if entity @s[tag=ScoreToHealth.Modified] run function score_to_health:restore ++# execute if entity @s[tag=ScoreToHealth.Modified] run function score_to_health:restore --- original/ScoreToHealth/pack.mcmeta +++ modified/ScoreToHealth/pack.mcmeta -@@ -3 +3 @@ +@@ -2,5 +2,5 @@ +- "pack":{ - "pack_format": 10, +- "description": "Sync Health with Score" +- } +-} +\ No newline at end of file ++ "pack":{ + "pack_format": 26, ++ "description": "Sync Health with Score" ++ } ++} diff --git a/ScoreToHealth/data/score_to_health/functions/player_tick.mcfunction b/ScoreToHealth/data/score_to_health/functions/player_tick.mcfunction index 690a7a7e3c..ab0c0aa786 100644 --- a/ScoreToHealth/data/score_to_health/functions/player_tick.mcfunction +++ b/ScoreToHealth/data/score_to_health/functions/player_tick.mcfunction @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -execute if entity @s[tag=ScoreToHealth.Modified] run function score_to_health:restore +# execute if entity @s[tag=ScoreToHealth.Modified] run function score_to_health:restore execute unless entity @s[tag=ScoreToHealth.Return] if score @s ScoreToHealth matches -2147483648.. run function score_to_health:check tag @s[tag=ScoreToHealth.Return] remove ScoreToHealth.Return advancement revoke @s only score_to_health:player_tick diff --git a/TheSkyBlessing/data/core/functions/tick/player/pre.mcfunction b/TheSkyBlessing/data/core/functions/tick/player/pre.mcfunction index 949e05fa21..102754b134 100644 --- a/TheSkyBlessing/data/core/functions/tick/player/pre.mcfunction +++ b/TheSkyBlessing/data/core/functions/tick/player/pre.mcfunction @@ -4,6 +4,8 @@ # # @within function core:tick/ +function player_manager:health/score_to_health_restore + function player_manager:manage_tag/ function player_manager:pos_fix_and_calc_diff diff --git a/TheSkyBlessing/data/player_manager/functions/health/score_to_health_restore.mcfunction b/TheSkyBlessing/data/player_manager/functions/health/score_to_health_restore.mcfunction new file mode 100644 index 0000000000..b3a8ee2e6e --- /dev/null +++ b/TheSkyBlessing/data/player_manager/functions/health/score_to_health_restore.mcfunction @@ -0,0 +1,12 @@ +#> player_manager:health/score_to_health_restore +# +# ScoreToHealth が前tickで付与したmax_health modifierを早期解除する +# +# @within function core:tick/player/pre + +#> Private +# @private + #declare tag ScoreToHealth.Modified + +# 前tickのmodifierを先回りで撤去 + execute if entity @s[tag=ScoreToHealth.Modified] run function score_to_health:restore