《我的世界》【教程】指令教程for Java版1.12.2

share

Moore940:下面给大家一组指令供学习用(需要高频):
scoreboard players tag @a add sDiamond {SelectedItem:{id:"minecraft:diamond",Damage:0s}}
给所有手持钻石的玩家sDiamond标签(即tag),SelectedItem遵从“物品通用标签”(见setblock——箱子),表示玩家手持物品
effect @a[tag=sDiamond] minecraft:night_vision 11 0 true
给予有sDiamond tag的玩家11秒夜视,1级,无粒子
*新指令介绍:effect <玩家> <效果名> [时间] [等级] [FLAG]
给予玩家名为“效果名”的效果“时间”秒,等级是“等级”-1,FLAG只能为true/false,为true时效果没有粒子且不在屏幕右上角显示
查询效果名快捷通道:状态效果
scoreboard players tag @a remove sDiamond
移除所有玩家身上的sDiamond标签,放置只拿一次钻石就获得永久夜视
————————————————————————————————————
给予手持钻石的玩家夜视效果 发布于 2019-12-15 04:43:32

Moore940:tag的强大之处不止这些,它甚至还可以指定选择器做不到的东西!它可以指定“当实体NBT与提供NBT匹配时,才给予实体一个tag”
例子:/scoreboard players tag @e add a {Health:1.0f}
给所有声明只剩1心(2血)的生物添加名为a的标签 发布于 2019-12-15 04:39:12

Moore940:这是因为啊,tag是要反复添加的,新生成的实体没有enemy这个tag,于是就不能被选择
于是我们需要高频激活三个命令方块,但是命令方块是很强的!!我们不需要红石高频,我们命令方块能自己自动高频执行,而且还能规定执行顺序!!(如果用红石激活的话,命令方块的指令执行顺序跟坐标位置有关)
——————————————————————————————————————————————————
我们来学习剩余两种命令方块:
连锁型命令方块(左边)和循环型命令方块(右边)

分别可以靠指令:
/give chain_command_block
&
/give @p repeat_command_block
来获得
当然了,你也可以用命令方块自带的ui来操作

(点左边切换颜色,右边切换是否保持开启,中间切换是否受制约)
当紫色命令方块被激活时,它会循环执行它里面的命令,每游戏刻(0.05s)为一个周期。当绿色命令方块被激活时,若在任何方位有一个箭头指向它的命令方块被激活,它就会被执行它内部的指令,如果是“条件制约”模式,则对箭头指向它的命令方块还有一个要求:它内部的指令执行成功
然后我们键入指令,再运行kill指令:

成功了!
但是你或许会发现,这样子很吵:

整个聊天框框都是命令方块的执行结果,怎么办呢?
运行指令:
/gamerule commandBlockOutput false
提示全没了~
*新指令介绍:gamerule <游戏规则名> <值>,修改名字是“游戏规则名”的游戏规则的值为“值”
commandBlockOutput的意思是命令方块输出,false是个布尔值,意为“假”(理解为“关”也是可行的)
提示:按Tab可以补全除了选择器和NBT以外的指令部分(如果可以填入多个不同的参数则可以循环尝试填入匹配的参数) 发布于 2019-12-15 04:38:32

Moore940:blockdata孪生亲姐姐:blocksdata <x1> <y1> <z1> <x2> <y2> <z2> <NBT>
————————————————————————————————————————
今天我们来讲tag。
Q:什么是tag?
A:在没有使用指令的情况下,整个原版mc世界里的所有实体都是没有tag的(tag只能用于实体),tag可以用来标记一类实体。
我们之前学习到,选择器参数不能多用,所以我们以前不可以实现“@e[type=zombie,type=skeleton,type=creeper]”的效果,但是有了tag,我们就能实现类似的效果了——我们可以分别给僵尸、骷髅、苦力怕都加上一个tag,由于我们没给其它实体加上这个tag,所以拥有这个tag的实体就一定是僵尸、骷髅、苦力怕中的一种。
给实体加/移除tag的指令:
/scoreboard players tag <玩家> add/remove <Tag名>
“玩家”参数可以为选择器。
于是乎,我们分别运行这三条指令,就能标记所有的僵尸骷髅苦力怕了:
/scoreboard players tag @e[type=zombie] add enemy
/scoreboard players tag @e[type=skeleton] add enemy
/scoreboard players tag @e[type=creeper] add enemy
*新指令介绍:kill <玩家>(“玩家”参数可以为选择器),杀死指定“玩家”
我们运行一下指令:/kill @e[tag=enemy]
*新选择器参数介绍:tag,当实体有这个tag时将会被选择
奇迹发生了,世界上的僵尸骷髅苦力怕都消失了!
如果你的世界现在是处于晚上且会自然刷怪的话,你会发现还有漏网之鱼仍苟延残喘
再运行/kill @e[tag=enemy]
嗯?没有用??
(本节配图被我吃了) 发布于 2019-12-15 04:35:32

Moore940:其实我不应该用“项”和“值”来描述nbt的吧,现在我有种想重新把nbt部分写一遍的冲动,项在wiki中被称作“标签”,是有类型的,值在wiki中被称作“辅助内容”,具体可以走快捷通道:NBT%E6%A0%BC%E5%BC%8F
另外Wiki的“区块格式”一栏列出了所有实体/方块的NBT,如果大家只在我的帖子里记“标签”(项)的话效率是极度低下的,建议去看区块格式 发布于 2019-12-15 03:48:52

Moore940:留一楼给自己顶帖 发布于 2019-12-15 01:29:42

Moore940:有空的话把计分板、tag和execute讲了,之后讲一些花里花俏的指令(比如particle、effect) 发布于 2019-12-15 01:20:02

Moore940:
学了选择器就来学一个新的指令:
entitydata <实体> <NBT>
可以把实体的NBT更改
例子:/entitydata @e[type=skeleton] {Health:0.0f},秒杀所有骷髅
这条指令它有一个孪生兄弟:blockdata <x> <y> <z> <NBT>
用来修改方块的NBT,我就不细说了。
如果NBT处填为{}(空),指令就会执行失败(不论成功与否都会显示这个实体的全部NBT信息,可以用来调试或者是学习) 发布于 2019-12-15 01:19:42

Moore940:鉴于明天我可能会突然暴毙,所以我就把选择器这一栏给更新了吧
在此之前我们先学一条新指令:/say
say指令有两种用法(以下例子都是在聊天框框里面执行的):
1:/say Hello
聊天框框输出:
[你的游戏名] Hello
2:/say @p
聊天框框输出:
[你的游戏名] <你的游戏名>
————————————————————————————————————
吃惊!/say @p不是应该输出[游戏名] @p吗,为什么会输出我的游戏名?!
原因是:当say的内容为选择器时,输出的文字就会变成选择中的全部实体的名称
*什么是选择器?
选择器可以用来代指实体(当然也可以代指玩家),它可以筛选出一类的实体,比如说“我想将全部僵尸传送到我这里”,这个目的要如何实现呢?
这里有一条指令:/tp <玩家> <玩家b>,可以把玩家传送到玩家b。可是,怎么给<玩家>这个参数填入“全部僵尸”呢?如果我们直接输入“僵尸”,那么指令肯定会执行失败——没有这个玩家呀,于是,选择器的作用就在这里体现了:我们可以把@e[type=zombie] 填入<玩家>,得出指令:/tp @e[type=zombie] 你的游戏名或@p,运行指令,所有的僵尸都到了我们身边。


(这里的僵尸其实是浮空的,因为tp有一个动画,而我想要截图截下结果也很难)
————————————————————————————————————————————————
但是这样就不行:
发布于 2019-12-15 01:16:02

看我话风突变:难得的干货贴,加油! 发布于 2019-12-15 01:13:12

Moore940:
第四节课:咱们不讲指令,咱们讲选择器
明天更新 发布于 2019-12-15 00:25:42

Moore940:接下来了解一个箱子的NBT:Items
Items标签指定了箱子内部的物品,是一个包含Compound的List
每个Compound都遵循物品的NBT格式,即{id<String>:方块id,Count<Byte>:数量,Damage<Short>:损伤值,可选,Slot<Int>:对应格子,可选}
/setblock ~ ~ ~ chest 0 replace {Items:[{id:"minecraft:diamond",Count:1b,Damage:0s,Slot:15}]}
放置一个带有一颗钻石的箱子
当然你也可以试试这条指令:
/give chest 1 0 {BlockEntityTag:{Items:[{id:"minecraft:diamond",Count:1b,Damage:0s,Slot:15}]}}
试了以后你或许就能学会BlockEntityTag这个NBT了
更多NBT可以去区块格式里学 发布于 2019-12-15 00:25:32

Moore940:第三第四条指令:/setblock,/fill
告诉大家一个秘密,在命令方块里的指令不需要打斜杠
setblock和fill都是放置方块的指令

用help <指令>了解一下它们的用法。
fill的作用是把(x1,y1,z1)-(x2,y2,z2)之间的方块全部替换成“方块名”,数据值就是特殊值,状态即方块状态(方块状态指定了一个方块的状态,如朝向,快捷通道:%E6%96%B9%E5%9D%97%E7%8A%B6%E6%80%81)
旧方块处理方式有好几种:

destroy表示以模拟玩家打破方块的形式替换掉旧方块(物品多半会掉落),hollow和outline我记不大清了,一个是“框架”,一个是“火柴盒”式的填充吧(又或是都是“火柴盒”,一个会替换掉中间内容,一个不会?),keep是只替换空气,replace是不管怎么样都替换(如果填replace的话还可以再跟两个参数,一个是被替换的方块,一个是被替换方块的数据值,数据值填-1表示所有数据值都接受,如果填了后两个参数就表示只会替换被指定的方块)
数据标签即NBT
setblock就是改了一下坐标部分,它只能放置一个方块,其它和fill一样 发布于 2019-12-15 00:24:32

Moore940:
同样的,生物也能有属性,你们可以去之前的快捷通道查一下对应的属性,不同的是,要修改生物的NBT得靠Attributes标签(意思是命名为Attribute的NBT):
Attributes是一个List,包含Compound
例子:/summon zombie ~ ~ ~ {Attributes:{Name:"generic.attackDamage",Base:20.0d}}
(d是用来声明类型为Double的,可以不写),Name和AttributesModifiers章节里的AttributeName作用相同,Base即Amount(可以说实体的属性修改是非常简单了)。
想了解实体的NBT可以走快捷通道:区块格式 发布于 2019-12-15 00:22:32

Moore940:想要知道更多的NBT可以在wiki上查
———————————————————————————————————
我们要学的第二条指令:summon
格式:/summon <实体名> [x] [y] [z] [NBT]
一旦填了x就得把xyz全部参数填上。
作用:在(x,y,z)的位置生成一只“实体”(实体(Entity)包括在Minecraft中所有动态的、移动中的对象。快捷通道:实体)
xyz默认为指令执行的坐标
那么开始我们的指令之旅吧!
————————————————————————————————————
往命令方块里面输入/summon zombie

按按钮!


僵尸:mmp
另外,跟give指令一样,/summon minecraft:zombie的作用也和/summon zombie的作用一致
/summon zombie ~ ~ ~ 也能达到类似的效果呢~
Q:不是填xyz吗,~是数字吗?
A:~代表相对(于指令执行者的)坐标
也就是说呀,/summon zombie ~ ~24 ~ 可以召唤一只死僵尸(雾)
如图:


接下来我们把参数填满,/summon zombie ~ ~ ~ {}
我们来学一个描述生物生命的NBT——Health(填小数,Float)


这也能召唤一只死僵尸呢 发布于 2019-12-15 00:21:52

Moore940:List项是由多个类型相同的项组成的,意味着你不可以ench:[0,{},3.0f]
另外List项里的东西不是可以没有名字,是一定不能有名字
Compound项则是内含多个项,但是每个项都要有名字。
Compound项可以储存List项
List项也可以储存Compound项
Compound也能储存自身(List不能)
也就是说{a:{b:[{c:[1,1]},{d:{e:[1,2,3]}}]}}是可行的
(e在d里,d和c在b里,b在a里) 发布于 2019-12-15 00:09:42

Moore940:妈耶,NBT真的超级难解释 发布于 2019-12-15 00:08:22

Moore940:项什么的可能有点难理解,但是你们都要学会啊!!
{a:{b:1}}此时a是一个Compound项,Compound项的特点是:被花括号扩住
{a:[1,2,3]}此时a是一个List项,List项的特点是:被方括号扩住
{a:[{},{}]}这个a也是一List项,内部有Compound项,Compound项的名字可以省略不写
{a:1}此时a是一个Int项,因为1是整数,Int是Integer的简写
{a:1.0}此时a是一个Double项,因为1.0是个浮点数,没有被声明为1.0f(声明了就是Float项),它的精度比Float项要高
{a:1l}&{a:1b}&{a:1s}此时a是一Long/Byte/Short项,因为1l/1b/1s声明了它的类型,它们虽然都是整数,却和彼此及Int项都不同 发布于 2019-12-15 00:08:02

Moore940:那么give就学得七七八八了,我们再来学一个NBT吧!
AttributeModifiers(这个NBT有一定难度)
这个NBT描述了物品的属性(快捷通道:Player.dat格式#.E4.BF.AE.E9.A5.B0.E5.B1.9E.E6.80.A7与%E5%B1%9E%E6%80%A7)
这个NBT本身是一个List项,所以我们应该这样写他:{AttributeModifiers:[]}
接下来我们要给它填充Compound项:{AttributeModifiers:[{}]}
然后我直接在这里告诉大家这个Compound项内需要填充的NBT:
Operation(填整数):运算模式,解释了属性是以什么方式叠加到实体身上的,为0是是加,1是乘,2是原来的属性*(1+数值)
UUIDLeast和UUIDMost(填整数):填个UUID,其实没什么用,所以我就不解释了,都填1吧
Name(填字符串):没用,乱填就行了
另:字符串表示方法:"文字内容",可以用来表述一句话、一些字符之类的
AttributeName(填字符串):属性名,可以去快捷通道里面查,generic.attackDamage是表示攻击伤害
Amount(填小数或整数):增加多少属性,可以填负数
Slot(填字符串):在什么格子时生效,不填就一直生效,mainhand是当物品在在主手上时生效
/give minecraft:diamond 1 0 {AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Name:"atdm",AttributeName:"generic.attackDamage",Amount:10,Slot:"mainhand"}]}
得出以上指令,给予最近的玩家一颗拿在主手上就+10近战攻击的钻石,也就是说一拳就11伤害(如图)

——————————————————————————————————————————
ench和AttributeModifiers的结合:

/give @p minecraft:diamond 1 0 {AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Name:"atdm",AttributeName:"generic.attackDamage",Amount:10,Slot:"mainhand"}],ench:[{id:32,lvl:1s}]}
(ench和AttributeModifiers的顺序可以调换,记得连着他们的值一起调换(从[到]都是他们的值))
——————————————————————————————————————————————
NBT有很多,记得多查WIKI!
give章节到此结束 发布于 2019-12-15 00:06:42

Moore940:


不给发,醉了 发布于 2019-12-15 00:04:02

Moore940:
我们扩充一下参数,全部填满!
给大家解释一下损伤值的意思:在普通物品中表示“特殊值”,比如彩色羊毛的id其实都是一致的(id为minecraft:wool,给予最近玩家一个白色羊毛的指令:/give wool 1 0 {}),不一样的是它们的特殊值(损伤值,给予橙色羊毛的指令:/give @p wool 1 1 {},此时特殊值从0变为1),在工具类物品中表示物品被使用过的次数,填0表示工具完好无损。
钻石不存在特殊值,你可以自己试试/give @p minecraft:diamond 1 1
NBT是mc中用来储存数据的一种结构,在指令中的语法近似于json。
nbt的作用说得简单点就是:描述一个物品/实体。
nbt的格式:{项:值,List项:[{项:值}],Array项:[值,值...]}
比如一个物品有附魔,那么它就会有一个描述它附魔内容的nbt(那就是ench,下面讲)。
好了,这条指令和上一条其实没区别
——————————————————————————————————————————————————
但是我们要学会扩充!

ench是一个用来描述附魔的nbt,它现在用来描述钻石的附魔了
ench是一个List项,所以它应该这样写:ench:[{项1:值1,项2:值2,...},{项3:值3...}]
像{项3:值3}这样的处于List项内部的NBT我们称其为Compound项,其实整个{ench:[...]}就是一个Compound项
然而在ench内的Compound项里面只有两个nbt是有用的:id和lvl,分别描述附魔的id(数字)和等级
那么我们怎么知道附魔的id呢?参见Wiki附魔章节(快捷通道:附魔#.E9.AD.94.E5.92.92.E5.88.97.E8.A1.A8)

可以看到,效率附魔的id为32,也就是图中的那样,然后图中我们填写的lvl(等级)为1s,1s表示short类型的1
什么是类型?其实类型这玩意本不应该存在,因为在这里很难解释,就这样说吧:因为项lvl只接受short类型的整数,所以填1s
执行指令,得到以下结果:
发布于 2019-12-15 00:02:22

figo828:感觉讲的还挺易懂的,不过你可以先讲一下选择器和相对坐标,相对于give什么的更常用(或者说更加基础却重要,这个不讲好多指令都没法用的好,可以说是一把钻剑和两颗钻石的区别,钻石剑只能打怪,钻石却有很多可能) 发布于 2019-12-15 00:00:22

figo828:感觉emmmmm怎么说呢……要累计出足够的指令储量的话至少也要个半年左右,光靠你一个人肯定做不完耶……这种贴子感觉还挺多的,建议你不要讲的太基础,基础的帖子满地都是,我觉得你可以讲一些进阶的然后发一些教程的链接之类的,不然感觉这种帖子的使用价值甚至还不如那些将指令实际运用到游戏里的贴。不过你如果讲的好且有毅力的话,祝你好运吧,加油。 发布于 2019-12-14 23:59:32

Moore940:我有点后悔没留个目录楼 发布于 2019-12-14 23:59:32

Moore940:
我们往命令方块里输入指令:/give minecraft:diamond,按一下按钮,运行指令!
可以看到玩家的物品栏里多了一个钻石
这也是我们将要学的第一条指令:give指令
give指令的格式是:/give <玩家> <物品> [数量] [损伤值] [NBT]
被尖括号括住的参数是必须写的,方括号括住的可以省略,,数量默认为1,损伤值默认为0,NBT默认为空
那么我们刚才的指令:/give @p minecraft:diamond,是什么意思呢?
“给予离执行者(命令方块)最近的人一个钻石物品”
Q:什么最近的人,不是/give <玩家>吗
A:@p其实是一个选择器,它表示离执行者最近的人,有关选择器的内容会在以后讲。大部分指令里的<玩家>参数都可以被替换为一个选择器,选择器代表的是一组/一个实体。实体可以是生物、鱼钩的非方块物品,有关实体的内容会在summon章节讲到。
好了我们继续,minecraft:diamond表示“钻石物品”,所以说,整条指令的意思就是“给予离执行者(命令方块)最近的人一个钻石物品” 发布于 2019-12-14 23:59:22

Moore940:上面那张图片里聊天框框里的指令是:/give command_block
事实上它也可以被写为:
/give @p minecraft:command_block

如图,这是一种严谨的写法,如果你比较懒,也可以省略前缀不写(原版不写前缀是没有关系的)
指令运行完后我们将获得一个普通的命令方块,命令方块一共有三种,其余两种会在以后介绍。————————————————————————————————————————————

命令方块可以被红石信号激活,也可以靠右键时打开的ui点击“红石激活”切换为“保持开启”来让这个命令方块一直处于被红石激活的形态。需要注意的是,普通的命令方块只有从/未被激活的状态转换为被激活的状态时才会执行它内部的指令,所以说“保持开启”只会令它执行一遍指令。 发布于 2019-12-14 23:57:52

Moore940:上个帖子莫名被吞了,说是有违规信息
所以说我又发了一贴,为了防止被吞,我长话短说:
访问我发的连接的方法:minecraft-zh点gamepedia点com/+后缀
如:minecraft-zh点gamepedia点com/%E5%91%BD%E4%BB%A4
此帖子不会是“指令大全”,如果你希望了解到所有指令,不如去查一下wiki(快捷通道:%E5%91%BD%E4%BB%A4)
如果你已经准备好了,那么我们就开始吧!
发布于 2019-12-14 23:57:22

更多《我的世界》【教程】指令教程for Java版1.12.2相关问题

问题:《我的世界》【教程】指令教程for Java版1.12.2

回答:老大,我还没死你就开始挖我坟了! 详情 >

问题:《我的世界》关于基础指令的教程

回答:e站上没找到,看看其他人能不能找到 详情 >

问题:「教程」我的世界命令方块指令大全

回答:而且还不能确定,是被万解还是始解砍死的 详情 >

问题:《我的世界》下哪个呀,刚在官网买了89的合集

回答:花姐就算了小白纯粹就是狗屎运或者说他 碰巧撞见了 详情 >

问题:《我的世界》兄弟们,打算入正,谁能帮忙科普一下这俩的区别?

回答:不好意思,看错人了 详情 >