我的世界命令方块做速度最大生命+20的钻石剑
速度值设为20是不是大了点。。。我写成+20%吧
先从结论说起。指令如下:
/give @p diamond_sword 1 0 {AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:20,Operation:0,UUIDLeast:894654,UUIDMost:2872},{AttributeName:"generic.movementSpeed",Name:"generic.movementSpeed",Amount:0.2,Operation:1,UUIDLeast:894654,UUIDMost:2872}]}
据说大多数的同学看到这里就可以下课了,但是我觉得还是有必要来对此探探幽,毕竟授之以鱼不如授之以渔,对吧?
做出这种效果,使用的是minecraft一种名为属性的系统。
现在,我们不妨将后面的json拆开,一探究竟。
{
AttributeModifiers: [
{
AttributeName: "generic.maxHealth",
Name: "generic.maxHealth",
Amount: 20,
Operation: 0,
UUIDLeast: 894654,
UUIDMost: 2872
}
.....
]
}
啥?这是啥?有些同学可能要这么问了。不过别急,我们来一行一行慢慢讲
{//这是json的固定开头格式。
AttributeModifiers: [//告诉minecraft从现在开始是属性部分
{//json的格式
AttributeName: "generic.maxHealth", //属性名,貌似必须与下面的名称吻合
Name: "generic.maxHealth", //名称,貌似必须与上方的属性名吻合
Amount: 20, //属性的量。作用效果与下方的运算模式有关。
Operation: 0, //运算模式。0为简单加法运算(如+20 最大生命),量就是加上的数值.;1为加乘法运算(如+2000% 最大生命),量为加上的百分比除以100后的值.
UUIDLeast: 894654, //UUID部分1
UUIDMost: 2872 //UUID部分2
}//json的格式
.....//偷懒省略一段
]//告诉minecraft属性部分到此为止
}//这是json的固定结尾格式
注.学过程序语言的同学可能会发现,我用了注释格式来说明。实际上json是不能使用这种格式的。
修改字符后,将多余的空格删去,便可以加入指令中使用了。
其他的属性名是?UUID是什么?只想让属性在指定位置装备时生效该怎么做?请至-->网页链接
(攥写者攥写本回答使用了部分来自于minecraft wiki的资料。原页面网页链接,在CC-BY-NC-SA 3.0协议下使用)