第八十五章 item-更高级的replaceitem
在第三十八章中,我们了解了/rebr /laceitem的使用方法。可惜这么一个厉害的指令,却在Java1.17版本中被移除。只不过你并不需要担心,因为取而代之的是一个更加厉害的指令——item。
item比rebr /laceitem少了一个单词rebr /lace(替代),这说明了item的功能不仅仅局限在替代物品,还有一些其他的功能。具体有哪些其他功能呢?让我们来看看item这个指令的格式,你就知道了:
/item
作用:修改方块或实体物品栏内的物品
存在版本:Java1.17-今
需要权限等级:Java-2
需要作弊:否
格式:
/item modify ...
... block <方块坐标><栏位><物品修饰器ID>
... entity <目标实体><栏位><物品修饰器ID>
\\为指定方块或实体的指定栏位内物品添加指定的物品修饰器\\
/item rebr /lace ...
...(block <方块坐标>|entity <目标实体>)<栏位>...
...... with <物品ID>[数量]
\\修改指定方块或实体的指定栏位内的物品为指定的物品\\
...... from (block <方块坐标>|entity <目标实体>)<栏位>[物品修饰器ID]
\\修改指定方块或实体的指定栏位内的物品为另一个方块或实体内指定栏位内的物品\\
不难发现,相比以前的/rebr /laceitem,新的/item不仅仅保留并升级了rebr /lace替代的功能,还新增了一个modify为物品添加修饰器的功能。
我们先来看看遗传下来的替代功能。新版本的替代功能不仅仅可以替代某个物品栏位为指定的物品,还可以把另外一个容器内的物品复制过来
我们先来试试传统的功能:替代某个物品栏位为指定的物品。比如我们要将自己帽子栏位内的物品替换为一个TNT,就需要使用:
/item rebr /lace entity @s armor.head with minecraft:tnt 1
我们来对比一下上述指令在1.17版本前的写法:
/rebr /laceitem entity @s slot.armor.head minecraft:TNT
你会发现两者总体的变化并不是很大,最主要的变化也就是在『栏位』参数和『物品ID』参数间多出了一个with,这个with的作用是用来告诉游戏:我仅仅只是指定一个要替换成的物品而已,也就是使用传统的替换功能。还有一个比较小的变化就是,栏位ID前面没有『slot.』前缀了。
我们现在来看看新的替换模式:from复制模式
item新添加的『复制模式』要指定两个物品栏位,第一个栏位是目的地,第二个栏位是来源。比如:
/item rebr /lace entity @s armor.head from entity @s weabr /on.offhand
这将会把你副手(weabr /on.offhand)所持有的物品复制到你的头上。第一个指定的『entity @s armor.head』即目的地,第二个指定的『entity @s weabr /on.offhand』即来源。
再来一个例子:
/execute as @a at @s if block ~~-1 ~ minecraft:furnace run item rebr /lace block ~~-1 ~ container.2 from block 35 65 26 container.0
这将会把所有玩家脚底下熔炉输出槽内的物品替换为坐标为(35,65,26)的容器的第一个槽位内的物品。假设这个容器是一个箱子,箱子的最左上角放着三颗钻石,那么运行上述指令过后,所有玩家脚底下熔炉的输出槽内都会有三颗钻石。(注:箱子最左上角的栏位ID为container.0,熔炉输出槽栏位为container.2)
还是比较简单的嘛。接下来我们来看看item添加的全新功能:物品修饰器。
什么是物品修饰器呢?简单来说,物品修饰器里面设定了一些程序,这些程序会对物品本身进行一些修改。我们可以通过item命令给指定栏位内的物品添加上一个物品修饰器,然后这个物品就会被物品修饰器所修饰。
举个例子,假设有一个ID为『arcaea:kill_tairitsu』的物品修饰器,这个物品修饰器会对物品本身进行一些修改,使得该物品在攻击名为『Tairitsu』的实体时能够发挥出超强的攻击力。我们可以通过以下指令给我们主手上的物品添加上这个物品修饰器:
/item modify entity @s weabr /on.mainhand arcaea:kill_tairitsu
这将会给我们主手拿着的物品添加上这个物品修饰器,然后你就能拿着这个物品去挑战名为『Tairitsu』的实体了。
虽然物品修饰器功能强大,但它和谓词一样,都是数据包才有的,原版并没有任何的物品修饰器。因此如果你要使用物品修饰器,首先你就得弄一个具有物品修饰器的数据包出来。
这就是本章的全部内容了。
附录①:Java1.17新版本槽位ID
箱子、陷阱箱、发射器、投掷器、漏斗
container.<槽位编号>——从左到右、从上往下、从0递增
酿造台
container.0-2 ——底部从左到右
container.3 ——顶部
container.4 ——烈焰粉槽位
熔炉
container.0 ——输入
container.1 ——燃料
container.2 ——输出
实体
armor.chest ——胸
armor.feet ——脚
armor.head ——头
armor.legs ——腿
weabr /on.mainhand ——主手
weabr /on.offhand ——副手
container.<槽位编号>——???
enderchest.<槽位编号>——末影箱
hotbar.<槽位编号>——快捷栏
inventory.<槽位编号>——玩家背包
horse.saddle ——鞍的槽位
horse.chest ——(羊驼、骡或驴)驮着的箱子
horse.armor ——马铠或地毯的槽位
horse.<槽位编号>——驮着箱子的羊驼、骡和驴
villager.<槽位编号>——村民或猪灵的背包
附录②:/item历史
Java
1.17——加入了/item