stevezhang_1201
这种箱子商店的功能需要这样:
在箱子内放入物品后自动出现兑换的物品
望各位大佬解决!

尸先peng
穷举,用execute检测箱子内物品,如果有目标物品就setblock一个装有指定物品的箱子替换该箱子

jason_sun
穷举,有多少种情况就弄多少个箱子,或用execute if data检测nbt,检测后更改箱子的nbt或用clone替换箱子

钠钠钠镓
首先需要使用视线追踪,定位“被定义为商店的箱子” [CBL|K_bai]解决你的一切射线追踪烦恼!
然后可以使用盔甲架或药水云一类实体定位该箱子,基于该盔甲架/药水云执行指令
使用execute if data block……判断箱内是否有交易物品,然后使用data修改id达成输出物品
示例:将箱内铁矿石替换为铁锭
  1. execute as @e[type=minecraft:armor_stand] at @s if data block ~ ~ ~ Items[{id:"minecraft:iron_ore"}] run data modify block ~ ~ ~ Items[{id:"minecraft:iron_ore"}].id set value "minecraft:iron_ingot"
复制代码
如果需要同时修改数量、NBT,增加连接条件限制的连锁型命令方块即可。需要注意逻辑顺序,修改id的命令方块需要放置在连锁末端。
如果需要检测虚拟货币(记分板分数),在exe链中增加“if entity @a[distance=..,scores={}]”即可
如果需要检测实体货币,在exe链中增加一条“if data block ~ ~ ~ Items[{id:"..."}]”即可
如果需要检测固定槽位、数量、特殊NBT,修改为“Items[{id:"...",Count:...,Slot:...,tag:{...}}]”即可

Xbby
首先放置一个空箱子,表示玩家购买放置货币的箱子,记为a 放置另一个箱子,放入购买物品所需的货币数量,如购买某物品价格为1组钻石,就放入1组钻石,这个箱子记为b 还要放置一个箱子,里面放目标货物,比如一把剑,这个箱子记为c 准备就绪后,放置1个脉冲命令方块,写入命令: testforblocks a箱坐标 a箱坐标(要输入2次的) b箱坐标 在这个脉冲命令方块后放置1个连锁命令方块(!!!开条件制约!!!),写入命令 playsound random.levelup @p(这是为了播放音效,可以省略但不建议省略) 在连锁命令方块后再放置一个连锁命令方块开条件制约!!! clone c箱坐标 c箱坐标(还是要输入2次) a箱坐标 请注意3个命令方块的指向一定要对应!!! 望采纳

stevezhang_1201
尸先peng 发表于 2021-3-10 20:13
穷举,用execute检测箱子内物品,如果有目标物品就setblock一个装有指定物品的箱子替换该箱子 ...

能否说的详细一些,比如列出模板样例之类的,因为我对execute的认识只在基岩版,nbt也只会村民交易和父母装备。。。

stevezhang_1201
Xbby 发表于 2021-3-11 09:00
首先放置一个空箱子,表示玩家购买放置货币的箱子,记为a 放置另一个箱子,放入购买物品所需的货币数量, ...

这个应该是针对基岩版的,1.13命令改版后好像把testfor命令删了,不过还是谢谢你

Xbby
stevezhang_1201 发表于 2021-3-11 16:59
这个应该是针对基岩版的,1.13命令改版后好像把testfor命令删了,不过还是谢谢你 ...

抱歉啊 没能帮到你!!!

stevezhang_1201
底层咸鱼 发表于 2021-3-13 21:53
[VCS|Ar][v1.1]原版箱子菜单前置
https://www.mcbbs.net/thread-1022697-1-1.html

这个是1.15.X版本的

吹风机客户
穷举这个箱子的nbt  假设第一格空了 别的格子物品还在 代表着有玩家使用了第一格的东西 执行后**令

第一页 上一页 下一页 最后一页