player_death.mcfunction 1.6 KB

123456789101112131415161718192021222324252627282930
  1. # 执行重生方法
  2. function mini:diamond/game/respawn1
  3. say 3
  4. # 复活特效
  5. execute as @a at @s run function lib:sounds/error
  6. effect give @s blindness 3 0 true
  7. # 处理玩家掉落物品
  8. # 获取玩家死亡位置
  9. kill @e[type=armor_stand,tag=dead_marker]
  10. summon armor_stand 1000 0 5000 {Marker:1b,Invisible:1b,Invulnerable:1b,Small:1b,NoGravity:1b,Tags:["dead_marker"]}
  11. execute store result entity @e[type=armor_stand,tag=dead_marker,limit=1] Pos[0] double 1 run scoreboard players get @s posX
  12. execute store result entity @e[type=armor_stand,tag=dead_marker,limit=1] Pos[1] double 1 run scoreboard players get @s posY
  13. execute store result entity @e[type=armor_stand,tag=dead_marker,limit=1] Pos[2] double 1 run scoreboard players get @s posZ
  14. # 单独处理钻石
  15. execute store result score #diamond_count temp run clear @s diamond
  16. scoreboard players add #diamond_count temp 1
  17. execute at @e[type=armor_stand,tag=dead_marker,limit=1] run summon item ~ ~ ~ {Tags:["temp_diamond"],Item:{id:"minecraft:diamond",Count:1b}}
  18. execute as @e[type=item,tag=temp_diamond,limit=1] store result entity @s Item.Count byte 0.5 run scoreboard players get #diamond_count temp
  19. tag @e[type=item,tag=temp_diamond,limit=1] remove temp_diamond
  20. # 随机槽位掉落
  21. function mini:diamond/game/random_slot
  22. function mini:diamond/game/pop_slot
  23. # 返还钻石
  24. scoreboard players remove #diamond_count temp 1
  25. scoreboard players operation #diamond_count temp /= #const_2 mem
  26. execute if score #diamond_count temp matches 1.. run function mini:diamond/game/give_diamond
  27. # 删除marker
  28. kill @e[type=armor_stand,tag=dead_marker]