可爱的云宝
我知道大概用法,但是为什么有些指令里只用一个\,有的用3个,有的用7个,到底是什么规律
如果有网址最好

还有某贰逼的彩色不管用啊,为什么我复制他的指令都管用,自己写就不行呢
是我的姿势不对么

  1. summon FallingSand ~ ~1 ~ {Block:command_block,Time:1,TileEntityData:{Command:/setblock ~1 ~ ~ wall_sign 5 replace {Text1:"{text:\\"Click\\",clickEvent:{action:\\"run_command\\",value:\\"blockdata ~-1 ~ ~ {Command:summon Villager ~ ~1 ~ {Invulnerable:1,NoAI:1,Profession:0,Career:1,CareerLevel:9999999,Invulnerable:1,CustomName:\\"cake maker\\",Offers:{Recipes:[{maxUses:1,buy:{id:minecraft:paper,Count:1,Damage:0,tag:{display:{Name:\\\u00a7c中国制造}}},sell:{id:minecraft:apple,Count:3,tag:{dispaly:{Name:\\"A P P L E\\"}}}}]}}]}}
复制代码
如果不对请帮我修改下姿势(指令)

求解答,我快疯了!


@lzs1234    @scorpio975    @Deing  
↑你们貌似在问答版都很活跃的说,坐等回答

Deing
简单地说,这个东西是一个组合指令,如果你搞混的话可以先把原来的指令都写出来然后再整合
(你的指令括号什么的各种不齐,我捣鼓了半天也没修好,所以先用一个简单指令给你讲一讲)
以如下指令为例
/give @p minecraft:sign 1 0 {BlockEntityTag:{Text1:"{text:\"点我点我\",clickEvent:{action:\"run_command\",value:\"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:\\\"say \u00a7m\u00a73aaa\\\"}\"}}"}}
这个指令分拆为①/gvie @p minecraft:sign 1 0 {BlockEntityTag:{}}
②Text1:""
③text:"点我点我",clickEvent:{action:"run_command",value:""}
④/setblock ~ ~ ~ minecraft:command_block 0 replace {}
⑤Command:"say aaa"
这些你应该都懂,是json文本的地方才需要加引号
在整合的时候,要注意json文本内要出现引号是不能直接用的,要用\进行转义,比如  Text1:"{text:\"点我点我\"}
仔细观察上述指令,你会发现 ③④⑤都是包含在②的引号之内的
假设我们都不转义直接嵌套,会得到
(为方便观察建议采取如下格式书写)
Text1:
     "{
             text:"点我点我",
             clickEvent:
              {
                     action: "run_command",
                     value: "/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:"say \u00a7m\u00a73aaa"}"
               }
        }"
有没有发现蓝色的引号都是一层嵌套,即它们外边只有一层引号,但是红色引号是两层嵌套?
所以,一层嵌套的引号,直接转义一次即可,但是两层嵌套的如果只转义一次会得到
Text1:
     "{
             text:\"点我点我\",
             clickEvent:
              {
                     action: \"run_command\",
                     value: \"/setblock ~ ~ ~ minecraft:command_block 0 replace {Command:\"say \u00a7m\u00a73aaa\"}\"
               }
        }"

你觉得计算机会不会认为,绿色的两个引号是一对,黄色的两个是一对呢?
所以必须二次转义\\\"
也就是说     "         {  \"        { \\   \"   \\   \"  }     \"    }    "
在一层引号内的引号通过转义,相当于脱掉了外壳,变成了真正的引号,而它脱掉外壳的时候,二层的引号只脱掉了\\的前一个\和\"的\,变成了\",也就成了一层嵌套的引号


是不是有点绕?不过你只要用那种正规编程的格式书写指令,应该还是容易弄清楚谁和谁是一对的

你那条指令我觉得我得重写一遍,得费不少功夫(我写指令特别慢,。。。。),你要是需要就多等一会儿吧


Deing
我特么终于可以开心地告诉你我把你的指令修好了(废了我九牛二虎之力,不过其实很感谢你,让我趁机熟悉了一下json文本的格式,以后就不用再专门研究了)

不过首先我想吐槽一下你之前写的指令,它不仅括号、引号没有完全匹配,格式十分纷乱,最要命的是它最外边的Command标签后边的内容setblock……本来应该在引号内,结果你省略了引号;以及村民交易的sell部分display你写成了dispaly;这两点让我可纠结了半天才发现(当然也说明我指令写的还是不熟练)

修改后如下

  1. summon FallingSand ~ ~1 ~
  2. {
  3.         Block:command_block,Time:1,TileEntityData:
  4.                 {
  5.                         Command:"/setblock ~1 ~ ~ wall_sign 5 replace                 
  6.                         {
  7.                                 Text1:
  8.                                 "
  9.                                 {
  10.                                         text:\\"Click\\",clickEvent:
  11.                                         {
  12.                                                 action:\\"run_command\\",value:
  13.                                                 \\"
  14.                                                 /blockdata ~-1 ~ ~
  15.                                                 {
  16.                                                         Command:
  17.                                                         \\\\\\"
  18.                                                         summon Villager ~ ~1 ~
  19.                                                         {
  20.                                                                 Invulnerable:1,NoAI:1,Profession:0,Career:1,CareerLevel:9999999,Invulnerable:1,CustomName:\\\\\\\\\\\\\\"cakemaker\\\\\\\\\\\\\\",Offers:                                                        
  21.                                                                 {                                                        
  22.                                                                 Recipes:

  23.                                                                         [{
  24.                                                                                 maxUses:1,buy:
  25.                                                                                 {
  26.                                                                                         id:minecraft:paper,Count:1,Damage:0,tag:
  27.                                                                                         {                        
  28.                                                                                                 display:
  29.                                                                                                 {
  30.                                                                                                         Name:\\\\\\\\\\\\\\"\\\\u00a73good\\\\\\\\\\\\\\"
  31.                                                                                                 }
  32.                                                                                         }
  33.                                                                                 },
  34.                                                                                 sell:
  35.                                                                                 {
  36.                                                                                         id:minecraft:apple,Count:3,tag:
  37.                                                                                         {
  38.                                                                                                 display:
  39.                                                                                                 {
  40.                                                                                                         Name:\\\\\\\\\\\\\\"A P P L E\\\\\\\\\\\\\\"
  41.                                                                                                 }
  42.                                                                                         }
  43.                                                                                 }
  44.                                                                         }]
  45.                                                                 }
  46.                                                         }\\\\\\"
  47.                                                 }\\"
  48.                                         }
  49.                                 }"
  50.                         }"
  51.                 }
  52.         
  53. }
复制代码
好好体会吧,要注意的主要有
1,分清楚哪些引号是一对
2,最外层引号直接写“”,第二层是\"\",第三层是\\   \"   \\   \"  第四层是   \\  \\         \\   \"        \\  \\         \\   \" ,(也就是说,不仅引号需要转义,\本身也要转义,每加深一层,每一个"和\都要转义一次),  连带引号,第一层每边是1个,第二层每边是两个,第三层四个,第四层八个(2的n次方),这也就是你说的1个\(2^1-1),3个\(2^2-1),和7个\(2^3-1)了(没算引号所以-1)
3,\u00a7要比相应的文字少一层嵌套才起作用
4,最后,养成良好书写习惯,使用正规代码格式书写指令,对你检查是十分十分有帮助的。你甚至不需要用编程软件,notepad++也可以帮你规范格式,你可以在“语言”栏里选择C语言,然后你输入{时系统会自动为你补全},你换行时系统自动为你空出开头,对于写长嵌套指令大有裨益




lzs1234
\是第一层转义,\\\是第二层,\\\\\\\是第三层
引号个数是2^n-1
然后你的指令我实在是没眼看,全部用\\\会导致指令错误,而且你的前后括号数量根本不平衡