Minecraft(我的世界)中文论坛

标题: 【1.7指令方块教程】自定义“合成”配方-实现原版生怪蛋、海绵合成

作者: songfeitong    时间: 2014-1-9 20:38
标题: 【1.7指令方块教程】自定义“合成”配方-实现原版生怪蛋、海绵合成
本帖最后由 songfeitong 于 2014-4-9 21:48 编辑

前言
大家好,今天给大家带来的是一个可以自定义合成的东东,其实这个东西我之前是有灵感的,但因不会testforblock所以搁置了,今天看了Dragnoz的视频顿时有了灵感啊、其实这个没有你们想象的那么神奇,只是一个含有NBT标签的testforblock和setblock而已啦~



展示

1.合成僵尸生怪蛋
啦啦啦,今天弄到几个僵尸头,可以合成僵尸蛋了!

众:呵呵你是在作死吗,不仅就没有这个配方,还放到发射器里了。


之后,突然被强制退出发射器的界面,可以看到它被岩浆取代了。


不到半秒钟后,发射器又回来了。


嗯打开,可以看到僵尸刷怪蛋就合成好了。


众惊呼:这不科学!



原理
这台机器原理很简单,就是一个命令方块连着高频脉冲使用testforblock指令检测指定位置上的发射器是否装有指定物品,并且规定一定数量和正确的排列顺序。命令方块代码如下:
  1. testforblock 458 86 -366 dispenser 3 {Items:[0:{Slot:0b,id:397s,Damage:2s,Count:1b},{Slot:1b,id:397s,Damage:2s,Count:1b},{Slot:2b,id:397s,Damage:2s,Count:1b},{Slot:3b,id:397s,Damage:2s,Count:1b},{Slot:4b,id:344s,Damage:0s,Count:1b},{Slot:5b,id:397s,Damage:2s,Count:1b},{Slot:6b,id:397s,Damage:2s,Count:1b},{Slot:7b,id:397s,Damage:2s,Count:1b},{Slot:8b,id:397s,Damage:2s,Count:1b}]}
复制代码
之后当玩家放入要“合成”的配方后,命令方块输出信号,用岩浆替换发射器,因为在破坏容器时物品会掉落,所以岩浆是用来清除掉落出的物品的。之后发射器界面会被强制关闭。
  1. setblock 458 86 -366 lava
复制代码
最后1tick后,执行命令生成新的发射器并装载着合成完的物品。
  1. /setblock 458 86 -366 dispenser 3 replace {Items:[{id:383,Count:1,Slot:0,Damage:54}]}
复制代码
最后合成的流程就完成了。



应用
本机器应用真的十分广泛,如在RPG地图里可以让玩家找齐几种自定义的物品,然后合成一件道具,这些物品都可以拥有NBT标签。或者也能用在箱子上,给箱子中放指定物品就会触发机关。或者甚至可以当做密码锁,比如箱子里放7块不同颜色的羊毛,只有找到密码正确排列顺序才能解锁。



教程
总而言之,要制作这个还是需要用到Mcedit的(当然如果你是命令方块大神可以自己写代码)。这次用到的是一个把容器转换为命令方块的滤器,因为testforblock与setblock的格式十分接近,所以我们只需在setblock命令的基础上对命令进行改造就可以了。
滤器:TileEntityToCommand TileEntityToCommand.zip (1.58 KB, 下载次数: 439)



首先,放置一个发射器。


里面装有你希望的合成配方,这个是命令方块。


然后退出游戏换Mcedit。
进入Mcedit后,先选中发射器。



然后选择滤器,找到TileEntityToCommand 。


第一行是选择生成命令方块还是命令矿车。先说X、Y、Z,代表这个命令方块生成的发射器的坐标在哪里。如果Coordinates are Relative to Command Block选了话就是他的相对坐标(命令就是~x ~y ~z),不选就是正常坐标(x,y,z),这里我没有勾选。最后一个嘛,就不要在意了。


然后点Filter,发射器就变成了命令方块,然后保存后进入游戏,把代码粘出。




以下是代码改编时间
此操作全部在Word或记事本中完成!
现在这个是原来的命令:
setblock 305.5 58.0 -1809.2 23 5 replace {Items:[{id:265s,Damage:0s,Count:1b,Slot:0b},{id:331s,Damage:0s,Count:1b,Slot:1b},{id:265s,Damage:0s,Count:1b,Slot:2b},{id:331s,Damage:0s,Count:1b,Slot:3b},{id:399s,Damage:0s,Count:1b,Slot:4b},{id:331s,Damage:0s,Count:1b,Slot:5b},{id:265s,Damage:0s,Count:1b,Slot:6b},{id:331s,Damage:0s,Count:1b,Slot:7b},{id:265s,Damage:0s,Count:1b,Slot:8b}],id:"Trap"}
第一步先把setblock改成testforblock,把replace删去。然后如下:


testforblock 305.5 58.0 -1809.2 23 5 {Items:[{id:265s,Damage:0s,Count:1b,Slot:0b},{id:331s,Damage:0s,Count:1b,Slot:1b},{id:265s,Damage:0s,Count:1b,Slot:2b},{id:331s,Damage:0s,Count:1b,Slot:3b},{id:399s,Damage:0s,Count:1b,Slot:4b},{id:331s,Damage:0s,Count:1b,Slot:5b},{id:265s,Damage:0s,Count:1b,Slot:6b},{id:331s,Damage:0s,Count:1b,Slot:7b},{id:265s,Damage:0s,Count:1b,Slot:8b}],id:"Trap"}
第二步,把,id:"Trap"注意连带之前的逗号都删掉,最终如下:


testforblock 305.5 58.0 -1809.2 23 5 {Items:[{id:265s,Damage:0s,Count:1b,Slot:0b},{id:331s,Damage:0s,Count:1b,Slot:1b},{id:265s,Damage:0s,Count:1b,Slot:2b},{id:331s,Damage:0s,Count:1b,Slot:3b},{id:399s,Damage:0s,Count:1b,Slot:4b},{id:331s,Damage:0s,Count:1b,Slot:5b},{id:265s,Damage:0s,Count:1b,Slot:6b},{id:331s,Damage:0s,Count:1b,Slot:7b},{id:265s,Damage:0s,Count:1b,Slot:8b}]}


然后把它粘回到命令方块里就行了




之后进入游戏,把命令方块移到别的地方,在原来的位置放一个发射器,装好预定的物品。


之后可以在命令方块后面放比较器在输入信号检测一下。


这里没有输出信号,让我们打开命令方块看一下,说是预定值为5,现在却为2。预定值指的就是加下划线的。


testforblock 305.5 58.0 -1809.2 23 5 {Items:[{id:265s,Damage:0s,Count:1b,Slot:0b},{id:331s,Damage:0s,Count:1b,Slot:1b},{id:265s,Damage:0s,Count:1b,Slot:2b},{id:331s,Damage:0s,Count:1b,Slot:3b},{id:399s,Damage:0s,Count:1b,Slot:4b},{id:331s,Damage:0s,Count:1b,Slot:5b},{id:265s,Damage:0s,Count:1b,Slot:6b},{id:331s,Damage:0s,Count:1b,Slot:7b},{id:265s,Damage:0s,Count:1b,Slot:8b}]}

这个值代表了他的基本数据,如朝向。我们把它改成2就行了。
之后再拉下拉杆,就输出信号了。


然后给命令方块连上脉冲。



比较器后面的指令就是把发射器替换成岩浆。
  1. setblock 305.5 58.0 -1809.2 11
复制代码
然后后面放一个中继器,接上命令方块。红的是用来放置岩浆的。绿的嘛……


绿的里面的命令又需要用到Mcedit,这里就不上图了,就是把发射器里面放上最终合成后的物品,然后用上方的滤器如法炮制,得到一个命令方块,把命令复制进去,不用任何修改。
  1. setblock 305.5 58.0 -1809.2 23 2 replace {Items:[{id:137s,Damage:0s,Count:1b,Slot:0b}],id:"Trap"}
复制代码




现在制作流程就结束了,我们试验一下。
放入物品:


然后放置了岩浆,强制退出。打开以后,就是一个命令方块了。




虽然我知道你们很多人可能都看不懂或不能理解这篇教程,但毕竟这很有用,请支持一下初一党吧,马上期末考试了还在发帖别的都不求了,只求你们点一下顶!







作者: 我的世界sun123    时间: 2014-1-9 20:42
教程很详细,不错哦~~~
作者: 丿破晓丶晨曦    时间: 2014-1-9 20:51
教程高深 详细 奇葩 但是……看不懂QAQ
会顶的
作者: cyqsimon    时间: 2014-1-9 20:55
本帖最后由 cyqsimon 于 2014-1-9 20:55 编辑

看到第一段代码就懂了......创意不错,可惜五边形材质差评,个人真心不喜欢......
作者: songfeitong    时间: 2014-1-9 20:56
cyqsimon 发表于 2014-1-9 20:55
看到第一段代码就懂了......创意不错,可惜五边形材质差评,个人真心不喜欢......

赶脚材质包不好看好像没人看呀
作者: 409029528    时间: 2014-1-9 20:56
只是1.7.2??
作者: songfeitong    时间: 2014-1-9 20:59
409029528 发表于 2014-1-9 20:56
只是1.7.2??

没错,因为要用testforblock
作者: zjx1895    时间: 2014-1-9 21:31
赞一个![redstone_torch]
作者: mcfans2001    时间: 2014-1-12 14:33
多写点,版主可以给精
作者: qaz3770887    时间: 2014-1-13 18:21
謝謝大大無私分享
作者: 冷╭☆╯少    时间: 2014-2-7 14:16
很棒的作品!
作者: wjwrh    时间: 2014-2-12 21:53
TileEntityToCommand插件能附在下面么
作者: songfeitong    时间: 2014-2-12 22:32
wjwrh 发表于 2014-2-12 21:53
TileEntityToCommand插件能附在下面么

http://elemanser.com/TileEntityToCommand



作者: kongbaiyo    时间: 2014-3-15 23:31
赞!炒鸡有用的www
作者: 2838099986    时间: 2014-4-11 19:55
                             牛
作者: ~~末影少女-_-    时间: 2014-4-25 09:35
我想吐槽。。。因为我有恐蛛症。。。
作者: 红石大神S    时间: 2014-5-6 13:20
命令方块盲
作者: wwww123456wwwww    时间: 2014-6-8 18:05
看lz头像就知道lz对命令方块有多年研究{:10_492:}
作者: dileisi    时间: 2014-6-29 10:57
LZ诺比。。。。。。
作者: 量子凉子    时间: 2014-6-29 12:55
真要用的话太复杂了。。。
作者: Seekers_05    时间: 2014-9-20 10:57
-1。。。因为不能选择~~如果我做,我会放按鈕,然后命令方块无线传输~然后若判别出,合成并用无线传输法直接喷出物品~~若失败,则直接排出材料...
作者: Seekers_05    时间: 2014-9-20 11:01
-1。。。因为不能选择~~如果我做,我会放按鈕,然后命令方块无线传输~然后若判别出,合成并用无线传输法直接喷出物品~~若失败,则直接排出材料...
作者: jesse    时间: 2014-11-27 16:14
教程很不错,顶一个!A_A
作者: q2539171536    时间: 2014-11-27 21:47
MCBBS有你更精彩~
作者: b62295521    时间: 2015-6-2 10:35
为何单机可以用,服务器上 就不行了。在服务器上 只要通过一次信号 比较器就一直是亮的。 不管命令方块判定是还是否...
作者: 去猫    时间: 2015-9-5 20:35
LZ 我有个想法 : 不用替换掉发射器 只要在发射器内9个位置全都替换上minecraft:air空气方块   然后隔几个tick再换上对应的物品。我认为这样有个好处如果要合成大量的话会比较方便    希望楼主采纳
作者: 2362577123    时间: 2015-9-5 21:00
去猫 发表于 2015-9-5 20:35
LZ 我有个想法 : 不用替换掉发射器 只要在发射器内9个位置全都替换上minecraft:air空气方块   然后隔几个t ...

挖坟自重,blockdata被你吃了?
作者: rshengcun_qwq10    时间: 2015-9-6 19:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: 77564883    时间: 2015-10-11 15:32
作者大大很厉害只是能不能给一个Mcedit的地址
作者: 47012169    时间: 2015-10-13 13:38
好腻害,顶下楼主