本帖最后由 MsYqgzt 于 2016-4-16 23:04 编辑

     大家好,今天教大家如何在1.9新预览版本中做出自定义的盔甲值物品为什么说是物品呢?这要说到以往版本的NBT:AttributeModifiers

实验之前我先开启了对自己盔甲值判据的计分板以便分析。
首先跟以往不同的就是盔甲值可以由玩家改变了,官方数值在0~30之内


默认的装备盔甲值是固定的,而且是锁定在身上的效果。


那么如果用之前的装备属性NBT来改变呢,就又是另一种情况。
用指令刷出一个带有速度加成的盔甲


指令:
  1. /give @a minecraft:diamond_chestplate 1 0 {AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Amount:0.05,AttributeName:generic.movementSpeed,Name:speed}]}
复制代码

这样刷出的是对所有列出物品栏条件都触发效果,光是拿在手上就有速度加成,
但是穿上以后整个人都慌了。。。



可以看到全身钻石甲的人护甲值不满20.其实准确的说就是胸甲本身没有被赋予护甲值的属性。
那么就需要相应的属性NBT。
指令:
  1. /give @a minecraft:diamond_chestplate 1 0 {AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Amount:30,AttributeName:generic.Armor,Name:armor}]}
复制代码
这里新增的属性名字为:generic.Armor

好了,这样就获得一个护甲值为30的胸甲,瞬间秒杀其他防具


前面说过了,任何物品都能被赋予这个属性并且有效,那是因为这种方式得到的物品对所有之中列出的物品栏都有效
开启盔甲值判据计分板
将物品拿在手上,可以看到护甲值变为30


只穿这个胸甲也是可以的


那么接下来我们研究护甲值高低的影响,取两个最值来研究,30和负值。
官方描述护甲30就是所谓的无敌,我们来试试。


通过普通僵尸的攻击后会发现,我们的血量并不是不会减少,而是半颗心半颗心地扣,
所谓的无敌只能说是最大防御,不能避免损害


接下来试试摔伤,用胸甲判定摔伤显然不行。


那么我们试试靴子,穿上护甲值30的靴子以后,从24格高空摔落,发现然并卵。


那么可以得出结论:护甲值只能防护非不可抗力的伤害,外来伤害除了基础防护,其余直接影响。

接下来试试负数等级的防护值,将胸甲的防护值设为-10


试验后发现护甲值依旧是0,攻击也没有增加损害


因此负数等级的护甲值将会被视作无护甲值计算。

最后的亮点:护甲值为30的羊毛

以下为@chyx 的补充说明:
为防止刷屏
可以加入Slot 可以是"mainhand", "offhand", "feet", "legs", "chest", "head"
像这样
{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"Test",Amount:10.0,Operation:0,UUIDLeast:1l,UUIDMost:1l,Slot:"torso"}]}
不加就会认为是所有位置 于是刷屏

====================END=====================






[groupid=1009]The Command's Power[/groupid]