本帖最后由 玄素 于 2017-6-18 14:38 编辑
都知道0.16出了addon,结果所有人都跑去玩addon了,命令完全没人在意23333
那么我就简单的按照pc这边Ender的帖子写个pe版好了√大概会随着pe这边的更新而更新吧……
这篇帖子相比于教程,更像是一篇单纯对pe命令的描述,例子肯定是没有Ender那个帖子多的。
所以如果觉得"例子好少啊我看不懂",那么你可以选择把这个和Ender的帖子参考来看;我则会写出pc和pe不同之处。
当前内容基于Win10 Edition 1.0,部分同时在Pocket Edition同版本中进行二次测试
暂停更新,pc这边更版本我重心就还在pc上了
而且还有个很恶心的问题是pe经常改各种东西我还老是找不到更新日志
于是每个版本我都得全部指令重新测一次,很多东西还没有好的测试手段
如果pe更记分板我就诈个尸把帖子更掉(
在当前版本,mcpe原版一共有28条命令,列表整理如下:
玩家相关命令 | /enchant /gamemode /give /spawnpoint /xp |
实体相关命令 | /execute /kill /summon /teleport /tp |
方块相关命令 | /clone /fill /setblock /testforblock /testforblocks |
世界相关命令 | /setworldspawn /time /toggledownfall /weather |
其它命令及服务器命令 | /connect /deop /help /list /locate /op /say /tell /wsserver |
分类依据为命令的作用目标,算是比较wiki的分类法。
pe版命令系统当前不支持pc版下相当多的功能,比如记分板和nbt修改;同时部分命令格式也和pc版有少许差别。
前注:
pe的命令反馈往往有问题,如果效果无误请不要在意。测试的时候这个反馈烦死我了………………
pe与pc不同之处用粗体标注。
命令格式内容来自游戏(并直接汉化掉了)。括号内内容由两部分组成,冒号前部分为参数描述,冒号后部分为格式要求。
pe目前参数不像pc一样严格要求其数据类型(因为大部分命令都给了严格的数值界,很难超过一般使用的范围),因此可以简单地将int认作数值。然而其实它也是有最大值和最小值的,分别为999999999和-999999999。超过此范围,游戏将会直接提示“无效的指令语法”。这导致我非常怀疑它是看数字长度的。
参数格式对照如下:
int | 数值 |
target | 实体选择器 |
string | 字符串 |
x y z | 坐标 |
参数如果用<>包括,那么这个参数为必需参数;如果用[]则代表着这个参数是选填。所有可选参数都有其默认值。
更新日志
2016.12.20
修改部分原有描述
添加1.0新命令/locate /connect /teleport
更新实体表至1.0 2017.6.18 更新实体表至1.1 |
玩家相关命令
1./enchant
- /enchant <玩家:target> <魔咒ID:int> [等级:int]
- /enchant <玩家:target> <魔咒名:string> [等级:int]
复制代码 给目标玩家手中持有的物品附魔指定的属性。
所选择的魔咒不能和物品本身冲突(如试图向木棍附魔锋利或是向斧子附魔保护),亦不能和物品上已有的魔咒冲突(如试图向锋利I的剑附魔亡灵杀手I)。同时,附魔等级不能超过生存所能达到的最高等级。魔咒等级的默认值为1。 |
2./gamemode
- /gamemode <模式名:int> [玩家:target]
- /gamemode <模式名:string> [玩家:target]
复制代码 更改目标玩家的游戏模式为指定模式。可选的模式只有生存模式和创造模式,分别对应值survival/s/0和creative/c/1。
目标玩家缺省时,指令将修改执行者自己的游戏模式。 |
3./give
- /give <玩家:target> <物品名:string> [数量:int] [数据值:int]
复制代码 给予指定玩家指定的物品。
物品名和pc版1.8以后一样,仅支持英文ID。与pc版不同的是不支持"minecraft:"前缀。
部分物品需要通过物品名+数据值来指定,例如黑色羊毛为wool:15,则获得黑色羊毛的指令为
如果你不清楚一个物品的数据值,你可以在这个帖子里面找找看……不过这帖子相当老了,可能你会发现你要找的方块里面并没有;这时候你可以到minecraft中文wiki里搜索物品名来查找。
数量的默认值为1,数据值的默认值为0。和pc版的差别在于,pe版是不能指定give所给予物品的nbt的。 |
4./spawnpoint
- /spawnpoint [玩家:target] [新出生点坐标:x y z]
复制代码 将指定玩家的重生点设置为指定坐标。
类似在床上睡过一觉的效果,但是显然更加灵活。
如果你的重生点位置有方块阻挡,你将出生在同x z值,在y+方向上最接近重生点的“能够容纳一个人”的1*2*1空气柱的位置。如果你的脚下是虚空……没错,你会掉下虚空。
当玩家未指定时,默认值为执行者本人;当坐标未指定时,默认值为执行位置。 |
5./xp
- /xp <经验数:int> [玩家:target]
- /xp <等级数:int>L [玩家:target]
复制代码 给予目标玩家一定数量的经验或等级。
通过给玩家增加负数等级,可以减少玩家的经验值;例
减少自己10级经验:
然而只有等级模式下可以指定值为负,经验模式下是不行的,会被提示“无法给予玩家负经验值”。
另,这是少量的能够使用游戏规定的值的上限/下限作为参数的命令。亦即,等级/经验数处最高可以填写999999999。这些经验足够玩家升到14925级;但是实际上玩家的最高等级为24791,因此填写太大的等级数是没有意义的。 |
实体相关命令
1./execute
- execute <命令:string>
- execute <执行者:target> <执行坐标:x y z> <命令:string>
- execute <执行者:target> <执行坐标:x y z> detect <检测坐标:x y z> <方块名:string> <数据值:int> <命令:string>
复制代码 使满足条件的目标实体执行相应命令。
要搞清楚这条命令,我们需要先明确两个概念:命令的执行者和执行坐标。
就像每个动作都有一个发出者,每条命令也都有一个执行者。执行者指的是“使用这条命令的人”,在现在pe没有命令方块的情况下,可以看做所有命令的执行者都是玩家。这时候我们觉得不开心了啊,比如我想让那边那只羊把它脚底下吃秃掉了的土重新换成草皮,难道我还得先搞清楚它的坐标然后才能替换?
execute就是用来解决这类问题的。
通过execute,我们用实体选择器将执行者选择为那只羊。这时候,我们后续接的setblock命令,就被视作以羊为执行者,进行下一步的检定。
你可能会问,这有什么的?不还是得setblock?想想看,我们还有一个工具:相对坐标。
几乎所有需要坐标值的地方(除了选择器参数),都可以使用相对坐标来代替绝对坐标。相对坐标的原点在哪里呢?一般来说,就在执行者的坐标处。
这样,我们使用这条命令:
- /execute @e[type=sheep] ~ ~ ~ setblock ~ ~-1 ~ grass
复制代码 不需要知道羊的位置,但依旧成功的干掉了那块被啃秃的草皮。
同时,execute指令还提供了两个功能。一是你可以手动指定执行坐标,绝对或是相对都可以,这样你就可以任意挪移后续命令选择器的选择原点以及相对坐标系的坐标原点;二是你可以额外在命令里指定一个被检测的方块,也就是detect格式,只有当指定位置的方块和你预设的方块相符时,后续的命令才会执行。这样你就可以使得站在草地上的玩家变为创造模式:
- /execute @a ~ ~ ~ detect ~ ~-2 ~ grass 0 gamemode 1 @p
复制代码 (pc玩的多的看到这条命令的偏移会觉得很奇怪,但是貌似很神奇的,我这边execute玩家的y坐标起点在玩家脚+1的位置……也就是比pc高一格。至于为什么……问mojang去啊(╯‵□′)╯︵┻━┻,而且貌似仅限execute?怀疑bug?就不知道是我这边的问题还是共有的问题,求帮测) |
2./kill
杀死被选中的实体。
如果缺省目标(也就是你单纯输入/kill),将会杀死你自己。
在pe无法杀死创造模式的玩家。聊天框会提示“已清除*玩家名*”,但玩家并不会死去。
这大概是一个算得上著名的命令,然而因为错误的使用了它导致的惨剧也绝对不少。在填写选择器的时候,一定要仔细再仔细。
可以用它来快速清理世界中多余的实体。 |
3./summon
- /summon <实体名:string> [生成坐标:x y z]
复制代码 在指定位置生成指定生物。
和give一样,由于pe不支持对nbt的修改,命令参数比pc少一项。
值得注意的是,pe的实体ID和pc的两版实体ID均有差别,意思就是说,目前算着pe和过去版本,mc一共有三套实体ID体系…………
pe和pc的实体ID对照表见附录。
如果缺省坐标,则默认生成在执行坐标处。(没execute的话理解成生成在玩家坐标即可) |
4./teleport
- /teleport <目标实体:string>
- /teleport <目标坐标:x y z> [y旋转值:int] [x旋转值:int]
- /teleport <作用实体:target> <目标实体:target>
- /teleport <作用实体:target> <目标坐标:x y z> [y旋转值:int] [x旋转值:int]
复制代码 将指定实体传送到指定目标或实体处。
上个版本似乎没有,这个版本加入了游戏。
然后我发现teleport和tp的作用是一样的,前两条等价于pc版/tp的相应效果(pc版/teleport里选择器不可缺省),后两条等价于pc版/teleport的效果。亦即,你可以完全看做这两条传送命令的相对坐标均以目标实体为基准进行偏移。
向pe势力低头。
谁能告诉我搞两条命令出来的意义是什么。 |
5./tp
- /tp <目标实体:string>
- /tp <目标坐标:x y z> [y旋转值:int] [x旋转值:int]
- /tp <作用实体:target> <目标实体:target>
- /tp <作用实体:target> <目标坐标:x y z> [y旋转值:int] [x旋转值:int]
复制代码 将指定实体传送到指定目标或实体处。
可以很明显的看到指令按照“是否省略作用实体”和“目标为实体还是坐标”分为四种格式。当作用实体,也就是被tp的实体缺省时,玩家自身将作为作用实体被tp。
当目标为实体时,被tp的实体会继承其目标的朝向值(Rotation:[y-rot,x-rot])。而当目标为坐标时,这个值可以手动指定,不指定则继承被tp实体在tp之前的朝向。旋转值同坐标一样,可以为相对值。
著名指令之一。在pc,高频tp是和高频kill一样可以毁存档的存在,因此使用请谨慎,至少你不想一个意外的tp飞出去就再也找不到之前你在哪了,对吧? |
方块相关命令
1./clone
- /clone <起始坐标:x y z> <终止坐标:x y z> <目标坐标:x y z> [遮罩规则:string] [复制规则:string] [方块名:string] [方块数据值:int]
复制代码 根据选择的规则对选区方块进行复制操作。具体模式规则如下:
遮罩规则: filtered | 过滤模式。只有被选中的方块才会被clone命令影响。仅此模式方块名和方块数据值参数有效。 | masked | 遮罩模式。只有非空气方块才会被clone命令影响。 | replace | 覆盖模式。所有在选区内的方块都会受影响。 |
复制规则: force | 强制模式。强制执行命令,即使目标区域和原始区域有部分重叠。 | move | 移动模式。被影响的方块将不是被复制而是被移动到目标区域。 | normal | 一般模式。如果目标区域和源区域重合,clone将会失败。 |
当模式未被指定时,遮罩模式和复制模式的默认值分别为replace和normal。命令将会按照给定的两个点作为对角线建立长方体选区,并按照第三个点为目标区域中xyz值最小的点的方式选取相应大小的范围作为目标区域。选区最大选择范围为262144方块,也就是64*64*64或任何与之等同的体积。(与之成对比,pc版最大选中范围为32768方块。)
波及范围大时,由于光线重置和大量方块处理可能会导致卡顿。
请小心使用该命令,因为其效果不可撤销,或许将会对你的存档造成不可逆的严重毁坏,特别是pe现在确认坐标困难,请务必小心使用。 |
2./fill
- /fill <起始点:x y z> <终止点:x y z> <方块名:string> <方块数据值:int> [旧方块处理方式:string] [覆盖方块名:string] [覆盖方块数据值:int]
复制代码 根据选定的规则对目标区域放置指定种类方块。具体规则如下:
旧方块处理方式: destroy | 将选定区域全部替换为指定方块;并将原有所有方块变成其正常被钻石镐所破坏时会掉落的实体形态。液体和需要用剪刀收集的方块将会直接消失;基岩这类无法被破坏的方块也会直接消失。 | hollow | 将指定区域的六个表面替换为指定方块;并将其内部原有方块替换为空气。 | keep | 将指定区域的空气方块全部替换为指定方块。 | outline | 将指定区域的六个表面替换为指定方块;并保留其内部原有方块。 | replace | 将指定区域的原有“指定”方块替换为指定方块。仅该模式下覆盖方块名和覆盖方块数据值参数生效。 |
当模式未被指定时,模式的默认值为无参数的replace——这意味着将用指定方块覆盖选定区域包括空气在内的所有方块。当模式为hollow或是outline,而指定的范围x y z任一边的边长小于3方块时,它们的作用效果都和无参数的replace类似,将替换掉选区所有方块,因为并没有空间值得它们来留作中心了。
选区的最大值为32768。很有意思的是这倒是和pc保持了同步……
同样应当小心使用的命令。 |
3./setblock
- /setblock <坐标:x y z> <方块名:string> [方块数据值:int] [旧方块处理方式:string]
复制代码 根据选定的规则对目标位置的方块进行替换。具体规则如下:
旧方块处理方式: destroy | 将目标坐标的方块替换为指定方块;并将原有方块变成其正常被钻石镐所破坏时会掉落的实体形态。液体和需要用剪刀收集的方块将会直接消失;基岩这类无法被破坏的方块也会直接消失。同时将会发出方块被破坏时应有的音效。 | keep | 如果指定坐标为空气,则替换为目标方块。 | replace | 将指定坐标处的方块替换为目标方块。 |
比起pc缺了新方块nbt的指定功能。反正pe现在并不支持nbt……
(来自chyx的补充)pe在setblock大型花(double_plant)的时候,会同时覆盖目标坐标y+1那格的方块使得放置的花为完整植株。如果原有位置已经有一株大型花,则上半段和下半段可能不会属于同一种花(笑)。过去版本下玩家手动放置的大型花同样有此效果,这在当时被用于解密地图以及落沙电路等的搭建。现在已经不能手动放置了,但是可以用setblock强制替换。 |
4./testforblock
- /testforblock <目标坐标:x y z> <方块名:string> [方块数据值:int]
复制代码 检测指定坐标当前是否为指定方块。
如果数据值未指定,则匹配任意可能的数据值。比起pc缺了对方块nbt的检测。
目前在pe是相当没用的命令……玩家看这个输出不如自己去看一眼,然而又没有cb用来输出SuccessCount……
唯一的意义大约是可以让你知道你所选择的这个方块的方块数据值,以便在setblock或是fill里使用,而不需要额外查询资料。 |
5./testforblocks
- /testforblocks <起始坐标:x y z> <终止坐标:x y z> <目标坐标:x y z> [检测规则:string]
复制代码 根据规则检测指定源区域和目标区域的方块是否匹配,需求匹配的内容包括方块ID、方块数据值和方块nbt。具体规则如下:
检测规则: all | 匹配源区域与目标区域的所有方块 | masked | 用源区域所有非空气方块对目标区域进行匹配。源区域的空气方块可以和目标区域的任何方块匹配成功。 |
目前同样没啥用的命令。没用原因同它的孪生兄弟testforblock。 |
世界相关命令
1./setworldspawn
- /setworldspawn [新世界出生点坐标:x y z]
复制代码 将世界出生点设置到目标坐标。
这个位置被视作默认的出生点,当你没有在床上睡过觉或是床被阻挡/已遗失时,你将在这个坐标重生。同时也是多人模式下所有玩家共同默认的的出生点。
关于区块加载,我只想说我并没有弄清楚pe的区块加载机制……可以确定的是玩家加载范围和视距有关,世界出生点不加载区块。
如果坐标未被指定,将会以玩家当前坐标作为新的出生点。 |
2./time
- /time add <值:int>/time set <值:int>
- /time set <时间:string>
- /time query <时间:string>
复制代码 对时间的修改和查询。
/time add子命令:将当前时间值加上给定值并设置为新的当前时间。(这也是个接受值范围达到999999999的命令)
/time set子命令:将当前的daytime设置为指定值。可以填写day来指代时间值1000,或是night来指代时间值13000。如果大于24000,则与24000求余并以余数为指令的值代入。
/time query子命令:返回你所查询的时间值。允许的字串有三项,具体如下:day | 指令将返回当前已度过的游戏天数 | daytime | 指令将返回这一天中的时间 | gametime | 指令将返回游戏记录的总时间数,即day*24000+daytime |
当游戏选项“终为白日”开启时,游戏时间将被锁定为第1天的5000刻,即/time query day返回0,/time query daytime和/time query gametime返回5000。 |
3./toggledownfall
轮换当前游戏天气。
当此指令在晴天使用时,切换天气为下雨/雷雨;如果在下雨/雷雨时使用,则切换天气为晴天。
切换后的持续时长是随机的。 |
4./weather
- /weather <天气名:string> [持续时间:int]
复制代码 修改当前天气。
天气名接受的值包括clear、rain和thunder,分别对应晴,雨和雷雨。
持续时间最长只能为1000000,单位为tick。游戏将在指定的持续时间结束后将天气切换为另两种天气随机之一。如果持续时间留空,游戏将指定一个6000-18000间随机的持续时间。 |
其它命令与服务器命令
1./connect
开发者调试工具,用于连接测试服务器。目前wiki上没有相关介绍,根据格式给出了这样的猜测。估计和/wsserver是一类的东西。
基本上与正常游戏无关。 |
2./deop
取消指定玩家的服务器管理员身份。
我并不能get到多人环境于是没法测试是不是真的能够用选择器……包括此下多人命令我都无法给出测试结果,见谅。 |
3./help
- /help <命令名:string>
- /help [页数:int]
复制代码 显示帮助列表或某一具体命令的帮助。
命令名模式下,如果所需要查询的是非单字节命令(如time query),需要用""将命令内容包括,即/help "time query"。
1.0修复格式问题,可以返回正确的命令格式了。返回内容为
|
4./list
列出当前游戏内玩家。
单人也可以执行此命令。
可选参数到底是啥我没试出来……按照wiki说是uuids,如果是uuids这个string的话我这边结果是“未执行”,不知是否需求多人环境。如果这个可选项被指定,在列出玩家名的同时,还会列出其对应的uuid。 |
5./locate
返回你所选取结构的最近坐标。
可是呢,现在这个命令支持的结构名只有stronghold一个。
然后呢,输入该命令后游戏提示:未知命令。
哦。 |
6./op
将某人设置为服务器的管理员。
原则上命令只有单人游戏下开启允许作弊或是多人游戏下管理员身份才能够使用。不是很清楚pe的服务器是不是像pc一样有op分级。意外的得到了pe在联机条件下就有op身份的设置的消息,如果没有主机的/op授权,是没办法在开了作弊的存档作弊的。
同样也不是很确定是否真的能用选择器。此点仍抱存疑,欢迎帮测试??? |
7./say
在聊天栏输出指定的语句。
输出格式为[玩家名] *指定语句*,和正常玩家说话<玩家名> *指定语句*有所差别。
在pe中,如果一个没有被命名牌命名的非玩家实体被execute执行了一条say,那么玩家名的位置将会空置,即输出“[] *指定语句*”。如果被命名过,则在玩家名的位置显示其命名。
常用于命令测试。 |
8./tell
- /tell <接收者:target> <信息:string>
复制代码 对指定玩家发送一条消息。这条消息只有你们两个人才能看见。
对发送方:“你悄悄地对*玩家名*说 *消息内容*”;
对接收方:“<*命令执行者*> *命令执行者*悄悄地对你说 *消息内容*”。 |
9./wsserver
开发者调试工具,用于连接一个服务器来自动化命令测试。(虽然我觉得测试的结果很有毒……)
基本上与正常游戏无关。 |
那么到这里,目前pe的全命令已经说完了。
坑其实开的挺早的,上次做到一般测试到崩溃弃了,于是这次又捡起来继续做,然而这还不算完,毕竟还有pe的目标选择器参数没测。我跟你讲这个东西我一点也不想测,一点都不想!上次就是实选把我搞疯的!所以能不能看得到实选的更新……看缘分……
还是偏wiki的写法,一旦需要写命令列表我写帖子就这德行,改不过来了大概。拿来查就好,如果没基础的话别当教程看,去看Ender的链接,大概更适合新手。
pc和pe,我反应得过来的差别,都用粗体字标出了。不排除有些地方可能我没测试的到,或是我遇到bug了导致结果异常;如果发现请提出与我,我会给以更正。毕竟是带着pc的观点看pe的东西,总会有一些微妙的感觉,感觉的内容叫“这**简直在坑爹”……于是测到后面都不能心平气和的测试了,也是有毒。就是你知道pc和pe的格式和规矩大部分相同,少部分不同,但是你就是猜不到哪里不同……
pe现在的命令只是刚刚萌个芽,没有cb就无从谈及投入到地图制作实用。于是就等咯~
全过程深刻的感受到学pc命令的时候能站在前人探出的路上是多么幸运。
嘛,能看到这里,忍住了我全程的唠叨并且没有点x跑路的人,惯例的,一个抱抱!
附录:pe实体id对照表
有区别者给予加粗,区别较大者给予标红。
pe1.1后大部分实体ID统一至pc相应实体ID,仅有少量有所区别,也一并予以标出。
实体ID(pe1.0及以前) | 实体 | 实体ID(pc1.11/pe1.1后) |
arrow.skeleton | 箭 | arrow |
bat | 蝙蝠 | bat |
blaze | 烈焰人 | blaze |
/ | 船 | boat |
cavespider | 洞穴蜘蛛 | cave_spider |
chicken | 鸡 | chicken |
/ | 命令方块矿车 | command_block_minecart |
cow | 牛 | cow |
creeper | 爬行者 | creeper |
donkey | 驴 | donkey |
dragon | 末影龙 | ender_dargon |
endercrystal | 末影水晶 | ender_crystal |
enderman | 末影人 | enderman |
endermite | 末影螨 | endermite |
/ | 尖牙 | evocation_fang |
/ | 唤魔者 | evocation_illager |
ghast | 恶魂 | ghast |
guardian | 守卫者 | guardian |
guardian.elder | 远古守卫者 | elder_guardian |
horse | 马 | horse |
husk | 尸壳 | husk |
irongolem | 铁傀儡 | villager_golem |
leashknot | 栓绳结 | leash_knot |
lightningbolt | 闪电 | lightning_bolt |
/ | 羊驼 | llama |
magmacube | 岩浆怪 | magma_cube |
minecart | 矿车 | minecart |
minecartchest | 运输矿车 | chest_minecart |
minecarthopper | 漏斗矿车 | hopper_minecart |
minecarttnt | TNT矿车 | tnt_minecart |
mule | 骡子 | mule |
mushroomcow | 哞菇 | mooshroom |
ocelot | 豹猫 | ocelot |
pig | 猪 | pig |
pig_zombie | 僵尸猪人 | zombie_pigman |
polarbear | 北极熊 | polar_bear |
potion.experience | 经验瓶(投掷物) | xp_bottle |
rabbit | 兔子 | rabbit |
sheep | 绵羊 | sheep |
shulker | 潜影贝 | shulker |
silverfish | 蠹虫 | silverfish |
skeleton | 骷髅 | skeleton |
skeleton.stary | 流髑 | stary |
skeleton.wither | 凋灵骷髅 | wither_skeleton |
skeletonhorse | 骷髅马 | skeleton_horse |
slime | 史莱姆 | slime |
snowball | 雪球(投掷物) | snowball |
snowgolem | 雪傀儡 | snowman/snow_golem |
spider | 蜘蛛 | spider |
squid | 乌贼 | squid |
thrownegg | 鸡蛋(投掷物) | egg |
thrownpotion | 药水(投掷物) | potion/splash_potion |
tnt | TNT(实体) | tnt |
/ | 恼鬼 | vex |
villager | 村民 | villager |
/ | 卫道士 | vindicator_illager/vindicator |
witch | 女巫 | witch |
wither.boss | 凋灵 | wither |
wolf | 狼 | wolf |
xporb | 经验球 | xp_orb |
zombie | 僵尸 | zombie |
zombie_villager | 僵尸村民 | zombie_villager |
zombiehorse | 僵尸马 | zombie_horse |
写完以后最大的感触就是“pe这实体id命名法太乱套了吧……”
[groupid=546]Command Block Logic[/groupid]