看到章节名没有。
没看到?那是因为我并没有写章节名(想不出来)。
所以章节名就让你们想好了。
——————————————
正文开始
上一章我们提到:Operation有一个乘,还有一个最终乘。
那么“乘”和”最终乘“有什么区别呢?
选择乘的时候:
{AttributeModifiers:[{Amount:2,Operation:1}]}
那么得出来的结果是+200%
但如果有两个乘呢?(且修改的属性都相同):
{AttributeModifiers:[{Amount:2,Operation:1},{Amount:3,Operation:1}]}
这个时候,最终得出来的结果是+500%
没错,Operation1的计算方式就是:
原本值x(1+相同属性的Amount+相同属性的Amount.....)=现在值
(看不懂的你细品,就知道了,所以玩MC还要带上你的数学课本)
而在Minecraft Wiki中,Operation1的正规名称,叫做“倍率增量”。
而Operation0的正规名称,叫做“属性增量”。
哎,是不是立马就觉得高大上了起来(太棒了,又有新的牛可以吹了!)?
那么Operation2呢?
现在我们把上面的NBT照搬下来,然后把Operation修改成2:
{AttributeModifiers:[{Amount:2,Operation:2},{Amount:3,Operation:2}]}
这样子,最终得出来的结果是怎么样的呢?
假设属性初始值为4,经过NBT的一通计算猛如虎,最终的属性变成了:
48
而如果按照倍率增量的公式计算,最终的结果则是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指令!
不过这是实体的事情了。
阅读Minecraft指令手册最新章节 请关注老幺小说网(www.xinminlan.cn)