第一百零三章 《关于工具耐久的这档事》
(此章节已于2022年8月5日进行大修改)
众所周知,在基岩版和Java1.13以下版本,如果你更改一个有耐久物品的数据值,改成1以上,你就会发现,数值越大,这个物品的耐久度就越低。当数据值大于物品耐久度的时候,游戏仍然会更改成功,只不过这个物品有个缺点:
这是一次性物品(当然对于有些地图作者来说是优点)
比如下面的指令:
/give @s diamond_shovel 1 9999
由于9999的数据值已经远超钻石锹的1561点耐久度,因此上面的指令将会给你一把一用就坏的钻石锹。
在基岩版和Java1.13以下版本,你可以通过上述方法快速获取到具有指定耐久值的工具。但是,对于Java1.13及以上版本,我们该怎么办?
Mojang给出的答案是:用NBT
而Mojang给出的NBT标签是『Damage』,是一个值为Int整型的标签,中文翻译为『损坏值』。这东西的用法和我们拿数据值来指定物品耐久度一样,比如:
/give @s diamond_sword{Damage:20} 1
你就会获得一个损坏值为20的钻石剑,也就是耐久度为1541点的钻石剑(满值为1561点)。
这就是在Java1.13及以上版本获得具有指定耐久度物品的方法。但如果我们要的是『永远也不会损坏』的效果,那该怎么办?用/rebr /laceitem或/item一直修改Damage为0吗?
不需要这么麻烦,因为Mojang也给出了一个NBT标签:Unbreakable(无法破坏的)
Unbreakable标签的值是一个布尔值,默认情况下它为0,也就是false(关闭)。你可以手动改为1变成true(开启)。当Unbreakable标签的值为1,也就是true(开启)时,该物品就会具有一个『无法损坏』的属性,也就达成了我们想要的效果。
举个例子:
/give @s diamond_sword 1 0 {Unbreakable:1}——Java1.13以下版本
/give @s diamond_sword{Unbreakable:1} 1 ——Java1.13及以上版本
这样子,你就拥有一个耐久度为∞的钻石剑了!
附录:本章相关历史
Java版
1.7.2——加入了Unbreakable标签
1.13——移除了数据值,Damage标签被移到物品tag标签下
(把Unbreakable和Damage都写上会发生什么?)