由于太多新手的问题、本人也没有时间一个一个回复,所以今天发本帖。
大家好。今天来发一个指令方块基础的Q&A(别告诉我你不知Q&A是啥(问题和答案))。
Q1:NBT的集合(MC1.7+)
A:我看很多人都问我,如果我又要有Attributes,又要有Equipment,实现在同一个实体上面怎么做?这个十分简单。多个NBT的格式就是:
- {NBT1,NBT2,NBT3}
- /summon Zombie ~ ~1 ~
- {Equipment:[xxx],ActiveEffects:[xxx]}
这里用的是母标签和子标签。举例子,a:{b,c,d}里面,a就是母标签,内部的b,c和d就是子标签。
警告:我看见很多新手都会这样写:{Equipment:[xxx]},{ActiveEffects:[xxx]},这样是错的。多个NBT不能开多个括号,而是全部集中在一个括号之内。
之后又有人问我,怎么给村名卖的东西附魔?怎么给生物的装备附魔?等等的问题。这个很简单,需要用到的是{tag}。格式是:
- {NBT1,tag:{NBT2}}
- /summon Zombie ~ ~1 ~
- {Equipment:[{id:"xxx",Count:1b,Damage:0s,
- tag:{ench:[xxx]}}]}
再比如,村名交易:
- /summon Villager ~ ~1 ~
- {Offers:{Recipes:[{maxUses:xxx,
- buy:{id:"xxx",Count:1b,Damage:0s,tag:{xxx}},
- sell:{id:"xxx",Count:1b,Damage:0s,tag:{xxx}}}]}}
Q2:指令方块输出:“Data tag parsing failed: Unbalanced curly brackets .........” (MC1.7+)
A:这是因为输入的NBT的括号没有对称造成的。如果开了一个括号,那就要关闭一个括号。比如,如果:
- {xxxxx}}
- {xxxxx}
总体来说,开几个括号就要关掉几个。比如:
如果开启是:{[[[{{{{,那么关闭就是:}}}}]]]}。
如果开启是:{{{{[[[[{{{{{{{,那么关闭就是:}}}}}}}]]]]}}}}。
Q3:/setblock(或者/fill)显示“Cannot place block outside of the world” (MC1.7+)
A:这是因为setblock和fill指令只可以在已经载入的Chunk内放置方块。如果输入:“/setblock ~10000 ~ ~999999 minecraft:redstone_block”,那么一般就会失败,因为远离玩家x为10000格,z为999999格的地方的Chunk并未加载。最好的解决方法是,首先TP自己到那个setblock或者fill的地方,然后再使用指令方块。这样子每次玩家到了那个地方,Chunk就会被加载,这样子就可以实现指令了。
出生点chunk是一直都会被加载的,所以玩家在出生地做红石,指令方块都会被激活。
值得一提的是,/spreadplayers指令可以把实体随机传送到chunk并未加载的地方,并且可以在短时间内加载那个chunk。所以/spreadplayers可以做一个chunk加载器。
Q4:关于如何改变物品/方块的附加值 (MC1.7+)
A:每个物品都有一个附加值 (Damage),但是大部分的物品附加值都为0。附加值用来分辨同样方块内的种类,比如羊毛的ID都是"minecraft:wool",但是他们却有不同的颜色,这个就是使用附加值做的。一般指令都会给玩家一个输入附加值的选项。
比如,/give指令的格式是:
- /give <玩家> <物品> [数量] [附加值] [dataTag]
在NBT内,附加值是使用Damage标签来控制的。比如:
- {Equipment:[{id:"xxx",Count:1b,Damage:0s}]}
Q5:关于转义的使用(MC1.7+)
A:很多人问本人如何使用转义。在MC中,转义是让电脑知道双引号顺序。请看一下例子:
"abc"def"ghi"
上面这行文字有4个双引号。如果直接读取这行文字,那么可以有不同的概念:
1. abc和ghi在双引号中间,而def没有双引号。
2. abc和ghi在整个双引号之内,而def在整个双引号之内的双引号之内。
这里就要用到转义了。在MC中,转义的用处就是“双引号中的双引号”。转义字符为 “\”。下面来举个例子:"abc\"def\"ghi"
以上就是正确的格式。因为以上这行文字的意思就是,abc和ghi被双引号包括。而def是被双引号之内的双引号所包括。这样子电脑就可以理解其意思。
之后来讲解的是多级转义。计算多级转义字符数量的公式是 2^n-1。一开始本人称为0级转义,就是没有任何转义,因为2^0-1 = 0。所以没有任何转义字符。之后一级就是 \" ,也就是 2^1-1 = 1,带有一个转义字符。二级为 2^2-1 = 3,带有3个转义字符,例子如下:
"a\"b\\\"c\\\"d\"e"
以上例子中,a和e被最外面的0级转义双引号包围。b和d被一级转义包围,最中间的c被二级转义包围。多级转义可理解为双引号之内的双引号之内的双引号之内的双引号之内的双引号... 可以无限的下去。
最后用一些MC内的指令来举例子:
- /setblock ~ ~2 ~ minecraft:command_block 0 replace
- {Command:"/tellraw @a {"text":"一级转义"}"}
- /setblock ~ ~2 ~ minecraft:command_block 0 replace
- {Command:"/tellraw @a {"text":"请按我","clickEvent":{"action":"run_command","value":"/summon Pig ~ ~ ~ {CustomName:\\"我是一头猪\\"}"}}"}
当然,不光只有用在双引号内,还有一些特殊的转义符可以用在文本处理中。例如最常用的就是“\n”,这个转义符用处是空一行。可以在/tellraw内使用:
- /tellraw @a
- {"text":"换行\n换行"}
教程结束。如果有任何综合类的问题请发进回复,会加入本贴。任何关于单独指令的问题将会被无视。
==========END==========
Update log:
V1.0.6: Added more details to Q5. - 10/6/2016
V1.0.5: Added more details to Q1. - 9/6/2016
V1.0.4: Added more examples in Q5 for easier understanding. - 7/6/2016
V1.0.3: Minor changes on version info. Added Q5. - 4/6/2016
V1.0.2: Combined Q1 and Q2, added more detail to Q4 (now Q3). - 19/07/2015
V1.0.1: Added one question (Q5). - 18/04/2015
V1.0.0: Basic layout, added 4 questions (Q1 - Q4). - 12/04/2015
[groupid=546]Command Block Logic[/groupid]