前置
/scoreboard objectives add 矿区 dummy
配置
⒈循环无条件:testfor @e[name=矿区,type=armor_stand]
连一个比较器后面放一个方块,方块上放一个斜着的红石火把(做一个简单的红石非门)红石火把后面放一个普通无条件红石控制命令方块:
①普通无条件红石控制:execute as @a at @s run playsound step.nether_gold_ore @s ~ ~ ~ 100 0.5
②连锁无条件:tellraw @a {"rawtext":[{"text":"§o§6▍§e▎矿区刷新完毕▎§6▍"}]}
③连锁无条件:tag @a remove 矿区刷新
⒉循环无条件条件:testfor @a[tag=矿区刷新]
连一个比较器后面接一个普通无条件红石控制命令方块:
①普通无条件红石控制:fill (你矿区的对点坐标) air
②连锁无条件:execute as @a at @s run playsound step.nether_gold_ore @s ~ ~ ~ 100 1.5
③连锁无条件:tellraw @a {"rawtext":[{"text":"§o§6▍§e▎矿区开始刷新▎§6▍"}]}
④连锁无条件:summon armor_stand ~ ~ ~ a 矿区
⑤连锁无条件:execute as @e[name=矿区,type=armor_stand] at @s run summon armor_stand ~ ~ ~ a 矿区
⑥连锁无条件:execute as @e[name=矿区,type=armor_stand] at @s run summon armor_stand ~ ~ ~ a 矿区
⑦连锁无条件:execute as @e[name=矿区,type=armor_stand] at @s run summon armor_stand ~ ~ ~ a 矿区
⑧连锁无条件:execute as @e[name=矿区,type=armor_stand] at @s run summon armor_stand ~ ~ ~ a 矿区
主指令
⒈循环无条件:execute as @e[name=矿区,type=armor_stand] at @s run spreadplayers (你的矿区中心的x轴坐标) (你矿区中心的z轴坐标) 0 10 @s
⒉连锁无条件:execute as @e[name=矿区,type=armor_stand] run scoreboard players random @s[name=矿区,type=armor_stand,tag=!已刷新] 矿区 1 100
⒊连锁无条件:execute as @e[name=矿区,type=armor_stand,scores={矿区=1..50}] at @s run execute as @s[name=矿区,type=armor_stand,tag=!已刷新] at @s run setblock ~ ~-1 ~ coal_ore 0 keep
⒋连锁无条件:execute as @e[name=矿区,type=armor_stand,scores={矿区=51..60}] at @s run execute as @s[name=矿区,type=armor_stand,tag=!已刷新] at @s run setblock ~ ~-1 ~ iron_ore 0 keep
⒌连锁无条件:execute as @e[name=矿区,type=armor_stand,scores={矿区=61..70}] at @s run execute as @s[name=矿区,type=armor_stand,tag=!已刷新] at @s run setblock ~ ~-1 ~ gold_ore 0 keep
⒍连锁无条件:execute as @e[name=矿区,type=armor_stand,scores={矿区=71..80}] at @s run execute as @s[name=矿区,type=armor_stand,tag=!已刷新] at @s run setblock ~ ~-1 ~ emerald_ore 0 keep
⒎连锁无条件:execute as @e[name=矿区,type=armor_stand,scores={矿区=81..100}] at @s run execute as @s[name=矿区,type=armor_stand,tag=!已刷新] at @s run setblock ~ ~-1 ~ diamond_ore 0 keep
⒏连锁无条件:execute as @e[name=矿区,type=armor_stand] at @s run execute as @s[name=矿区,type=armor_stand,tag=!已刷新] at @s run fill (你矿区对角1的x坐标) ~-1 (你矿区对角1的z坐标) (你矿区对角2的x坐标) ~-1 (你矿区对角2的z坐标) stone 0 keep
⒐连锁无条件:execute as @e[name=矿区,type=armor_stand] at @s run tag @s[y=(你矿区的最高高度坐标),dy=10] add 已刷新
⒑连锁无条件:execute as @e[name=矿区,type=armor_stand] run kill @s[tag=已刷新]
使用
改好命令方块里指令的必要参数与红石非门正确摆放后
给玩家添加一个“矿区刷新”的标签即可