
Minecraft JE: 原版实现记分板随机数生成
Minecraft JE: 原版实现随机数生成
在 Minecraft BE 中,存在指令 scoreboard players random <player> <objective> <min> <max> 可以实现随机数生成,但是在 Minecraft JE 中并没有这个指令
如果要在 Java 版中需要实现记分板随机数生成,可以通过提取实体的 UUID 实现
UUID
UUID(通用唯一识别码)是 128 位长的数字,在 Minecraft 中用来区分不同的对象实例。
在 Minecraft 中,所有实体都有一个 UUID 标签,其中存储了实体的 UUID
通过召唤任意实体,使用 /data get entity <entity> UUID 可以获取实体的 UUID

在实体数据中,UUID 的表示形式为 整型数组,即用4个32位数字表示。每一部分存储在由高到低的整型数组中。
这种表示方式的一个示例为 [I;-132296786,2112623056,-1486552928,-920753162]。
随机数生成
通过提取上述 UUID 的数据,即可实现随机数生成
-
使用
/data get entity <entity> UUID[0]可以获取 UUID 数组中的第一个整数 -
使用
/execute store result score <name> <objective> run data get entity <entity> UUID[0]可以将 UUID 数组中的第一个整数存储到记分板中 -
使用
/scoreboard players operation <name> <objective> %= <range> <objective>可以将记分板中的数值取余
完整示例

# 生成随机数标记
summon marker ~ ~ ~ {Tags:["random_uuid"]}
# 储存 UUID
execute store result score result random run data get entity @e[type=marker,tag=random_uuid,limit=1] UUID[0] 1
# 取余运算
scoreboard players operation result random %= range random
# 清除标记
kill @e[type=marker,tag=random_uuid]
评论
评论加载中…