本帖最后由 ruhuasiyu 于 2020-4-9 18:19 编辑

战利品表随机数
Random Generator by Loot Table
随机数生成本版已有多种实现方式,之前人们主要使用 https://www.mcbbs.net/thread-706030-1-1.html 中使用随机给药水云加分来实现。然而自从战利品表被增强之后,我们可以使用更为简便的做法来实现。实际上,很多CB玩家都已经使用这个技巧,这也包括 https://www.mcbbs.net/thread-855790-1-1.html 的做法。

然而,实际上我们可以生成一段区域内的浮点随机数,倍乘之后,我们便轻易地得到了一个巨大范围的整随机数。例如在set_attribute这个function中,我们可以设置物品的属性值为至多0-2048范围内的浮点数,然后倍乘1048575。具体见下文。
如何使用
战利品表随机数1.3.zip (2.56 KB, 下载次数: 217) 放入存档datapacks文件夹即可。
使用时,设定好最大最小值之后执行函数random:random即可,分数会存储在#result的random记分板。
  1. scoreboard players set #random_min random [最小值]
  2. scoreboard players set #random_max random [最大值]
  3. function random:random
复制代码
原理简析
0. 创建记分板略。
1. 创建战利品表
random/loot_tables/random.json
2. 生成这个战利品的掉落物,然后将其属性值乘以1048575倍(控制在记分板最大值范围内),我们便得到了0-2048*1048575范围的随机数。
3. 然后我们对随机数范围取同余,并加上最小值即可。
random/functions/random.mcfunction

非常简单,只有8行命令。
更新日志
v1.3 2020/04/09
+ 现在支持1.16版本。

v1.2 2019/09/29
+ 现在分数会被记录在#result的分数上而非执行者。

v1.1 2019/08/13
+ 修复了执行后原本记分板会发生改变的问题。

v1.0 2019/08/11
+ 提交第一个版本。
[groupid=1009]The Command's Power[/groupid]