call_each.mcfunction 1.4 KB

123456789101112131415161718192021222324252627282930
  1. # 处理单个奖励物品
  2. # as player
  3. # 获取当前物品
  4. data modify storage item:bonus item set from storage item:bonus item_buff[0]
  5. data remove storage item:bonus item_buff[0]
  6. # 播放音效
  7. function lib:sounds/hit
  8. # 显示拾取提示(获得得分的提示由 add_score 显示,获得随机物品则该物品不显示)
  9. execute unless data storage item:bonus item.tag.bonus_add_score unless data storage item:bonus item.tag.bonus_random_bonus[0] run tellraw @a ["",{"text": ">> ","color":"aqua","bold": true},{"selector": "@s","color":"aqua"}," 获得了 ",{"nbt": "item.tag.item_name","storage":"item:bonus","interpret": true}]
  10. # 如果有 return 标签则退回物品(最先执行)
  11. execute if data storage item:bonus item.tag{"bonus_return":1b} run function item:bonus_item/return_item
  12. # 如果有 add_score 标签则增加积分
  13. execute if data storage item:bonus item.tag.bonus_add_score run function item:bonus_item/add_score
  14. # 如果有 give_items 标签则给予物品
  15. execute if data storage item:bonus item.tag.bonus_give_items[0] run function item:bonus_item/give_items
  16. # 如果有 random_bonus 标签则返还随机物品
  17. execute if data storage item:bonus item.tag.bonus_random_bonus[0] run function item:bonus_item/random_bonus
  18. # 执行特定函数
  19. execute if score $state mem matches 7 run function item:bonus_item/pickup_1
  20. # 处理下一个
  21. execute if data storage item:bonus item_buff[0] run function item:bonus_item/call_each