怎么检测玩家背包里是否携带钻石镐
如果有,将指定坐标替换成指定方块
如果有,将指定坐标替换成指定方块
探测玩家背包物品的方法
教大家如何在MC1.8里探测玩家背包的物品。
有2个做法:一个是用/clear,另一个是用/testfor。用testfor做更加高级,不过1.8更新后/clear也可以探测NBT什么,所以2个方法都可以。这个东西可以放在冒险地图里面。
首先是clear。自从1.8更新后,clear的格式改变了。现在可以自定义清空数量和物品NBT了。现在的指令格式:
/clear <玩家> <物品> [数据] [数量] [dataTag]
/clear我就不详细多说了,这条指令在很早就有了,不过以前一直没法清空自定义数量,自定义NBT等。给大家举个例子:如果要清空玩家背包里的一个叫“Test”的石剑:
那么指令就是:
clear @a minecraft:stone_sword 0 1 {display:{Name:"Test"}}
大家看见,指令里的1就是数量,后面的{display:{Name:"Test"}}意思就是石剑的NBT,也就是拥有自定义名字为“Test”的石剑。所以,当大家按下按钮后,如果背包里没有叫Test的石剑,那就是指令无效,不会给出输出。有的话就会情空掉一个石剑,然后给出输出。如果是要单纯物品探测的话,那请自行把数量改成0,然后后面用比较器进行输出。/clear比较基础我就不多深入讲解了。
之后就是/testfor指令了。1.8又更新了点NBT,让/testfor更强大了。用testfor的好处就是可以自定义物品栏等等,还可以探测玩家已经选中的物品栏。指令:
/testfor @p {Inventory:[{Slot:0b,id:minecraft:stone_sword,Damage:0s,Count:1b,tag:{display:{Name:"Test"}}}]}
大家看见,这条指令还是探测刚才的一个叫“Test”的石剑。不过这次更加高级。NBT讲解:
Inventory:探测玩家仓库背包。/testfor用的,如果要探测玩家背包一定要加入这个NBT。
Slot:玩家物品的槽位。这行可选可不选。帖子下面会详细讲解槽位,单位是b。(数字后面一定要打b,比如:1b,0b等等)
id:探测目标物品的id。本人这里打的是minecraft:stone_sword,也就是石剑的ID。大家自行修改。
Damage:数据。这行默认为0,数据用来分辨多个相同物品。比如:多彩色的羊毛。单位是s,一定要加。
Count:数量。单位是b,一定要加入。这个好像只对可叠加物品起效,比如有5个叠加的羊毛,就可以探测得到。5把石剑的话,如果不是叠加在一起,那就无发探测,导致输出失败。
tag:这个我就不多说了,基础的NBT链接NBT。这个很多指令都可以用:summon,setblock等等。后面括号里的就是另外的NBT,控制石剑本身,而不和/testfor搞混。
(本教程不会加入探测玩家选中槽位教程。上次已经发过一个了(SelectedItemSlot),有兴趣的点击这里查看)
之后来说下背包槽位。大家知道,当打开背包后有很多很多槽位可以放物品。而/testfor探测背包有一项是可以探测玩家放入物品的槽位的。这个最大的用处就是可以探测玩家穿着什么装备什么。槽位的控制图:
大家看见,0就是玩家选中的第一个槽位。之后100就是鞋子,101就是裤子,到103就是头盔。合成物品的是80,81,82和83。其他就不多说了,大家可以自己研究。玩家选中的槽位就是0-8。
Slot讲解。大家看见指令里的是0b,也就是玩家第一个手拿的物品。(详情看玩家背包槽位分布图)。所以,Slot后面填写的就是0b-8b,这个探测不一定要是玩家选中了这个槽位,而是只要这个槽位里有达到要求的物品就可以了。配合SelectedItemSlot的话可以达到更好的效果。
教大家如何在MC1.8里探测玩家背包的物品。
有2个做法:一个是用/clear,另一个是用/testfor。用testfor做更加高级,不过1.8更新后/clear也可以探测NBT什么,所以2个方法都可以。这个东西可以放在冒险地图里面。
首先是clear。自从1.8更新后,clear的格式改变了。现在可以自定义清空数量和物品NBT了。现在的指令格式:
/clear <玩家> <物品> [数据] [数量] [dataTag]
/clear我就不详细多说了,这条指令在很早就有了,不过以前一直没法清空自定义数量,自定义NBT等。给大家举个例子:如果要清空玩家背包里的一个叫“Test”的石剑:
那么指令就是:
clear @a minecraft:stone_sword 0 1 {display:{Name:"Test"}}
大家看见,指令里的1就是数量,后面的{display:{Name:"Test"}}意思就是石剑的NBT,也就是拥有自定义名字为“Test”的石剑。所以,当大家按下按钮后,如果背包里没有叫Test的石剑,那就是指令无效,不会给出输出。有的话就会情空掉一个石剑,然后给出输出。如果是要单纯物品探测的话,那请自行把数量改成0,然后后面用比较器进行输出。/clear比较基础我就不多深入讲解了。
之后就是/testfor指令了。1.8又更新了点NBT,让/testfor更强大了。用testfor的好处就是可以自定义物品栏等等,还可以探测玩家已经选中的物品栏。指令:
/testfor @p {Inventory:[{Slot:0b,id:minecraft:stone_sword,Damage:0s,Count:1b,tag:{display:{Name:"Test"}}}]}
大家看见,这条指令还是探测刚才的一个叫“Test”的石剑。不过这次更加高级。NBT讲解:
Inventory:探测玩家仓库背包。/testfor用的,如果要探测玩家背包一定要加入这个NBT。
Slot:玩家物品的槽位。这行可选可不选。帖子下面会详细讲解槽位,单位是b。(数字后面一定要打b,比如:1b,0b等等)
id:探测目标物品的id。本人这里打的是minecraft:stone_sword,也就是石剑的ID。大家自行修改。
Damage:数据。这行默认为0,数据用来分辨多个相同物品。比如:多彩色的羊毛。单位是s,一定要加。
Count:数量。单位是b,一定要加入。这个好像只对可叠加物品起效,比如有5个叠加的羊毛,就可以探测得到。5把石剑的话,如果不是叠加在一起,那就无发探测,导致输出失败。
tag:这个我就不多说了,基础的NBT链接NBT。这个很多指令都可以用:summon,setblock等等。后面括号里的就是另外的NBT,控制石剑本身,而不和/testfor搞混。
(本教程不会加入探测玩家选中槽位教程。上次已经发过一个了(SelectedItemSlot),有兴趣的点击这里查看)
之后来说下背包槽位。大家知道,当打开背包后有很多很多槽位可以放物品。而/testfor探测背包有一项是可以探测玩家放入物品的槽位的。这个最大的用处就是可以探测玩家穿着什么装备什么。槽位的控制图:
大家看见,0就是玩家选中的第一个槽位。之后100就是鞋子,101就是裤子,到103就是头盔。合成物品的是80,81,82和83。其他就不多说了,大家可以自己研究。玩家选中的槽位就是0-8。
Slot讲解。大家看见指令里的是0b,也就是玩家第一个手拿的物品。(详情看玩家背包槽位分布图)。所以,Slot后面填写的就是0b-8b,这个探测不一定要是玩家选中了这个槽位,而是只要这个槽位里有达到要求的物品就可以了。配合SelectedItemSlot的话可以达到更好的效果。
希望能帮助你
苦力怕-555 发表于 2015-10-23 17:57
希望能帮助你
能不能给一下准确的指令。。。。。。
原子弹1号 发表于 2015-10-23 18:00
能不能给一下准确的指令。。。。。。
翻一下我发的
原子弹1号 发表于 2015-10-23 18:00
能不能给一下准确的指令。。。。。。
首先要问一下你是打算单人游戏使用还是多人游戏使用。。
原子弹1号 发表于 2015-10-23 18:07
单人啊。。。。。。
行
那就
/testfor @p {Inventory:[{Slot:0b,id:minecraft:钻石_镐,Damage:0s,Count:1b}}]}
后面接比较器,连着高频发生器
高频连着
/execute @p ~ ~ ~ setblock ~ ~-1 ~ 你要放置的方块
dust_of_heart 发表于 2015-10-23 18:18
行
那就
/testfor @p {Inventory:[{Slot:0b,id:minecraft:钻石_镐,Damage:0s,Count:1b}}]}
直接setblock即可
dust_of_heart 发表于 2015-10-23 18:18
行
那就
/testfor @p {Inventory:[{Slot:0b,id:minecraft:钻石_镐,Damage:0s,Count:1b}}]}
麻烦开一下游戏截张图演示一下怎么做
FHC红石 发表于 2015-10-23 18:22
直接setblock即可
那麻烦一下喽。。。。。
dust_of_heart 发表于 2015-10-23 18:18
行
那就
/testfor @p {Inventory:[{Slot:0b,id:minecraft:钻石_镐,Damage:0s,Count:1b}}]}
等下,,,,
我要的是在指定坐标内放置方块
不是在玩家脚下放。。。。。。。。
1、教程贴:http://www.mcbbs.net/thread-244552-1-1.html
和那个沙发其实是差不多的,但有图
脉冲→ 命令方块1 比较器→ 命令方块2
1:这个是探测玩家手拿物品的:
/testfor @a {SelectedItem:{id:minecraft:物品名称, Damage:数据值/损伤值,Count:数量}}
如果说,你要探测背包有没有钻石镐,只能穷举
或者用clear指令清除玩家背包里的钻石剑,如果清除成功则有比较器输出,重新give玩家一个钻石剑
2:setbloc指令不必多说
→是朝向
和那个沙发其实是差不多的,但有图
脉冲→ 命令方块1 比较器→ 命令方块2
1:这个是探测玩家手拿物品的:
/testfor @a {SelectedItem:{id:minecraft:物品名称, Damage:数据值/损伤值,Count:数量}}
如果说,你要探测背包有没有钻石镐,只能穷举
或者用clear指令清除玩家背包里的钻石剑,如果清除成功则有比较器输出,重新give玩家一个钻石剑
2:setbloc指令不必多说
→是朝向
FHC红石 发表于 2015-10-23 18:32
1、教程贴:http://www.mcbbs.net/thread-244552-1-1.html
和那个沙发其实是差不多的,但有图
脉冲→ 命令 ...
再问一下。
如果探测到了玩家背包里拥有钻石镐
是不是命令方块2里打上setblock指令就行了。。。。
不过高频会无限替换方块吗?
我可不想挖完一个又在原地替换一个
(话说比较器咋用来着?)
原子弹1号 发表于 2015-10-23 18:44
再问一下。
如果探测到了玩家背包里拥有钻石镐
是不是命令方块2里打上setblock指令就行了。。。。
命令方块 比较器
命令方块执行成功,比较器就持续输出直到命令方块执行指令失败
FHC红石 发表于 2015-10-23 18:32
1、教程贴:http://www.mcbbs.net/thread-244552-1-1.html
和那个沙发其实是差不多的,但有图
脉冲→ 命令 ...
直接清除0个岂不美哉。。
FHC红石 发表于 2015-10-23 18:47
命令方块 比较器
命令方块执行成功,比较器就持续输出直到命令方块执行指令失败 ...
但是一切换成钻石镐,就会重新放置一个方块
这个怎么办???????、、
原子弹1号 发表于 2015-10-23 19:18
但是一切换成钻石镐,就会重新放置一个方块
这个怎么办???????、、 ...
加一个锁存器。
原子弹1号 发表于 2015-10-23 19:18
但是一切换成钻石镐,就会重新放置一个方块
这个怎么办???????、、 ...
你你就这样吧:
命令方块 比较器 活塞 红石块 命令方块
比较器有输出够,活塞会吧红石块推到麻烦立刻旁边激活命令方块
但是即使比较器再次输出也无法再次激活命令方块
原子弹1号 发表于 2015-10-23 19:18
但是一切换成钻石镐,就会重新放置一个方块
这个怎么办???????、、 ...
或者说检测到背包里有挖到的那个东西就清除钻石镐
或者加一个计分板,检测到使用钻石镐的次数,当次数大于0的就不检测
/testfor @p[score_那个计分板=0,score_那个计分板_min=0] {Inventory:[{Slot:0b,id:minecraft:钻石_镐,Damage:0s,Count:1b}}]}
FHC红石 发表于 2015-10-23 19:23
你你就这样吧:
命令方块 比较器 活塞 红石块 命令方块
比较器有输出够,活塞会吧红石块推到麻烦 ...
OK,成功了
待会最佳是你的。。
顺便发图一张

FHC红石 发表于 2015-10-23 19:23
你你就这样吧:
命令方块 比较器 活塞 红石块 命令方块
比较器有输出够,活塞会吧红石块推到麻烦 ...
但是活塞复位不易。。
还有后面如果有类似这样的西也方便