Minecraft(我的世界)中文论坛

标题: 【1.12单指令】关于在1.12中使用的单指令

作者: 林扬骐    时间: 2017-6-16 13:57
标题: 【1.12单指令】关于在1.12中使用的单指令
本帖最后由 林扬骐 于 2017-6-16 21:41 编辑
经实验,在1.12里使用单指令会有下面要注意的
(根据pcb进行改进)

这是在1.9中使用pcb输入"icb:/say 23333333"生成的命令:


/summon falling_block ~ ~1.5 ~ {Time:1,Block:minecraft:redstone_block[sup]1[/sup],Motion:[0d,-1d,0d],Passengers:[{id:falling_block,Time:1,Block:minecraft:activator_rail,Passengers:[{id:commandblock_minecart,Command:[sup]2[/sup]blockdata ~ ~-2 ~ {auto:0b,Command:""}},{id:commandblock_minecart,Command:setblock ~2 ~-2 ~0 command_block 1 replace {Command:say 23333333}},{id:commandblock_minecart,Command:setblock ~ ~1 ~ command_block 0 replace {auto:1b,Command:fill ~ ~ ~ ~ ~-2 ~ air}},{id:commandblock_minecart,Command:kill @e[type=commandblock_minecart,r=1]}]}]}

红字部分是问题部分
1."Block:"后的方块名称,要正确执行,要么(a)不加"minecraft:";要么(b)加上引号
2."Command:"后的命令要加引号(同时引号中的引号必须转义)
(总体来看推测nbt名称后的内容:要么1.没有特殊符号("_"除外,也有可能还有除外);要么2.加引号并在在适当时转义)
(可以参考pca的帖子:http://mcbbs.tvt.im/thread-687807-1-1.html


改后大致是这样:

  1. /summon falling_block ~ ~1.5 ~ {Time:1,Block:redstone_block,Motion:[0d,-1d,0d],Passengers:[{id:falling_block,Time:1,Block:activator_rail,Passengers:[{id:commandblock_minecart,Command:"setblock ~2 ~-2 ~0 command_block 1 replace {Command:"say 23333333"}"},{id:commandblock_minecart,Command:"blockdata ~ ~-2 ~ {auto:0b,Command:""}"},{id:commandblock_minecart,Command:"setblock ~ ~1 ~ command_block 0 replace {auto:1b,Command:"fill ~ ~ ~ ~ ~-2 ~ air"}"},{id:commandblock_minecart,Command:"kill @e[type=commandblock_minecart,r=1]"}]}]}
复制代码


下面就是基础部分、多指令部分、完整一个的“手工操作”版
(ps:现在pcb已经更了:http://www.mcbbs.net/thread-533943-1-1.html)


具体教程可以参考1.9版:
1.我的:http://mcbbs.tvt.im/thread-530569-1-1.html
2.@PotatoMaster101的:http://mcbbs.tvt.im/thread-512595-1-1.html




感谢阅读

@pca006132 @chyx @FHC红石 @langyo @-ZCH- @12356789asdfg @ruhuasiyu @Deing @Formula3 @MsYqgzt @雷鸣·翾鹗



作者: 林扬骐    时间: 2017-6-16 14:04
@PotatoMaster101
(帖内没变蓝?)
作者: Java_command    时间: 2017-6-16 14:44
上次setblock的时候就出现了问题,后来发现加上引号就可以修复。
神转义时代即将开启
作者: pca006132    时间: 2017-6-16 14:48
其实简单来说就是
如果regex /^[\w.+-]+$/不符合就必须""
即使全部符合,如果符合任意一个数值的regex,也必须""
数值的regex就是,纯数字、数字后加上 b/s/l/f/d,或者是科学计数法,下面有详细的regex,全部都是大小写不敏感

pattern_double1 = re.compile(r'^[-+]?(?:[0-9]+[.]|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?$', re.I)
pattern_double2 = re.compile(r'^[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?d$', re.I)
pattern_float = re.compile(r'^[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?f$', re.I)
pattern_byte = re.compile(r'^[-+]?(?:0|[1-9][0-9]*)b$', re.I)
pattern_long = re.compile(r'^[-+]?(?:0|[1-9][0-9]*)l$', re.I)
pattern_short = re.compile(r'^[-+]?(?:0|[1-9][0-9]*)s$', re.I)
pattern_int = re.compile(r'^[-+]?(?:0|[1-9][0-9]*)$', re.I)
作者: pca006132    时间: 2017-6-16 15:32
顺便安利一下
https://pca006132.neocities.org/pcc/nbtcheck.html
其实这里有一个 1.11 -> 1.12 NBT的功能...
不过还没搞递归检查233333,所以外面那层好了里面的还没好√
作者: 林扬骐    时间: 2017-6-16 16:56
pca006132 发表于 2017-6-16 14:48
其实简单来说就是
如果regex /^[\w.+-]+$/不符合就必须""
即使全部符合,如果符合任意一个数值的regex,也 ...

看不懂XD
作者: langyo_v3    时间: 2017-6-16 17:02

论手速
作者: pca006132    时间: 2017-6-16 17:32
http://mcbbs.tvt.im/thread-687807-1-1.html

1.12 nbt更改
作者: chyx    时间: 2017-6-16 18:11
本帖最后由 chyx 于 2017-6-16 18:17 编辑

无聊


谁不知道系列


你要是知道了现在的字符串如果出现了不是a-zA-Z._+-的符号都要用引号括起来
(当然是在没能被当成数读取的情况下)


要是知道了 你就知道你写的都几乎是废话了



而且要注意的还有别的 比如intlist的格式改了 list的自动去除类型不对的性质被去了

作者: ruhuasiyu    时间: 2017-6-16 18:43
这个虽然基本上大家都知道了,
不过写出来还是挺好的
然而好的习惯还是全都括起来吧
(function大法好,退ooc保平安)
作者: 玄素    时间: 2017-6-16 19:16
pca006132 发表于 2017-6-16 14:48
其实简单来说就是
如果regex /^[\w.+-]+$/不符合就必须""
即使全部符合,如果符合任意一个数值的regex,也 ...

这个故事告诉我们,你该更新1.12的pcb了(逃