魅-内存君
我想问一下,有没有那种编辑箱子内容的指令?(换句话说,就是用一个指令,让箱子填满指定的物品。)

Chelover_C60
本帖最后由 Chelover_C60 于 2021-3-26 21:31 编辑

日常不说版本


一般来说使用/replaceitem(1.8~1.16)或/item(1.17+)用于定向放置物品比较方便,当然也可以直接用/blockdata(1.8~1.12)或/data(1.13+)来直接修改容器的nbt

使用/replaceitem或/item填充:
replaceitem命令的格式为:
1.8~1.12:
replaceitem block <x> <y> <z> <栏位> <物品名> [数量] [数据] [数据标签]
1.13~1.16:
replaceitem block <x> <y> <z> <栏位> <物品> [数量]
/item语法稍复杂,这里就不详细介绍了,有兴趣可以参考wiki
对于箱子来说,栏位表示方法为 container.数字 ,其中数字从第一行第一格开始为0,第三行最后一个为26共27个可选值
示例:
在当前位置的箱子的第一格放置一个钻石剑
  1. replaceitem block ~ ~ ~ container.0 diamond_sword
复制代码
在1.17后,命令为
  1. item block ~ ~ ~ container.0 replace diamond_sword
复制代码
不足是一条命令只能编辑其中一个格子的物品。如果需要编辑多个物品,则需要多次执行

使用/blockdata或/data填充:
blockdata格式为
/blockdata <x> <y> <z> <数据标签>
data格式为(仅列举可能用到的语法)
/data merge block <x> <y> <z> <数据标签>
/data modify block <x> <y> <z> <NBT路径> ... (1.14+)
其中第二个子命令较多,功能强大但语法也比较复杂,此处不展开讨论,有兴趣可以参考wiki
填充方法为通过命令编辑箱子的Item标签即可改变其中的物品。但需注意这种方式可能会影响箱子内原本拥有的物品
示例:将箱子的第一格与最后一格放满钻石
1.8~1.12
  1. /blockdata ~ ~ ~ {Items:[{id:"minecraft:diamond",Slot:0b,Count:64b},{id:"minecraft:diamond",Slot:26b,Count:64b}]}
复制代码
1.13+
  1. /data merge block ~ ~ ~ {Items:[{id:"minecraft:diamond",Slot:0b,Count:64b},{id:"minecraft:diamond",Slot:26b,Count:64b}]}
复制代码
1.14+
  1. /data modify block ~ ~ ~ Items set value [{id:"minecraft:diamond",Slot:0b,Count:64b},{id:"minecraft:diamond",Slot:26b,Count:64b}]
复制代码

以上命令均会在第一格与最后一格放置一组钻石,但会把原有物品清空。使用/data modify ... append可解决这个问题。不过此处不再做详细说明了

至于到底用哪个,如果你要放置的物品是一个固定的物品,就用/replaceitem一个个放,如果要动态填充,或者要填充的物品比较多的话,就用/data。如果你是想放满整整一个箱子的话,建议用/data,就是需要一个个敲 Slot 比较麻烦

魅-内存君
Chelover_C60 发表于 2021-3-26 21:29
日常不说版本


一般来说使用/replaceitem(1.8~1.16)或/item(1.17+)用于定向放置物品比较方便,当然 ...

没有任何作用

Chelover_C60
本帖最后由 Chelover_C60 于 2021-3-27 11:54 编辑

能提供一下你用的命令,以及你的版本吗?如果可以的话最好附上反馈信息
我这里都是测试过的

魅-内存君
Chelover_C60 发表于 2021-3-27 11:53
能提供一下你用的命令,以及你的版本吗?如果可以的话最好附上反馈信息
我这里都是测试过的 ...

给你最佳吧,这个回答有一点参考意义,目前已经用其他方法替代了