扫码在手机阅读
手机阅读《Minecraft指令手册》
Minecraft指令手册

第106章

现在我们把上面的NBT照搬下来,然后把Operation修改成2:

{AttributeModifiers:[{Amount:2,Operation:2},{Amount:3,Operation:2}]}

这样子,最终得出来的结果是怎么样的呢?

没看到?那是因为我并没有写章节名(想不出来)。

所以章节名就让你们想好了。

——————————————

而如果按照倍率增量的公式计算,最终的结果则是24。

那么Operation2到底是怎么计算的呢?

首先看一下顺序(从左往右),2为第一个,3为第二个。

然后开始计算。

计算过程具体为:

第一步——4x(2+1)=12

第二步——12x(3+1)=48

没错,Operation2就是这么计算的。

它的计算方式可以概括为:加成是覆盖的百分比加成。

概括成百分比为:(+%)+%

而Operation2的学名(没错,学名都出来了)叫做:最终倍乘。

而我相信你估计也懂了很多。

毕竟,网上的教程最多也就到Operation1就结束了(大部分甚至连这个东西都没提到)。

就算你在贴吧找到了Operation2,但那也是指令教程,人家都是一个指令直接糊你脸上的,让你把这些糊蒸发到头顶上。

那么这下子估计有的聪明人就会问了:

那么我要是三个全弄呢?

哎这就有意思了。

但其实也是一个公式搞定的事情。

为了保持神秘感,公式先不用上,我先问大家一个问题:

你们认为,这是乘法先算,还是加法先算呢?

按理来说,乘法是二级运算,比加法要高一级,所以乘法先算。

但你可别忘了这么一句话:别跟Minecraft讲科学。

所以在这里,乘法还是二级运算。

只不过这个级别是倒序——加法先算。

比如:

{AttributeModifiers:[{Amount:8,Operation:0},{Amount:6,Operation:0},{Amount:5,Operation:1},{Amount:3,Operation:1},{Amount:2,Operation:2},{Amount:3,Operation:2}]}

假设初始值还是4,那么首先就是算那两个Op0了,变成:18——4+8+6

然后按照Mojang的逻辑,接下来是Op1,算完就变成:162——(6+5+1)x18

最后是Op2,算完就是最终结果:1944——[(2+1)x162]x(3+1)

我们通过这样子可以写出亿个公式,当然是简化过的:

最终属性值=(原来属性值+Op0)x(1+Op1)xOp2

Op0=将所有Op0的Amount相加的和

Op1=所有Op1的Amount相加的和

Op2=先把所有Op2的Amount加1,然后相乘的积

这就是Operation的全部内容了(我尼玛一个Operation都写了1000多字了)。

然后上一章还说过什么来着?

哦,版本新增加了一个指令(具体为快照20w17a):/attribute

在Minecraft Wiki上它的格式是这样的:

attribute target attribute

ase] get [scale

attribute target attribute base set value

attribute target attribute modifier add uuid name value add|multiply|multiply_base

attribute target attribute modifier remove uuid

attribute target attribute modifier value get uuid [scale

(读者:能不能说人话?)

OK说人话,翻译过来是这样的:

(注:以后作者将会使用《》代替)

/attribute 《目标选择器》《属性的id》

ase] get [《乘数》

/attribute 《目标选择器》《属性的id》 base set 《值》

/attribute 《目标选择器》《属性的id》 modifier add 《UUID》《名字》《值》《add|multiply|multiply_base》

/attribute 《目标选择器》《属性的id》 modifier remove 《UUID》

/attribute 《目标选择器》《属性的id》 modifier value get 《UUID》《乘数》

首先,你需要使用目标选择器锁定一个实体(怎么是实体?)

为什么呢?因为attribute指令是直接修改实体的属性的!(比如说修改你的属性,把智力修改成1024,从此.......)

然后就开始正常了——填属性id。

接下来就有点难理解了。

先从modifier开始,modifier的意思是“修饰符”,所以这里就是开始修饰了。

你可以add、remove以及value get。

add——增加一个修饰符

remove——删除一个修饰符

value get——查看指定修饰符的值

从add开始。

首先,你需要设置一下这个修饰符的UUID。

等会?UUID该怎么办?

这里说一下,版本的UUID全面更新,从以前的16位变成了4组数字,比如:

-1953028026,-856931226,-1240793240,-1598231354

(怎么全是负的)

那么现在的NBT的UUID该怎么办呢?

具体是这样子:

{AttributeModifiers:[{Amount:2,Operation:1,UUID:[I;-1953028026,-856931226,-1240793240,-1598231354}]}

至于UUID去哪找......

自己随便写一个4个十位数就行了。

或者用谷歌浏览器打开/mc-uuid-nverter/(外国网站,需要翻译),点击“随机”就不用自己动手了,直接复制就可以了。

(所以用版本打开及以下存档,其属性修改全部失效)

对了,UUID最好在写的时候也自己复制一份,到时候忘记了删除或者是查看就很麻烦了。

然后是名字,随便写。

值的话就是Amount了,自己写。

那么最后的是什么呢?

是Operation,也就是计算方式:

add——对应Op0

multiply——对应Op1

multiply_base——对应Op2

具体的话请看这一章的前面部分。

最后就可以回车运行了。

remove就不用多说了,你品就行了。

value get就是输入属性修饰符的UUID,然后查询输入的值。

但“乘数”是干什么的呢?

是指你看到的这个值需要乘多少。

但必须要写这就nm离谱,而且这看起来也没有什么作用啊?

可能是保密用的吧。

但这些都只是在基础值(Base)上做运算。

而attribute竟然给了我们直接修改基础值的方法!

公式就是:

/attribute 《目标选择器》《属性的id》 base set 《值》

这条公式的作用就是将你给出的值覆盖到原本的基础值上!

这下子我们就不用担心哪一天不小心删掉了修饰符了。

(呃,UUID都记不住,哪来的不小心之说?)

最后就是一些比较不那么常用的公式了:

/attribute 《目标选择器》《属性的id》

ase] get [《乘数》

但这个不常用的公式却出奇的复杂——问题就出在

ase]上

如果你填

ase],也就是:

/attribute 《目标选择器》《属性的id》 base get [《乘数》

这样子会显示该属性的基础值(乘数的话就不用多说了吧?)

那么如果不填

ase]呢?

/attribute 《目标选择器》《属性的id》 get [《乘数》

这样子就会显示该属性经过修饰符修过的值!

这个公式的确很神奇。

既然我们可以通过attribute修改实体的属性,那么在版本以前是怎么修改的呢?

没错,使用的就是summon指令!

不过这是实体的事情了。

正文开始

上一章我们提到:Operation有一个乘,还有一个最终乘。

哎,是不是立马就觉得高大上了起来(太棒了,又有新的牛可以吹了!)?

那么Operation2呢?

原本值x(1+相同属性的Amount+相同属性的Amount.....)=现在值

看到章节名没有。

那么“乘”和”最终乘“有什么区别呢?

选择乘的时候:

{AttributeModifiers:[{Amount:2,Operation:1},{Amount:3,Operation:1}]}

(看不懂的你细品,就知道了,所以玩MC还要带上你的数学课本)

而在Minecraft Wiki中,Operation1的正规名称,叫做“倍率增量”。

而Operation0的正规名称,叫做“属性增量”。

那么得出来的结果是+200%

但如果有两个乘呢?(且修改的属性都相同):

假设属性初始值为4,经过NBT的一通计算猛如虎,最终的属性变成了:

48

这个时候,最终得出来的结果是+500%

没错,Operation1的计算方式就是:

{AttributeModifiers:[{Amount:2,Operation:1}]}

  • 加入收藏
  • 目录
  • A+
  • A-