Re: [讨论] 指令矿车中指令写法问题

楼主: LPH66 (-6.2598534e+18f)   2014-12-07 22:10:02
我们就来一步一步解决你的每一步逆向过程吧
首先是第四步 召唤苔石墙
如推文所说 BlockID: 在 1.8 变成了 Block: 所以要改成 Block:"cobblestone_wall"
而它的 data value 则用 Data: 指定, 你要的是苔石墙所以是 Data:1
因此完整指令就是
summon FallingSand ~1 ~10 ~ {Block:"cobblestone_wall",Data:1,Time:1}
到这里是简单的地方
第三步, 召唤一个指令矿车存有以上指令
召唤指令矿车不难: summon MinecartCommandBlock ~2 ~ ~ {Command:""}
但问题在于要把指令放进 Command:"" 里
因为指令里有 " 这个字符, 这会跟 Command:"" 的 " 冲突
解法是在这些 " 前面加一个 \ (这叫做跳脱字符)
所以第三步的完整指令是:
summon MinecartCommandBlock ~2 ~ ~ {Command:"summon FallingSand ~1 ~10 ~
{Block:\"cobblestone_wall\",Data:1,Time:1}"}
绿色部份就是第四步指令, 只把 " 代换成 \" 而已
暗红色的 \ 就是字串里的跳脱字符
再来第二步, 设置一个指令方块存有以上指令
同样的设置指令方块不难: setblock ~2 ~ ~ command_block 0 replace {Command:""}
问题一样在于要把第三步指令放进 Command:"" 里
这里除了 " 这个字有问题之外, \ 这个字也有一样问题
(不然你怎么告诉麦块说我就是要一个 \ 字在指令里?)
所以 \ 这个字也要加上一个 \ 跳脱
因此第二步的完整指令就是:
setblock ~2 ~ ~ command_block 0 replace {Command:"summon MinecartCommandBlock
~2 ~ ~ {Command:\"summon FallingSand ~1 ~10 ~ {Block:\\\"cobblestone_wall\\\",
Data:1,Time:1}\"}"}
上面的 \ 有两种颜色
普通白色的 \ 是给白色指令看的跳脱字符, 这样才会产生第三步的指令
然后暗红色的 \ 是给红色指令看的跳脱字符, 这样红色指令才会产生第四步的指令
所以最后你要放进最初始的指令矿车中的指令就是上面三行那一串了
作者: tumourjoke (毒瘤)   2014-12-07 22:24:00
大感谢 对于NBT tag一直都不知道说修改相关数值的方法去找一些地图来拆 没有解释的状态下也还是看无"\" 的作用原先也知道 但就是知道用途不知如何使用去查中英文的论坛等对这符号的说明不多 实在感谢说明
楼主: LPH66 (-6.2598534e+18f)   2014-12-07 22:52:00
事实上 NBT Tag 的指定方式是一个比较宽松的 JSON 表示法这个用法也是 JSON 里定的
作者: tumourjoke (毒瘤)   2014-12-07 23:23:00
恩 现在在试回到步骤一 成功了不过叠到了七层"\"www不过json就看不懂了 没有计算机概论的背景(需要吗?
作者: lc85301 (pomelocandy)   2014-12-07 23:34:00
要开始写程式了吗,跳脱跳脱,为啥不像python支援", '就好了 '_>'
作者: tumourjoke (毒瘤)   2014-12-08 01:09:00
最后成果:summon MinecartCommandBlock ~ ~ ~2 {Command:"setblock ~ ~ ~2 command_block 0 replace {Command:\"summon MinecartCommandBlock ~ ~ ~2 {Command:\\\"summon FallingSand ~ ~10 ~2 {Block:\\\\\\\"cobblestone_wall\\\\\\\",Data:1,Time:1,DropItem:0}\\\"}\"}"}
作者: kerwinting (FalseHope)   2014-12-08 07:27:00
我本来以为红石逻辑电路已经够麻烦了...直到我看了这
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2014-12-08 07:33:00
不停的 escape ..... (抹脸要不要下一版支援在书里写指令 然后可以塞进指令方块好了还可以缩排 (咦
作者: dannywei611 (dannywei)   2014-12-08 11:04:00
用书本写还可以顺便加注解
作者: lc85301 (pomelocandy)   2014-12-08 13:02:00
用附魔达成版本控制,喂喂喂
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2014-12-08 13:23:00
所以要出解除附魔了吗 解除一次附魔退回一个版本 (越来越歪
作者: mmis1000 (秋月恋枫)   2014-12-08 14:11:00
我记得旧版中有bug,///"会被escape成//"耶?不知道修好了没所以一般的json encoder根本不能用
楼主: LPH66 (-6.2598534e+18f)   2014-12-08 21:02:00
我实际在 1.8 里试过本文里长达三行的那一串是 OK 的所以应该是修好了的样子看上面的推文突然想起来, 好像单引号也支援的样子MC-59504 里有相关讨论
作者: twosheep0603 (两羊)   2014-12-09 17:34:00
引号处理很麻烦的, 而且一般来说少用到三层以上的递回, 用单引号是相对容易的解决法另外前阵子的指令方块笔记可能还得富奸一阵子(逃
作者: h73o1012 (KMT LIKE S hit face)   2014-12-13 00:58:00
专业解决麻烦?

Links booklink

Contact Us: admin [ a t ] ucptt.com