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