有过开服经验的腐竹可能知道ChestCommand这款插件,它的主要功能就是可以打开gui让玩家选择
然后我今天做的是cb版ChestCommand
————————————————————————————————

首先做一个这样的平台,上面的箱子是陷阱箱

然后去别的地方弄一个陷阱箱,里面装上你所想要的物品,就像这样:

然后回到刚才的那个平台,在左边那个命令方块上输入/blockdata <x> <y> <z>(都是你的箱子的坐标) {Lock:"这里随便填就行了"},就像这样

另外一边摆上复制你菜单的指令(应该不用教了把)
接下来是如何让你做的功能运作起来:

这是lz精简了以后的一个单片模块,首先我们来看检测模块:

就是下面这个东西↑

里面放上这个命令:/testforblock <x> <y> <z>(都是你的箱子的坐标) minecraft:trapped_chest <箱子朝向> {Items:[{Slot:<你放东西的格子>b}]}
解释一下这条命令(cb大佬可以直接无视):
————————————
/testforblock就是检测方块数据
xyz不用说了吧
箱子朝向可以用testforblock慢慢试,在2-5的范围内
Nbt中,{Slot:<你放东西的格子>b}是用来检测那个格子是否有物品
上面的比较器和火把是用来反转信号的
所以这个模块的用处就是检测到你所指定格子中没有东西(既东西被玩家拿起)就发出信号(2tick延迟)
——————————————
然后在看到上面部分,也就是触发指令部分,先编个号

5号cb中的指令是复制菜单的模板到用户打开的箱子中(用/clone),也起到了强制用户关闭箱子GUI的效果
4号cb中装的是你想执行的指令
实现ChestCommand的功能到此就结束了,但是mc还有一个特性就是鼠标原来点的东西会弹出来,十分不美观,
而且还能刷物品,于是便有了123号cb
中间是一个比较器(必须要有,因为某些原因箱子里的物品跳出来比cb慢,所以不能用条件限制的cb)
3号cb的主要用途是重置4号cb的输出,使4号cb不在发出信号,以应对下次的使用

3号cb里的指令是这样的:/blockdata (4号cb的坐标) {SuccessCount:0},注意,这个cb朝向不能朝着1,2号cb
解释一下(cb大佬请继续无视):SuccessCount是cb给比较器发送信号的原因,当它≥1时,就会发出信号
然后再看12号cb,他们的作用就是干掉跳出来的物品

2号cb的指令是这样的/scoreboard players tag @e[type=item] add kill {Item:{tag:{<你物品的nbt>}}}
我这里的nbt是display:{Name:"<你物品的名称>"}},也就是识别物品名称
(更多的数据标签在mcwiki中有详细的树形图,有兴趣可以去看一看)
这条指令的意思是给所有物品实体中带有你的所需nbt的物品加上kill(叫啥随意,但下面的必须一致)的tag

最后在1号cb中放上/kill @e[tag=kill]
这条指令的意思是杀死所有有kill(必须和上面一致)的tag的实体
至此,单个ChestCommand的模块就做好了,如果想要更多功能,加模块就行了
————————————————————————————————————
感谢:某服务器的空岛战争的菜单给我带来的灵感
除mcbbs外,禁止转载
————————————————————————————————————
什么,你还看不懂,给你个存档你总能看懂了吧
然后我今天做的是cb版ChestCommand
————————————————————————————————

首先做一个这样的平台,上面的箱子是陷阱箱

然后去别的地方弄一个陷阱箱,里面装上你所想要的物品,就像这样:

然后回到刚才的那个平台,在左边那个命令方块上输入/blockdata <x> <y> <z>(都是你的箱子的坐标) {Lock:"这里随便填就行了"},就像这样

另外一边摆上复制你菜单的指令(应该不用教了把)
接下来是如何让你做的功能运作起来:

这是lz精简了以后的一个单片模块,首先我们来看检测模块:

就是下面这个东西↑

里面放上这个命令:/testforblock <x> <y> <z>(都是你的箱子的坐标) minecraft:trapped_chest <箱子朝向> {Items:[{Slot:<你放东西的格子>b}]}
解释一下这条命令(cb大佬可以直接无视):
————————————
/testforblock就是检测方块数据
xyz不用说了吧
箱子朝向可以用testforblock慢慢试,在2-5的范围内
Nbt中,{Slot:<你放东西的格子>b}是用来检测那个格子是否有物品
上面的比较器和火把是用来反转信号的
所以这个模块的用处就是检测到你所指定格子中没有东西(既东西被玩家拿起)就发出信号(2tick延迟)
——————————————
然后在看到上面部分,也就是触发指令部分,先编个号

5号cb中的指令是复制菜单的模板到用户打开的箱子中(用/clone),也起到了强制用户关闭箱子GUI的效果
4号cb中装的是你想执行的指令
实现ChestCommand的功能到此就结束了,但是mc还有一个特性就是鼠标原来点的东西会弹出来,十分不美观,
而且还能刷物品,于是便有了123号cb
中间是一个比较器(必须要有,因为某些原因箱子里的物品跳出来比cb慢,所以不能用条件限制的cb)
3号cb的主要用途是重置4号cb的输出,使4号cb不在发出信号,以应对下次的使用

3号cb里的指令是这样的:/blockdata (4号cb的坐标) {SuccessCount:0},注意,这个cb朝向不能朝着1,2号cb
解释一下(cb大佬请继续无视):SuccessCount是cb给比较器发送信号的原因,当它≥1时,就会发出信号
然后再看12号cb,他们的作用就是干掉跳出来的物品

2号cb的指令是这样的/scoreboard players tag @e[type=item] add kill {Item:{tag:{<你物品的nbt>}}}
我这里的nbt是display:{Name:"<你物品的名称>"}},也就是识别物品名称
(更多的数据标签在mcwiki中有详细的树形图,有兴趣可以去看一看)
这条指令的意思是给所有物品实体中带有你的所需nbt的物品加上kill(叫啥随意,但下面的必须一致)的tag

最后在1号cb中放上/kill @e[tag=kill]
这条指令的意思是杀死所有有kill(必须和上面一致)的tag的实体
至此,单个ChestCommand的模块就做好了,如果想要更多功能,加模块就行了
————————————————————————————————————
感谢:某服务器的空岛战争的菜单给我带来的灵感
除mcbbs外,禁止转载
————————————————————————————————————
什么,你还看不懂,给你个存档你总能看懂了吧
ChestCommand.rar
大小:90.26KB下载:3次转存:0次