[指令日记]零基础的mc1.13指令教程

指令解析:
/gamemode adventure @a[name=!CHElover_C60,gamemode=!adventure]
此处选择所有名字不是CHElover_C60且游戏模式不为冒险模式的玩家
!符号表示反选
如:name=CHElover_C60表示选择名字是CHElover_C60的目标,而name=!CHElover_C60表示选择名字不是CHElover_C60的目标
gamemode参数同理。
type参数也支持这种用法,而其他非计分板参数不可以使用这种做法


关于type参数
type后接的是实体类型
关于实体类型,这里也有查看的方法,不再一一列举,而是简述方法
打出/summon指令,按下空格,再将鼠标放到对应名字上即可


注:实体里除了这些东西,还有玩家 player ,比如@e[type=player]等价于@a。
x_rotation与y_rotation不再过多解释。查看方法为按下F3键,在左侧中间第四行可以找到




例:
/kill @e[type=!player] ---杀死所有非玩家实体
/give @a[x=0,y=62,z=0,distance=..10,x_rotation=-30..30,y_rotation=-120..-60] diamond ---给所有距离点(0,62,0)10格以内的面向东方的玩家一颗钻石

楼主 化学爱好者_C60  发布于 2019-01-30 20:42:00 +0800 CST  
漏了一个参数,level,用来指定玩家的等级
用法类似于其他数值型参数,如level=3..5表示选中3~5级的玩家


然后是limit和sort参数
之所以单独把这两个参数跳出来,是因为这两个参数决定了目标选择器本身的性质
先说limit
这个参数用于确定目标选择器能选择的最大目标数
如@a[limit=5],那么这个目标选择器最多只能选择5名玩家
sort参数决定了目标选择器的选择方式,一共有4种类型
arbitrary 默认排序
furthest 距离目标点的距离排序,最远的优先选取
nearest 距离目标点的距离排序,最近的优先选取
random 随机选取


例:
/kill @a[limit=1,sort=furthest] ---杀死离指令执行点最远的玩家
/tp @e[type=sheep,distance=..100,sort=randon,limit=3] 0 62 0 ---在离指令执行点100格的范围内随机选取最多3只羊到(0,62,0)

楼主 化学爱好者_C60  发布于 2019-01-30 21:05:00 +0800 CST  
与计分板和队伍有关的参数,以及nbt,会在讲到对应部分时介绍到。
这一节就到这了,我该想想今天该讲什么了

楼主 化学爱好者_C60  发布于 2019-01-30 21:11:00 +0800 CST  
5、方块的放置与实体的生成

楼主 化学爱好者_C60  发布于 2019-01-30 21:17:00 +0800 CST  
我想在这个命令方块上面放一个草方块


我们需要打开背包,然后。。。





好吧,不闹了
打开命令方块,输入如下指令
setblock ~ ~1 ~ grass_block


然后激活命令方块


楼主 化学爱好者_C60  发布于 2019-01-30 21:27:00 +0800 CST  
setblock 指令格式:
/setblock x y z (方块名)[数据值][nbt标签] [旧方块处理方式]
其中方块名、数据值、nbt标签之间没有空格
有些方块没有数据值,有些方块没有nbt标签
在实际使用中,数据值用[]表示,nbt标签用{}表示
对于既拥有数据值又拥有nbt标签的方块,并且想要同时填写这两项内容,数据值和nbt标签的顺序不能反
旧方块的处理方式有三种:destroy,keep,replace
destroy 作为处理方式时,如果选定的位置有方块,该方块就会被破坏并掉落(类似于被挖掉)
keep 作为处理方式时,如果选定的位置有方块,则不放置方块
replace 是默认的处理方式,当它作为处理方式时,会替换掉目标方块


例:
/setblock 1 2 3 chest[facing=north] keep ---若(1,2,3)处无方块,则在该处放置一个面向北的箱子
/setblock ~ ~1 ~ spawner{SpawnPotentials:[{Entity:{id:"villager"}}]} ---在指令执行点上方1格的位置放置一个村民刷怪笼并替换原有方块

楼主 化学爱好者_C60  发布于 2019-01-30 21:56:00 +0800 CST  
现在我又遇到了一个问题
setblock一次只能放置一个方块,但一些工程中,往往要放置大量方块,这个时候不可能用setblock一个一个放置吧
这时,我们可以试试下一个指令,fill
打开命令方块,输入如下指令
fill ~-1 ~1 ~-1 ~1 ~3 ~1 dirt


激活命令方块后,命令方块上面就多了一个3x3x3的泥土立方体


楼主 化学爱好者_C60  发布于 2019-01-30 22:03:00 +0800 CST  
fill指令解析:
/fill x1 y1 z1 x2 y2 z2 (方块名)[数据值][nbt] [填充方式]
/fill x1 y1 z1 x2 y2 z2 (方块名)[数据值][nbt] replace (方块名/#方块标签)[数据值][nbt]
这里的关系类似于setblock指令
该指令由两个坐标确定一个长方体区域,并在这个长方体区域内填充方块。
这里的填充方式除了destroy、keep、replace以外,还有hollow、outline
hollow 将外边框替换为对应方块,内部替换为空气
outline 将外边框替换为对应方块,内部不变
这里我搭了两个东西(左侧为hollow,右侧为outline)


按下按钮后




第一条指令到此为止
第二条指令也有很大的作用
它会将后者替换为前者
比如,在一个命令方块上面的5x5x5的空间里,有一些泥土,而我想把它们变成钻石块


命令方块中输入指令
fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace dirt


激活命令方块后


另一种情况,如果不是同一种方块,但是是同一个类型的方块(比如全部是木板)


在命令方块中输入指令
fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace #planks


激活命令方块后


楼主 化学爱好者_C60  发布于 2019-01-30 22:31:00 +0800 CST  
/fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace #planks
这一条指令相当于囊括了6条指令
/fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace oak_planks
/fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace birch_planks
/fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace spruce_planks
/fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace jungle_planks
/fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace acacia_planks
/fill ~-2 ~1 ~-2 ~2 ~5 ~2 diamond_block replace dark_oak_planks


最后举几个fill应用的例子
/fill 1 1 1 10 11 12 air destroy ---将(1,1,1)和(10,11,12)两点确定的长方体区域内的所有方块破坏
/fill ~1 ~-1 ~1 ~-1 ~-1 ~-1 grass_block replace dirt ---将脚下的3x3范围内的泥土变为草方块

楼主 化学爱好者_C60  发布于 2019-01-30 22:41:00 +0800 CST  
又一个实际应用中的问题
我刚刚搭了一个火柴盒,虽然它很丑,但是我想迅速地造更多的一模一样火柴盒,我该怎么办?


首先,我获取了这个火柴盒的一对体对角的坐标(图中绿宝石块) (14,56,48)(10,59 52)
然后我又确定了一个坐标(图中钻石块)(4,56,48)


然后输入指令/clone 14 56 48 10 59 52 4 56 48



楼主 化学爱好者_C60  发布于 2019-01-30 22:55:00 +0800 CST  
clone指令解析:
/clone x1 y1 z1 x2 y2 z2 x y z [复制方块种类] [复制模式]
/clone x1 y1 z1 x2 y2 z2 x y z filtered (方块名/#方块标签)[数据值][nbt] [复制模式]
前面的两个坐标选定一个长方体区域,第三个坐标指定要复制到的目标地点的一个角
指定的目标区域的角为选定长方体中x、y、z均为最小的一侧
复制方块种类有filtered、masked、replace三种
filtered 仅复制选定的方块或选定类别的方块
masked 复制非空气方块
replace 复制所有方块(默认)
复制类型有三种,force、move、normal
force 强制复制,即便选定区域与目标区域重叠
move 清空选定区域,将原本的方块移动到目标区域
normal 常规复制,但当选定区域与目标区域重叠时,会无法复制

楼主 化学爱好者_C60  发布于 2019-01-30 23:11:00 +0800 CST  
例:
/clone 1 2 3 4 5 6 7 8 9 flitered dirt move ---将坐标(1,2,3)与(4,5,6)指定的长方体区域内的泥土转移至以(7,8,9)为角的长方体内
/clone 3 3 3 5 6 5 2 2 2 replace force ---将坐标(3,3,3)与(5,6,5)指定的长方体区域内方块强行复制到以(2,2,2)为角的长方体内

楼主 化学爱好者_C60  发布于 2019-01-30 23:18:00 +0800 CST  
现在我创造的这个世界里还是缺少生物啊,一望无际的沙石
我觉得我可以召唤一些动物
这个时候就可以使用summon指令
/summon sheep

然后一只羊就出现在我面前


楼主 化学爱好者_C60  发布于 2019-01-30 23:21:00 +0800 CST  
summon指令解析:
/summon (实体) [x y z] [nbt标签]
比较简单,如果坐标空出,则默认在指令执行出生成


例:
/summon lightning_bolt 0 62 0 ---在(0,62,0)处召唤一道闪电
/summon item ~ ~ ~ {Item:{id:diamond,Count:1},PickupDelay:32767} ---在指令召唤处生成一个捡不起来的钻石

楼主 化学爱好者_C60  发布于 2019-01-30 23:29:00 +0800 CST  
今天就到此为止了,我要认真想想明天该讲什么了
@天空之城TCD斗胆问下,这个帖子能精吗

楼主 化学爱好者_C60  发布于 2019-01-30 23:34:00 +0800 CST  
最近时间比较紧,现在刚刚到家,官启刚刚抽了,不知道把1.13.2的游戏本体弄哪去了正在重新下载(漫长的等待

楼主 化学爱好者_C60  发布于 2019-01-31 21:40:00 +0800 CST  
6、实体常用nbt介绍

楼主 化学爱好者_C60  发布于 2019-01-31 21:42:00 +0800 CST  
要学习nbt,我觉得首先要知道什么是nbt
nbt标签,或者叫数据标签,是决定着一个生物的特征或行为等状态的东西
在正式介绍nbt的内容之前,我们先试着去看一下一个实体的nbt
这里我召了一只僵尸


然后输入
/data get entity @e[type=zombie,limit=1]


然后我们就看到了一堆密密麻麻的东西



说实话,这些东西有的我也不是很清楚是干啥用的(也没必要全部知道,够用就行)

楼主 化学爱好者_C60  发布于 2019-01-31 22:20:00 +0800 CST  
在开始之前,我们先来了解一下data指令
data指令差不多是融合了之前版本的blockdata和entitydata两条指令 ,可用于获取或修改方块或实体的nbt
由于目前我还没准备讲方块的nbt,因此暂时只列举在实体中的用法
/data get entity (实体) ---获得某个实体的全部nbt
/data merge entity (实体) (nbt) ---修改某个实体的部分nbt
/data remove entity (实体) (nbt) ---删除或重置某个实体的nbt
注:在data指令中,所选中的实体只能有一个,因此必须加limit=1这个参数。如果要同时获得或修改多个实体的nbt,需配合execute指令使用。execute指令暂时没有想好什么时候讲,因此这里先给出格式,在使用时照搬即可
/execute as (实体) run data get entity @s
/execute as (实体) run data merge entity @s (nbt)
/execute as (实体) run data remove entity @s (nbt)
此处,不需要加limit=1参数

楼主 化学爱好者_C60  发布于 2019-01-31 22:34:00 +0800 CST  
这里先来讲一下关于实体名字的nbt
和实体名字有关的两个nbt
CustomName 实体名(json文本)
CustomNameVisible 实体名可见(布尔型数值)
关于什么是json,我会在近几期介绍,这里不作讨论。json文本需要使用特定的格式,否则会出错
布尔型数值有两种表示方法,false/true,或者0/1
实体名,可以理解成用命名牌给生物命名后的效果(但又有不同,因实体命名时可能还伴有其他nbt的更改)
我放了两只僵尸,并用指令修改了它们的名字
/execute as @e[type=zombie] run data merge entity @s {CustomName:{"text":"ZOOOOOMBIE"}}


效果类似于用命名牌命名,但当我介绍到json时,我们可以用这个做一些不同的效果
然后我修改了其中一只僵尸的CustomNameVisible标签
/data merge entity @e[type=zombie,limit=1] {CustomNameVisible:1}
注:该指令等价于
/data merge entity @e[type=zombie,limit=1] {CustomNameVisible:true}



被修改nbt的僵尸的名字可以在远处看见,而没有被修改的僵尸名字只能在靠近且将鼠标放到它身上时才能看见

楼主 化学爱好者_C60  发布于 2019-01-31 23:07:00 +0800 CST  

楼主:化学爱好者_C60

字数:59733

发表时间:2019-01-27 01:23:00 +0800 CST

更新时间:2019-07-22 08:34:08 +0800 CST

评论数:924条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看