Re: [討論] 指令礦車中指令寫法問題

看板Minecraft (當個創世神)作者 (1597463007)時間11年前 (2014/12/07 22:10), 編輯推噓10(10025)
留言35則, 9人參與, 最新討論串2/2 (看更多)
我們就來一步一步解決你的每一步逆向過程吧 首先是第四步 召喚苔石牆 如推文所說 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}\"}"} 上面的 \ 有兩種顏色 普通白色的 \ 是給白色指令看的跳脫字元, 這樣才會產生第三步的指令 然後暗紅色的 \ 是給紅色指令看的跳脫字元, 這樣紅色指令才會產生第四步的指令 所以最後你要放進最初始的指令礦車中的指令就是上面三行那一串了 -- 簡單講就是, 每當這種 NBT Tag 的字串裡有你要保留的 " 或 \ 字元 就要在前面加上一個 \ 跳脫它 這裡有兩層所以最後會出現 \\\" 這種鬼東西, 不過這是必要的 -- LPH [acronym] = Let Program Heal us -- New Uncyclopedian Dictionary, Minmei Publishing Co. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.39.85 ※ 文章網址: http://www.ptt.cc/bbs/Minecraft/M.1417961405.A.BED.html

12/07 22:24, , 1F
大感謝 對於NBT tag一直都不知道說修改相關數值的方法
12/07 22:24, 1F

12/07 22:25, , 2F
去找一些地圖來拆 沒有解釋的狀態下也還是看無
12/07 22:25, 2F

12/07 22:26, , 3F
"\" 的作用原先也知道 但就是知道用途不知如何使用
12/07 22:26, 3F

12/07 22:28, , 4F
去查中英文的論壇等對這符號的說明不多 實在感謝說明
12/07 22:28, 4F

12/07 22:52, , 5F
事實上 NBT Tag 的指定方式是一個比較寬鬆的 JSON 表示法
12/07 22:52, 5F

12/07 22:52, , 6F
這個用法也是 JSON 裡定的
12/07 22:52, 6F

12/07 23:23, , 7F
恩 現在在試回到步驟一 成功了不過疊到了七層"\"www
12/07 23:23, 7F

12/07 23:31, , 8F
不過json就看不懂了 沒有計算機概論的背景(需要嗎?
12/07 23:31, 8F

12/07 23:34, , 9F
要開始寫程式了嗎,跳脫跳脫,為啥不像python支援
12/07 23:34, 9F

12/07 23:35, , 10F
", '就好了 '_>'
12/07 23:35, 10F

12/08 01:09, , 11F
最後成果:
12/08 01:09, 11F

12/08 01:11, , 12F
summon MinecartCommandBlock ~ ~ ~2 {Command:"
12/08 01:11, 12F

12/08 01:14, , 13F
setblock ~ ~ ~2 command_block 0 replace {Command:\
12/08 01:14, 13F

12/08 01:15, , 14F
"summon MinecartCommandBlock ~ ~ ~2 {Command:\\\"
12/08 01:15, 14F

12/08 01:18, , 15F
summon FallingSand ~ ~10 ~2 {Block:\\\\\\\"
12/08 01:18, 15F

12/08 01:19, , 16F
cobblestone_wall\\\\\\\",Data:1,Time:1,DropItem:0}
12/08 01:19, 16F

12/08 01:20, , 17F
\\\"}\"}"}
12/08 01:20, 17F

12/08 07:27, , 18F
我本來以為紅石邏輯電路已經夠麻煩了...直到我看了這
12/08 07:27, 18F

12/08 07:33, , 19F
不停的 escape ..... (抹臉
12/08 07:33, 19F

12/08 07:34, , 20F
要不要下一版支援在書裡寫指令 然後可以塞進指令方塊好了
12/08 07:34, 20F

12/08 07:34, , 21F
還可以縮排 (咦
12/08 07:34, 21F

12/08 11:04, , 22F
用書本寫還可以順便加註解
12/08 11:04, 22F

12/08 13:02, , 23F
用附魔達成版本控制,喂喂喂
12/08 13:02, 23F

12/08 13:23, , 24F
所以要出解除附魔了嗎 解除一次附魔退回一個版本 (越來越歪
12/08 13:23, 24F

12/08 14:11, , 25F
我記得舊版中有bug,///"會被escape成//"耶?不知道修好
12/08 14:11, 25F

12/08 14:11, , 26F
了沒
12/08 14:11, 26F

12/08 14:12, , 27F
所以一般的json encoder根本不能用
12/08 14:12, 27F

12/08 21:02, , 28F
我實際在 1.8 裡試過本文裡長達三行的那一串是 OK 的
12/08 21:02, 28F

12/08 21:02, , 29F
所以應該是修好了的樣子
12/08 21:02, 29F

12/09 02:16, , 30F
看上面的推文突然想起來, 好像單引號也支援的樣子
12/09 02:16, 30F

12/09 02:16, , 31F
MC-59504 裡有相關討論
12/09 02:16, 31F

12/09 17:34, , 32F
引號處理很麻煩的, 而且一般來說少用到三層以上的遞
12/09 17:34, 32F

12/09 17:34, , 33F
迴, 用單引號是相對容易的解決法
12/09 17:34, 33F

12/09 17:35, , 34F
另外前陣子的指令方塊筆記可能還得富奸一陣子(逃
12/09 17:35, 34F

12/13 00:58, , 35F
專業解決麻煩?
12/13 00:58, 35F
文章代碼(AID): #1KX5-zlj (Minecraft)
文章代碼(AID): #1KX5-zlj (Minecraft)