can_destroy——指定该物品可以破坏哪些方块
这两个物品组件适用于冒险模式。你应该知道,在基岩版中,处于冒险模式的玩家无法破坏或放置任何方块。因此,妥善运用上述组件,就可以指定玩家能够破坏或放置哪些方块,使得玩家的自由度更高,也能够弄出更多的玩法。
那么它们到底该怎么使用呢?
你需要在这两个组件的值,也就是它们的JSON对象中,使用blocks组件(值类型为字符串列表),指定具体可以破坏或放置的方块。比如:
/give @s diamond_shovel 1 0 {“can_destroy“:{“blocks“:[“minecraft:dirt“,“minecraft:grass“]}}
这将会给你一把在冒险模式中能够破坏泥土和草方块的钻石铲铲。can_place_on组件的使用方法同理:
/give @s diamond_block 1 0 {“can_place_on“:{“blocks“:[“minecraft:dirt“,“minecraft:grass“]}}
这将会给你一块在冒险模式中能够放置于泥土和草方块上方的钻石块。
可惜的是,这两个组件似乎无法指定具体的方块数据值以及方块状态,这就限制了这两个组件的使用范围。
item_lock和keep_on_death这两个组件是基岩版于1.16.100版本中新添加的。由于它们俩比较新,所以目前知道的人并不多。但这两个的用处可不是一般的大:
item_lock——将物品锁定于背包或指定栏位中,使得物品无法被移除、丢弃或用于合成。
keep_on_death——使得物品在死亡后不会掉落
keep_on_death组件的使用方法非常简单,你甚至不需要指定它的JSON对象内到底该填写什么,只需要放一个空空如也的JSON对象作为它的值即可:
/give @s diamond_shovel 1 0 {“minecraft:keep_on_death“:{}}
这将会给你一把不会因死亡而掉落的钻石铲(不受游戏规则『死亡不掉落』是否开启的影响),可以说十分简单且有用。你应该注意到了,物品组件也具有命名空间。
item_lock组件可以将物品锁定在玩家的物品栏中。它具有两个模式,需要使用mode组件在它的JSON对象中指定:
lock_in_inventory——锁定在玩家的背包中,玩家可以在背包中调整物品的位置,但物品无法被移除、丢弃或用于合成。
小主,
lock_in_slot——锁定在玩家的栏位中,玩家不可在背包中调整物品的位置,物品也无法被移除、丢弃或用于合成。
举个例子:
/give @s apple 64 0 {“item_lock“:{“mode“:“lock_in_inventory“}}
这将会给你自己一组苹果。你虽然可以使用它并调整它的位置,但这些苹果无法被销毁、丢弃或用于合成,你也无法将这些苹果放到其他容器中。但如果你死亡的话,这些苹果仍然会掉落。另外,这些苹果也可以通过指令移除掉。