Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#> Val
# @within function lib:motion/core/*/*
#declare score_holder $VectorMagnitude
#declare score_holder $VectorSquared
#declare score_holder $KnockbackResist

#> api
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
execute if data storage lib: Argument{KnockbackResist:1b} run function lib:motion/core/looking/knockback_resistance

# 適用
execute if entity @s[type=player] run function lib:motion/core/looking/player
execute if entity @s[type=!player,tag=!Uninterferable] run function lib:motion/core/looking/non-player
execute if entity @s[type=player] unless score $VectorMagnitude Temporary matches 0 run function lib:motion/core/looking/player
execute if entity @s[type=!player,tag=!Uninterferable] unless score $VectorMagnitude Temporary matches 0 run function lib:motion/core/looking/non-player

# リセット
scoreboard players reset $VectorMagnitude Temporary
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@

# 演算処理
data modify storage lib: Pos set from entity 0-0-0-0-0 Pos
execute store result score $VectorX Temporary run data get storage lib: Pos[0] 10
execute store result score $VectorY Temporary run data get storage lib: Pos[1] 10
execute store result score $VectorZ Temporary run data get storage lib: Pos[2] 10
execute store result score $VectorX Temporary run data get storage lib: Pos[0] 1000
execute store result score $VectorY Temporary run data get storage lib: Pos[1] 1000
execute store result score $VectorZ Temporary run data get storage lib: Pos[2] 1000

scoreboard players operation $VectorX Temporary *= $VectorMagnitude Temporary
scoreboard players operation $VectorY Temporary *= $VectorMagnitude Temporary
scoreboard players operation $VectorZ Temporary *= $VectorMagnitude Temporary

# 適用
execute store result storage lib: Pos[0] double 0.00001 run scoreboard players get $VectorX Temporary
execute store result storage lib: Pos[1] double 0.00001 run scoreboard players get $VectorY Temporary
execute store result storage lib: Pos[2] double 0.00001 run scoreboard players get $VectorZ Temporary
execute store result storage lib: Pos[0] double 0.0000001 run scoreboard players get $VectorX Temporary
execute store result storage lib: Pos[1] double 0.0000001 run scoreboard players get $VectorY Temporary
execute store result storage lib: Pos[2] double 0.0000001 run scoreboard players get $VectorZ Temporary
data modify entity @s Motion set from storage lib: Pos

# リセット
Expand Down
14 changes: 12 additions & 2 deletions TheSkyBlessing/data/lib/functions/motion/core/xyz/.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,19 @@
execute if data storage lib: Argument{KnockbackResist:1b} store result score $KnockbackResist Temporary run attribute @s generic.knockback_resistance get 100
execute if data storage lib: Argument{KnockbackResist:1b} run function lib:motion/core/xyz/knockback_resistance

# ベクトルの大きさ(の2乗)を取得する
function lib:array/session/open
data modify storage lib: Array set from storage lib: Argument.Vector
function lib:array/math/sqr
data modify storage lib: Array set from storage lib: SqrResult
function lib:array/math/sum
execute store result score $VectorSquared Temporary run data get storage lib: SumResult 10000
function lib:array/session/close

# 適用
execute if entity @s[type=player] run function lib:motion/core/xyz/player
execute if entity @s[type=!player,tag=!Uninterferable] run data modify entity @s Motion set from storage lib: Argument.Vector
execute if entity @s[type=player] unless score $VectorSquared Temporary matches 0 run function lib:motion/core/xyz/player
execute if entity @s[type=!player,tag=!Uninterferable] unless score $VectorSquared Temporary matches 0 run data modify entity @s Motion set from storage lib: Argument.Vector

# リセット
scoreboard players reset $VectorSquared Temporary
scoreboard players reset $KnockbackResist Temporary
Loading