ruhuasiyu
很简单的一个东西,主要利用testforblock容器的Items,可以只检测槽位是否为空,而不检测是什么物品。
  1. testforblock -7 59 7 minecraft:dropper 2 {Items:[{Slot:1b}]}
复制代码


例子:在投掷器中使用八个钻石来有序合成钻石胸甲。




左上命令(循环、开启):检测除slot1以外的槽位是不是放有一个钻石
  1. testforblock -7 59 7 minecraft:dropper 2 {Items:[{Slot:0b,id:minecraft:diamond,Count:1b},
  2. {Slot:2b,id:minecraft:diamond,Count:1b},
  3. {Slot:3b,id:minecraft:diamond,Count:1b},
  4. {Slot:4b,id:minecraft:diamond,Count:1b},
  5. {Slot:5b,id:minecraft:diamond,Count:1b},
  6. {Slot:6b,id:minecraft:diamond,Count:1b},
  7. {Slot:7b,id:minecraft:diamond,Count:1b},
  8. {Slot:8b,id:minecraft:diamond,Count:1b}
  9. ]}
复制代码
左下命令(循环、开启):检测slot1是否有物品
  1. testforblock -7 59 7 minecraft:dropper 2 {Items:[{Slot:1b}]}
复制代码
右下黄色命令方块(脉冲)下方有一个红石火把,命令为
  1. give @p diamond_chestplate
复制代码
绿色(连锁、条件、开启)为
  1. setblock -7 59 7 minecraft:dropper 2
复制代码
这样当且仅当Slot1为空且其他Slot各放有一个钻石时,给予玩家一个钻石胸甲并清空投掷器。



这样是无法合成的。


这样才可以合成。










Ant繁星飞跃
大触啊 表示我还是没看懂= =

爱心魔王FHC
本帖最后由 FHC红石 于 2016-10-5 14:51 编辑

有些版本不能用……反正我是没用的
或者和游戏语言有关?

ruhuasiyu
FHC红石 发表于 2016-10-5 14:40
有些版本不能用……反正我是没用的

很奇怪啊,你版本多少?反正我在1.10和1.11试了可以。

榎月廿三
能不能再简短一点指令,这样更利于游戏更新和FPS

ruhuasiyu
V_L-CC 发表于 2016-10-5 15:32
能不能再简短一点指令,这样更利于游戏更新和FPS

电路可能还可以再缩小或者优化一点,但我觉得至少4条命令少不掉的,一条检测空槽,一条检测其他物品,一条给物品,一条清物品。即使强行变成一条我觉得也不能优化FPS。

爱心魔王FHC
ruhuasiyu 发表于 2016-10-5 14:51
很奇怪啊,你版本多少?反正我在1.10和1.11试了可以。


箱子是空的
  1. testforblock ~ ~1 ~ minecraft:chest 4 {Items:[{Slot:1b}]}
复制代码

ruhuasiyu

你在slot1放个物品看看

箱子是空的肯定没信号啊

爱心魔王FHC
ruhuasiyu 发表于 2016-10-5 16:04
你在slot1放个物品看看

箱子是空的肯定没信号啊

我的错,我以为你是直接检测这个位置是空的……= =

112512514
不是很懂  但很厉害就对了

hqqaazz
ruhuasiyu 发表于 2016-10-5 15:56
电路可能还可以再缩小或者优化一点,但我觉得至少4条命令少不掉的,一条检测空槽,一条检测其他物品,一 ...

不可以blockdata么?检测空槽,检测其他物品,blockdata

ruhuasiyu
hqqaazz 发表于 2016-10-5 17:31
不可以blockdata么?检测空槽,检测其他物品,blockdata

blockdata是修改方块的nbt而不是检测

hqqaazz
ruhuasiyu 发表于 2016-10-5 17:46
blockdata是修改方块的nbt而不是检测

我说输出啊,你give然后清除,不觉得麻烦和不真实么

机器人WBW
嗯如果我没记错的话用testforblocks实际上会简单些
不过这里看来主要是讲“如何检测空槽位”,估计会有更多的用途

fs200
可以testforblocks啊
检测两个容器是否相同最后输出就可以了
可以试试
会简单很多

ruhuasiyu
林扬骐 发表于 2016-10-5 23:16
嗯如果我没记错的话用testforblocks实际上会简单些
不过这里看来主要是讲“如何检测空槽位”,估计会有更多 ...

我了解你的意思,当然也可以。但这个办法不适用检测背包。