记分板取最高、最低分数

取最高分数

分数储存在marker的scb里

命令:

scoreboard players set marker scb -2147483648
execute 所有要比较分数的实体 ~ ~ ~ scoreboard players operation marker scb > @e[c=1] scb

取最低分数

分数储存在marker的scb里

命令:

scoreboard players set marker scb 2147483647
execute 所有要比较分数的实体 ~ ~ ~ scoreboard players operation marker scb < @e[c=1] scb

原理解释

execute部分,是用来确保每个分数都会获得比较
而operation部分,就是当前最高/低分数实体分数比较,如果实体分数更高/低,替换掉当前marker的分数

至于那初始分数, 求最大的时候就设置为记分板下限, 求最小的时候就设置为记分板上限,是为了保证会替换为第一个实体的分数。不替换的可能性只有一个: 等于当前marker的分数。

伪代码

max_score = -2147483648
for score in scores:
    if score > max_score:
        max_score = score