阅读前提示
前言
你完全不会命令是吗?你因为不会命令而被嘲笑吗?又或者是看到命令生成器给出的命令完全不理解吗?
(除非是特别高深的,那这篇教程是不能帮到你的!这篇教程仅给入门的“小萌新”提供的。)
这个教程或许可以帮到你!
Minecraft版本:JE 1.20.4
注意事项
该教程针对于Java版(Java Edition)1.20.4的Minecraft制造,如果你的游戏版本较低或为基岩版(Bedrock Edition),请酌情阅读该教程。
该教程并没有所有指令及所有语法的解析,但对于入门已经足够使用。
除表明无需开启作弊或无需拥有管理员权限也能使用,其它的所有指令都将需要2级及以上的权限等级,也就是需要打开作弊或需要管理员权限才能使用的指令!
在标题内打星的是入门必学的项目,星号越多越重要。
最好是从上往下看而不是直接使用目录来直接定位一个指令,该教程不会重复上述所解析的语法。
该教程会继续完善表明了未完成和未知的内容,以及更多的指令。(若停更,这行将会删除。预计从9月份开始不再活跃更新。)
目前正在施工NBT实体部分,原版指令部分已基本完善,虽仍有一些未知的部分,但不影响入门。
格式提醒 - 在用法中的命令
尖括号 - 应填尖括号内所对应的内容
你应该填入什么内容。例如:<目标>。
| - 选填
在众多的选项里自己选一个。例如:a|b|c。
中括号 - 可填可不填,应填中括号内所对应的内容
这个选项可以填也可以不填,不填则默认。例如:[true|false]
命令的术语
一定要熟悉这些术语,因为后面的介绍经常会用到这些。
命令执行者
执行命令的那个实体。如果你输入了一条指令,命令执行者就是你。
命令执行点
执行命令时的位置。如果你输入了一条指令,命令执行点就在你这里。
目标
执行命令后,要对其进行改变、选择等操作时的实体。
坐标表述
坐标表述一般用在需要表述位置的地方,格式为(x,y,z)。
进入正题【原版指令】 - 简单的指令
/tp *
用途
可以将指定实体传送至一个指定的地点,或传送到某个实体。简单来说,就像给一个人搭一个传送门,然后直接传送到一个点位。
第一种用法 - 直接传送至目标 *
/tp <目标>
将命令执行者传送至目标。
示例:
/tp Mc.Undy
传送到Mc.Undy。
目标选择器
如果你输入到/tp后空格,你会看到还有更多的选项:@a @s @p @e @r,这些都称为目标选择器。
作用
@a选择所有玩家@s选择命令执行者@p选择最近的玩家@e选择所有的实体@r随机选择玩家或实体
示例:
/tp @r
随机传送到一个玩家的位置。
注意:目标不能为多个实体,否则会提示“未知或不完整的指令”。
易错点:目标不能为多个实体。
第二种用法 - 直接传送至指定坐标 *
/tp <坐标>
坐标是什么?点击F3键,找到XYZ,这里第一个数字表示X坐标,第二个数字表示Y坐标,第三个数字表示Z坐标。
示例:
/tp 20 32 14
将命令执行者传送至坐标为(20,32,14)的地方。
易错点:无。
第三种用法 - 将需要传送的实体传送至目标 *
/tp <需要传送的实体> <目标>
这里的目标也不能选择多个实体。
示例:
/tp @a @s
将所有玩家传送到命令执行者的位置。
易错点:不可将该用法与第一种用法混淆。
第四种用法 - 将需要传送的实体传送至指定坐标 *
/tp <需要传送的实体> <坐标>
将所有需要传送的实体传送至坐标指定的位置。
示例:
/tp @e 20 30 -12
将所有实体传送至坐标(20,30,-12)的位置。
易错点:无。
还有一些其他的可填可不填的地方:
rotation
/tp ...... <方向>
将目标传送指定地方并朝向某个地方。
方向这里需要填两个数。
第一个数是填你左右看的视角方向(X轴旋转角度)。0就是朝着南看,180就是朝着北看,90就是朝着西看,-90就是朝着东看。
第二个数是填你上下看的视角方向(Y轴旋转角度)。-90是抬头,0是平视,90是低头。
示例:
/tp @s ~ ~ ~ 90 -45
将命令执行者面朝西方,抬头45度。
坐标里的“~” - 相对坐标
这里用到了"~",你可能会问这是什么东西。
“~”的意思就是相对坐标。简单来说,"~ ~ ~"就代表命令执行的位置。
例如,命令执行点在(1,23,31)的地方:
还有更多用法:假设命令执行点在(1,0,2):
注意:一定要先弄好第三种或第四种写法后再写方向,否则就会出错!以及以下的facing也是一样。
facing,第一种方法 - 面向一个坐标
/tp ...... facing <坐标>
将需要传送的实体传送并面朝坐标指定的地点。
示例:
/tp @s 12 60 11 facing 12 60 16
将自己传送到(12,60,11)并面朝(12,60,16)的位置。
如果你输入此示例无误,那么你应该传送到了指定地点并且直视着南方。
facing第二种方法 - 面向某一个目标
/tp ... facing entity <目标> [eyes|feet]
目标不能为多个实体。
示例:
/tp @s ~ ~ ~ facing entity Mc.Undy
将命令执行者面朝Mc.Undy。
/gamemode
用途及用法
这是一个必须学会的指令!如果不会的话,你将无法让别的玩家或自己在各种模式中切换!(其实F3+F4更加快捷,不过这个只能针对于自己。)
/gamemode <游戏模式> <目标>
这里的目标允许多个实体,但是不能为非玩家的实体!
游戏模式解释
游戏模式如下:
示例:
/gamemode survival @a
将所有玩家的游戏模式改为生存模式。
易错点:无。
/weather
用途及用法
学会这个指令,你就是天气之子!
/weather <天气> <持续时间>
将世界的天气改为指定的天气。天气解释如下:
持续时间:
先填数字,三个后缀,t是tick(刻),d是day(天),s是秒。默认为tick。
游戏内的时间指示
1t(tick,游戏刻)=0.05s。
1s=20t。
1d(day)=24000tick=1200s。
示例:
/weather clear 1000s
设置为晴天持续1000秒。
易错点:无。
/give *
用途及用法
可以给予某一个玩家某一种物品。
/give <目标> <物品ID>{NBT} <物品数量>
物品ID,例如钻石就是minecraft:diamond,这里不把所有的都列举出来(或许你也知道不可能全部列举)。
可以选择多个目标,但是目标不能是除玩家之外的实体。
NBT是什么?其实就是特殊的标签,例如附魔是一个NBT标签,甚至连耐久也是一个NBT标签。
示例:
/give @s minecraft:apple 16
给予命令执行者16个苹果。
易错点:请注意NBT紧挨物品ID,无需空格。
/effect *
用途
给予或清除某实体的状态效果。
第一种用法 - 给予效果 *
/effect give <目标> <状态ID> <持续时间(秒)> <等级>
目标可选多个实体。
给予目标指定状态,持续指定时间秒,等级为指定等级。
注意:时间不能大于秒,等级不能超过255级,或目标若有更强的效果或免疫此效果则无法给予。
指令中的等级要比实际等级少一级,例如等级填1则实际为II级(2级)。
状态ID,例如minecraft:health_boost是生命提升。
若版本≥1.19.4,则持续时间可填infinte,就代表无限时长。
后面可以填true或者false,如果填true则不显示效果粒子且不在右上角显示状态;false则显示粒子效果,在右上角显示状态。如果不填默认为false。
示例:
/effect give @s minecraft:health_boost 99999 4 true
给予命令执行者99999秒的V级(5级)生命提升效果,并且不显示粒子效果。
易错点:未达成“注意”所提示的要求;指令上等级比实际等级多了1点。
第二种用法 - 清除效果 *
/effect clear <目标> <效果ID>
清除目标的指定效果,如果效果ID未填则清除目标所有效果。
目标可选多个实体。
示例:
/effect clear @a minecraft:invisibility
清理所有玩家的隐身效果。
易错点:后面无需添加时间和效果。
/kill *
用途及用法
这个指令可以直接杀死目标,甚至可以杀死创造模式的玩家。
/kill <目标>
杀死目标。目标可选多个实体。
示例:
/kill @e[type=item]
清理所有掉落物。
易错点:暂无。
目标选择器的中括号 - 目标选择器参数
为什么这里的目标选择器右边多了一个[type=item]?
简单来说,就是给目标选择器加一个“过滤器”,通过中括号内的内容筛选符合要求的实体并选择它们。
注意:实体必须要符合所有要求才能被选定。
加粗的部分将详细讲述。
x,y,z,dx,dy,dz
这六种在确定一个长方体区域时必不可少,除非特殊情况。如果不写x、y、z,那么默认位置为命令方块或命令执行者所在的位置。
x、y、z可以改变命令方块的命令执行地点。可以单独和distance、sort、limit等搭配。
dx、dy、dz分别指:
x坐标x到dx+x、y坐标y到dy+y、z坐标z与z+dz之间的空间内的实体全部被选择器筛选。
示例:
/kill @e[x=-7,y=60,z=-8,dx=12,dy=12,dz=14]
杀死从(-7,60,-8)到(5,72,6)的区域内的所有实体。
注意:如果你需要找一个原点,最好是找xz延伸都为正数的地方(X轴旋转角度为-45),如下图所示。
这样的好处是:
- 你无需考虑正负数的问题
- 修改的时候可以更加轻松
gamemode *
这个很好理解,就是指定玩家的游戏模式,只有与指定的游戏模式相同的玩家的游戏模式才能被选中。
<目标选择器>[gamemode=<游戏模式>]
至于四个游戏模式的解释已经在/gamemode指令里讲述了。注意目标需要为玩家。
可以在等号后面加个“!”,意思就是除了这个模式的玩家可以被选中。
示例:
@a[gamemode=creative]
选择所有创造模式的玩家。
level *
选择与指定等级相符的玩家。
<目标选择器>[level=<等级>]
示例:
@a[level=5..]
选择所有等级大于等于5的玩家。
“..”的解释
这里用到了“..”。你可能不理解是什么意思,简单来说,如果把它放在数字的后面就是大于等于,例如:5..就是大于等于5的,1..就是大于等于1的,符合这些条件的也会被选择器筛选;如果把它放在数字的前面就是小于等于,例如:..2就是小于等于2的,..-3的就是小于等于-3的。
也可以这么写:例如在2~9之间,写作2..9。
实际上的意思就是a~b写成了a..b,如果省略其中一个数,例如a..就代表a以及后面所有的数,..b就代表b以及前面所有的数。
distance *
<目标选择器>[distance=<距离>]
筛选所有命令执行点与实体的距离和指定距离相同的实体。简单来说就是画了个圈,这个圈的半径就是你所填的距离,如果实体正好碰到了这个“圈”,那么就会被选择到。
也可以使用上一个level里的“..”来实现在区域以内或区域之外也能选择到实体。
示例:
@e[distance=..6]
选择命令执行地点的6半径内的所有的实体。
limit *
简单来说,就是限制只能几个实体在这个选择器内,如果超过了则直接不选择那些其他的实体。
<目标选择器>[limit=<限制个数>]
不要以为没有什么作用,在只能限定一个实体的指令中可以发挥很大的作用的!
注意:默认排序的方法是看第几个实体,假设你一次都没有死,那你就是这个世界的第一个实体,那么limit将会优先选择你!除非你已经使用"sort"进行排序。sort后面会有介绍。又或者你使用的目标选择器为@p,那么它的默认排序就是看距离命令执行者最近的几个实体。
可以使用负号来进行逆转,例如@p[limit=-1]就是距离最远的那个实体。
示例:
@e[limit=4]
最多只选择4个实体在这个目标选择器内。
name *
选定与指定名字相同名字的实体。
<目标选择器>[name=<"名字">]
最好是给名字打上双引号,虽然不打有时也能成功执行,但是如果名字之间有空格等就必须要打双引号。
示例:
@e[name="Herobrine 3"]
选择所有名字为Herobrine 3的实体。
sort
对其进行排序,最好是与limit一同使用!
<目标选择器>[sort=<排序类型>]
排序类型解释如下:
假设你没有死一次,你就是第一个实体,那么生成的第二个实体则被视为第二个实体
如果前一个实体死亡则往前补充前一个实体的位置furthest从距离命令执行点最远的实体开始排序,一直到最近的实体nearest与furthest相反,从距离命令执行点最近的实体开始排序,一直到最远的实体random完全随机排序 (俄罗斯轮盘赌?猴子排序法?)
示例:
@e[sort=furthest,limit=1]
选择距离命令执行点最远的那一个实体。
tag *
选定与指定标签相同标签的实体。
<目标选择器>[tag=<标签名>]
或许你想问标签是什么?标签其实就是给一个实体挂一个看不见摸不着的“标签”,只有指令才能调用、调整、控制等。至于如何设置标签,在后面的/tag指令会讲到。
示例:
@e[tag=hurt]
选择所有标签为hurt的实体。
scores *
选定所有符合设定分数的实体。
<目标选择器>[scores={<计分板名称>=<数值>}]
你又会问:分数?计分板?这些东西是什么?这些东西会在后面的/scoreboard指令中解释。
这里简单的说一下:其实就是一个隐形的“计分板”,上面可以记录实体的分数。然后仍然可以使用指令来调用、控制等。
示例:
@a[scores={Coin=20..}]
选定所有"Coin"计分板内分数大于等于20的玩家。
java版基础指令教程team *
选定所有与选定队伍相同队伍的实体。
<目标选择器>[team=<队伍名称>]
或许你还会问队伍是什么。这将会在后面的/team指令介绍。起床战争玩过吧?红队就是一个队伍。队伍是由一个或多个实体组成的,也一样可以使用指令来控制它们。例如改变其规则等。
示例:
@e[team="Garden Club"]
选定所有在"Garden Club"队伍里的所有实体。
type
选定指定实体类型的实体。
<目标选择器>[type=<实体ID>]
这里的实体ID前面可以加一个“!”来选择除了这个实体外的实体。
@e与其它目标选择器需要区分
@a与@e[type=player]需要区分,@e在选择方面是关系到死与活的,当该目标死亡后将不会被选中。如果和@a一样,那么游戏还得保存所有死亡的实体,肯定要消耗大量的内存和更多的计算量。这肯定不行。而@a、@p、@s、@r就无论死活了,除非你选定的不是玩家。
示例:
@e[type=item]
选择所有的物品。
小心,别踩到雷了 - 不可使用多个相同的目标选择器参数
有的人可能会问:为什么我的目标选择器不能选定多个实体,一选就报错。
有可能你就踩到雷了!下面是一个错误示范。
/…… @e[type=pig,type=zombie,type=cow]
这是不行的!如果按照逻辑来看,选定了猪就排除了猪以外的实体,而此时又要在猪里面选定僵尸,这肯定会出大问题。因此,我们只能分条写指令或者使用“!”来排除实体,可以排除多个实体。
/…… @e[type=pig]
/…… @e[type=zombie]
/…… @e[type=cow]
/kill可不能乱用 - /kill指令的危险性
/kill是一个简单且非常危险的指令,一旦出错就没有后悔药。如果你觉得游戏越来越卡,实体可能是其中的一点,但并不是所有的卡顿都来源于实体。有可能来源于常加载区域过多,或者某些大型红石机器正在运行。除非到了万不得已的时候才能使用/kill @e来清除所有实体。
为什么/kill指令不能乱用?因为,有的实体例如盔甲架也会被/kill指令清除,且盔甲架在指令上面可以发挥巨大的作用,就像是一个锚点。在一个大型的地图中,你觉得太卡输入了/kill @e,如果命令区没有做对盔甲架损坏的修复,那么命令区就废掉了一片。这么做虽缓解了卡顿,但损坏了地图。
还有些实体甚至不是生物:例如画、物品展示框、矿车等,都会被/kill指令一同收割。/kill指令还可以击杀创造模式的玩家。
/clear *
用途
清理玩家的背包或指定物品。目标均不能为除玩家以外的实体!
第一种用法 - 清理命令执行者的背包 *
/clear
没错,就只有/clear!但是小心,千万不要只输入这一个小小的/clear!它会让你自己的背包内的物品全部消失!
第二种用法 - 清理指定目标的背包 *
/clear <目标>
清空目标所选的玩家的背包。
小心点,如果你是一个房间或服务器的管理员,千万不要用这个乱弄一些什么东西!这可是清理背包里所有的物品啊!事实上,如果这个玩家喜欢把东西存在其他地方,其实损失不是很大,不过不建议直接清空背包,除非你一定要干或已经过同意。
示例:
/clear @a
清空所有玩家的背包。
第三种用法 - 清理指定玩家的指定物品
/clear <目标> <物品ID> <最大数量>
最大数量指的是最多只清理你几个指定物品,即使没有按照最大数量清理仍然算运行成功。不填则清理所有!
示例1:
/clear @a minecraft:tnt
清理所有玩家背包里的TNT。
示例2:
/clear @s wooden_sword 1
清理自己身上的一个木剑。
/fill & /setblock
用途
这两个指令均可以放置方块,而/fill可以直接填充一个立方体,/setblock只能放置一个方块。
这需要看情况,如果你仅仅只是放置一个方块那么建议使用/setblock,因为这样你将少写一个坐标并且修改的时候更加便捷。
如果你需要放置一个立方体而不仅仅是一个方块,那么需要用到/fill。
/fill - 用法 *
/fill <x> <y> <z> <第二个x> <第二个y> <第二个z> <方块ID>{NBT} <特殊状态>
第一个xyz则在红色羊毛处,第二个xyz则在蓝色羊毛处,两点形成立方体。(那个浮空的蓝色羊毛不是!)
特殊状态如下:
示例:
/fill ~-2 ~-1 ~-2 ~2 ~-1 ~2 minecraft:wool keep
还记得之前的"~"吗?在fill这里,可以起到很大的作用了!
如果该示例未输入错误,则应为:脚底下一格将空气部分填充了5*5*1的羊毛平台。如果你是站在地上的请删除后面的keep。
易错点:坐标不准确,有时候对准屏幕上显示的XYZ可能会出现位置偏移的情况。
/setblock - 用法 *
/setblock <x> <y> <z> <方块ID>{NBT} <特殊状态>
/setblock只能改变一个方块,如下图的铁块就是使用/setblock所放置。
指令:
/setblock 1000 100 1000 minecraft:iron_block
与fill不同的是:
- 只能放置一个方块
- 特殊状态没有hollow和outline,replace为直接放置而不是替换指定方块
destory和keep的作用和fill的是一样的!
示例:
/setblock 90 100 100 minecraft:air destory
破坏(90,100,100)位置的方块。
易错点:同/fill
/time
用途
修改或查询时间。
第一种用法 - 仅修改时间
/time set <选定时间>
直接把时间修改至指定的时间。
也可以使用上述/weather 的后缀。
忘了?先填数字,三个后缀,t是tick(刻),d是day(天),s是秒。默认为tick。
这里还能填noon等,它们代表:
第二种用法 - 时间快进 *
/time add <快进的时间>
将时间快进指定的时间。当然,仅仅只是调一下太阳和月亮罢了。
这里快进的时间仍然可以使用那三个后缀。
示例:
/time add 2s
将时间快进2秒(40tick)。
第三种用法 - 查询时间
/time query <类型>
查询指定类型的时间。解释如下:
示例:
/time query day
查询这个存档目前是第几天。
/summon *
用途及用法
召唤指定实体。
/summon <实体ID> <x> <y> <z> {NBT}
将指定实体生成至坐标指定的地点,如果没有指定则默认为命令执行点的位置。
示例:
/summon minecraft:lightning_bolt 82 90 17
召唤一道闪电在(82,90,17)处。
/enchant *
用法及用途
给指定玩家手上物品进行附魔。
/enchant <目标> <附魔ID> <附魔等级>
必须符合以下要求才能成功附魔:
- 该附魔可以正常附魔在手上的物品上
- 无其他冲突附魔
- 没有原有附魔
- 等级未超出最大等级
附魔ID,例如minecraft:sharpness就是锋利。
示例:
/enchant @a[level=8..] minecraft:sharpness 5
给所有等级大于等于8的玩家手上可附魔锋利的物品附魔锋利V。
/gamerule
用途及用法
修改或查询游戏规则。
/gamerule <游戏规则> <启用(true)或关闭(false)或数值>
如果不填后面的启用或关闭则查询游戏规则的开关或数值。
游戏规则,例如keepInventory就是死亡不掉落,commandBlockOutput就是命令方块执行时是否输出执行消息。
示例:
/gamerule commandBlockOutput false
关闭命令方块每次执行显示的消息。
/xp *
用途
可以修改、增加、扣除、查询玩家的经验等级。
第一种用法 - 增加经验等级 *
/xp add <目标> <数值> <等级(levels)或经验(points)>
数值可为负数,就是负增长。
如果后面填的是levels那么就是以等级做单位,如果是points则以经验值做单位!
示例:
/xp add @a[level=7..] -1 levels
扣除所有7级及以上的玩家1级经验。
第二种用法 - 查询经验等级情况
/xp query <目标(只能选择一个)> <levels(等级)还是points(经验)>
示例:
/xp query Mc.Undy levels
查询Mc.Undy有多少级。
第三种用法 - 直接调整经验等级 *
/xp set <目标> <数值> <等级(levels)或经验(points)>
和第一种用法的格式差不了多少,但是这个是直接修改。
示例:
/xp set @s 99999 levels
将命令执行者的等级设置为99999级。
/clone
用途及用法
复制一个立方体区域内的方块到一个指定坐标。
/clone <第一个xyz> <第二个xyz> <粘贴地点xyz> [masked|replace|filtered <方块>] [force|move|nomal]
选择立方体区域和fill一样。
至于怎么粘贴的:
指令:
/clone 99 56 99 101 56 97 103 56 99
效果如图:
其实就是第一点和第二点围成的立方体粘贴到指定地点,不过粘贴点是从第一点开始粘贴的。
还有后面的那些文字,解释如下,若不填则默认:
第一块
第二块
注意:一定要先输入第一块再填第二块。
/tag *
用途
给予实体一个“标签”。
第一种用法 - 添加标签
/tag <目标> add <标签名>
给目标添加一个标签,名字为设定的名字。
示例:
/tag @e[name=herobrine] add god
给予所有名字为herobrine的实体标签,名字为"god"。
第二种用法 - 查询目标所拥有的标签
/tag <目标> list
查询目标所拥有的标签。
第三种用法 - 清除标签
/tag <目标> remove <标签名>
移除目标的标签,注意该目标需要拥有该标签才能清除该标签,否则将执行失败。
示例:
/tag @e remove aaa
清除所有实体的名为"aaa"的标签。
/setworldspawn
用途及用法
更改世界出生点,也就是最初始的出生点。
/setworldspawn [xyz]
将世界出生点更改为指定的位置。若不填写位置则默认为命令执行者当前位置。
/defaultgamemode
用途及用法
将默认的游戏模式改为指定的游戏模式。
可应用于服务器中,所有新来的玩家的游戏模式将会是这个模式。
游戏模式的介绍已经在前面的/gamemode所介绍。
/defaultgamemode <游戏模式>
/spawnpoint
用途及用法
修改指定玩家的出生点。
注意:与/setworldspawn需要区分,请不要把该指令当作/setworldspawn,这个指令仅修改指定玩家的出生点,而/setworldspawn是作为全局的修改,所有玩家第一次进入游戏或未设置其它重生点时重生将会在此处。
/spawnpoint [目标] [xyz]
目标需为玩家。
将指定玩家的传送点设置为指定位置。不填位置则默认命令执行点的位置,不填目标则默认命令执行者的命令执行点的位置。
/worldborder
用途
修改世界的边界。默认为格,且最大也是这个值。
这里的大小是边界的边长,中间的空间是一个正方形,玩家不能正常走出这个边界,在边界外也不能破坏方块、放置方块、攻击生物等。离开边界越远,扣除的生命值越多。
边界效果展示
用法
add
将边界大小增加多少格。可为负数。可填入所需时间,就像缩圈一样,不填就是瞬间修改。
/worldborder add <格> [持续时间]
center
修改边界的中心点,这个中心点一旦改变整个边界的位置会随着中心位置的变化而变化。坐标仅需填入x和z坐标。
注意,中心点建议不手动填入小数(除非是x.5),因为边界即使不满一格,它也算一格,如果填入小数,那么将难以判断边界大小和中心点。建议直接输入整数,游戏会自动调整。
/worldborder center <x> <z>
damage
修改边界所造成的伤害。
amount
超出缓冲区后,每多出几格,伤害就增加1点。
/worldborder damage amount <每多出几格>
buffer
设置缓冲区范围,也就是超出边界后的缓冲区,在缓冲区范围内不会受到伤害,但超出后将会造成伤害。
/worldborder damage buffer <格>
get
获取当前边界大小。
/worldborder get
set
直接调整边界大小。可填入调整时间,不填入则瞬间修改。
/worldborder set <指定大小> [时间]
warning
距离边界较近时,则会触发警告。这个语句可以调整它。
警告状态如图,周围有红色的晕影
distance
当距离边界的距离到达一定的时候,则开始触发警告。
/worldborder warning distance <距离>
time
/worldborder warning time <时间(秒)>
/item
用途
这个指令可以修改某一个实体某一槽位的物品。可用来替换实体武器等。
用法
注意:方块必须是容器。
modify
赋予修饰器,不过这里只讲用法,修饰器不介绍。
block
赋予某一位置的方块的某一槽位的物品一个修饰器。
/item modify block <xyz> <槽位> <修饰器>
entity
赋予目标某一槽位的物品一个修饰器。
/item modify entity <目标> <槽位> <修饰器>
replace
替换某一位置的方块或目标某一槽位的物品。
/item replace block <xyz> <槽位> from <block|entity> <(block)xyz|(entity)目标> <槽位>
/item replace block <xyz> <槽位> with <物品ID>{NBT} [物品数量]
/item replace entity <目标> <槽位> from <block|entity> <(block)xyz|(entity)目标> <槽位>
/item replace entity <目标> <槽位> with <物品ID>{NBT} [物品数量]
from是将from后面的某一位置的方块或目标的某一个槽位替换到from前面的某一位置的方块或目标的某一个槽位。
with是直接选定一个物品替换指定槽位。
/difficulty
用途及用法
调整存档的难度。
难度解释如下:
/difficulty <难度>
可能就只是本体长一点吧,基本没有复杂度。
示例:
/difficulty easy
调成简单模式。
/locate
用途
查询指定的群系、结构和兴趣点的位置。只能查到距离最近的那个地方,位置一般都是这个地方的中心点。
执行命令后,点击输出的坐标,便会自动在聊天框内输入tp指令。
注意:不会确定y坐标。
用法
structrue
/locate structrue <结构ID>
查询指定的最近的结构的位置。有的ID前面拥有“#”,这是代表不管哪个种类的只要是这个就可以找到,例如村庄。
示例:
/locate structure #minecraft:village
查询距离最近的村庄的位置。
poi
/locate poi <兴趣点ID>
查询距离最近的指定的兴趣点位置。
biome
/locate biome <群系ID>
查询距离最近的指定的群系位置。
学会使用命令方块 *
获取命令方块 *
第一种方法 - 直接使用give指令
/give @s minecraft:command_block
给予命令执行者一个命令方块。
第二种方法 - 管理员用品标签页
进入“选项...”,找到“控制”,打开“管理员用品标签页”,即可在创造模式直接提取命令方块。
命令方块界面解析
命令方块的三种形态 *
脉冲
脉冲命令方块外表呈橙色。“红石控制”状态输入红石信号或“保持开启”时只会执行一次。
连锁
连锁命令方块外表呈青色。只有指向它的命令方块执行成功后,它才能被执行。
若为“红石控制”,则还需要输入红石信号才能执行。一般情况下建议使用“保持开启”。
重复
重复命令方块外表呈紫色。“红石控制”状态输入红石信号或“保持开启”时,会一直执行,直到红石信号消失或不再使用“保持开启”。
请谨慎使用重复命令方块执行生成实体(/summon)、清除实体(/kill)、传送(/tp)等指令。
命令方块的“条件” *
不受制约
简单点说就是管你怎么样,满足自己的条件就直接执行。
条件制约
只有后面的命令方块执行成功后,并且满足条件才能执行。条件制约的命令方块的箭头平的那个底会少一块。
如图,左边的是普通命令方块,右边的是条件制约命令方块
命令方块的激活条件
红石控制
可以用红石信号来控制命令方块。当输入红石信号则执行。
保持开启
无论如何,只要该区域被加载,就一直执行。除非打开了条件制约。
连锁命令方块的摆法 *
直线摆放 √
折角摆放(请注意,折角处的命令方块若为条件制约命令方块,那么该命令方块的后方也得有命令方块成功执行) √
逆转(这样会导致断开) ×
循环利用(除非使用的是循环命令方块) ×
“放生摆法”×
命令方块的工作 *
每个命令方块在激活状态下每tick只会执行1次。即使是保持开启的循环命令方块。但是可以1tick有多个命令方块执行。
连锁命令方块在与其他命令方块(例如脉冲)搭配时,它们均为1tick内执行完毕。不过有先后顺序,例如“折角摆放”的图片,就是这样的。不过如果TPS(实际上游戏1秒执行多少tick的一个标准,最高20)低或锁链命令方块个数太多,仍然有概率出现乱序的情况。
1tick=0.05s,在TPS为20的情况下(完全不卡顿)。
回归主题 - 稍复杂的指令
/execute *
用途
自1.13+的/execute扁平化,execute可变成了一个巨大的工具箱。
/execute不仅继承了1.12.2-的/execute的用途,还将/testfor等检测指令也一块融入进去,甚至还有更多的功能,例如计算实体、血量显示,还有更加酷炫的指令效果。
但是,全新的/execute可难倒了不少的MC老玩家!这一个模块将专门介绍/execute。
只有高深的语法不会详细介绍,基础用法会详细介绍。
as
as是什么?很多人从第一步就开始懵了。
/execute ... as <目标> ...
as的意思是:将as选定的目标作为命令执行者,这个目标允许多个实体。相当于把命令方块“插入”进了目标的“身体”内。
从允许多个实体来看,可见execute的恐怖性。若有多个实体,那么将会执行多次。但小心点,要是用在只允许一个实体你选择了多个实体还用了@s,有可能仍然会出现问题。
示例:
/execute as @e[name="herobrine"]
将所有名为"herobrine"的实体选定为命令执行者。
当你在测试的时候,你可能会出现这样的情况:明明命令执行者是它,为什么执行命令的位置还是在我这里?这将要使用下面的“at”。一般情况下as和at是搭配的,除非特殊情况。
at
/execute ... at <目标> ...
将命令执行的位置切换到指定目标的位置。与as搭配**。目标允许多个实体。
示例:
/execute as @a at @s
将所有玩家设置为命令执行者并将命令执行点全部分别切换给那些玩家。相当于老版本的execute——1.12.2及以下的/execute @a。
run
/execute .... run <命令>
执行命令。当然,这个执行命令将包含前面所确定的条件。
示例1 - 雷电雪球(需要使用循环保持开启命令方块):
/execute as @e[type=snowball] at @s run summon lightning_bolt
将所有雪球设为命令执行者;将命令执行点设置为所有雪球所在的地方;召唤闪电。
如果将该实例输入于保持开启、不受制约的循环命令方块,那么你丢出去的雪球将会不断的召唤闪电。
示例2 - “杀戮光环”(需要使用循环保持开启命令方块):
/execute as Mc.Undy(<玩家名或目标选择器>) at @s run kill @e[distance=1..4.5]
将Mc.Undy设为命令执行者,将执行地点设置为命令执行者所在的位置,杀死所有距离命令执行者1格~4.5格的实体。
如果将该实例输入于保持开启、不受制约的循环命令方块,那么你半径为4.5格内的所有实体将全部杀死,除了半径1格内的实体,也就是你。如果你觉得不保守,可以加上“type=!player”。
align *
/execute ... align <xyz>
执行命令时,将指定的轴的坐标化为整数(去尾法)。
例如x就是将x坐标化整,xy就是将x和y坐标化整,yz就是将y和z坐标化整。
下图就是效果。最后一条消息是使用下面这个指令执行的。
/execute as @s align xyz run tp ~ ~ ~
注意:一定要贴紧,不能写成/execute ... align x y z。
示例:
/execute as @s align xyz run tp 1.14 5.14 191.981
将自己设为命令执行者,传送至(1,5,191),而不是(1.14,5.14,191.981)。
anchored *
/execute ... anchored <feet|eyes>
你可能不知道feet和eyes选了有什么用,如果你尝试使用它的话,会发现根本就没什么稀奇事。
局部坐标 - "^"
但是,除了“~”,还有一个:“^”(局部坐标)。
“^”的作用是什么?如果你使用 ^ ^ ^ ,那么效果和 ~ ~ ~ 差不多。不过不能和世界坐标混合。
“^”的用法:
局部坐标会随着视角的变化而变化,你面朝哪,它就变到哪(除非你直接使用^ ^ ^,那还不如使用~ ~ ~)。
简单来说,相当于从你脚底下(默认)射出3道“激光”,向前射出的“激光”的方向与你的视角朝向相同,且其它两个“激光”将会以一个类似XYZ坐标轴一样跟随变化。
“激光”就相当于一个轴,向前射出的这个“激光”对应局部坐标的第三个值,向左射出的“激光”对应局部坐标的第一个值,向上射出的“激光”对应局部坐标第二个值。这些值可以为负数,它就会变到右边去。
上面的用法,也就是指“激光”延伸了几格,例如^ ^ ^3就是按前方的激光开始延伸,延伸3格就是那个位置。
如图,使用简单的画图来说明其三个激光表达的意思。
如果你仍然不理解“^”的用法,那么:
这里图片标错了,应该是^ ^2 ^
^ ^ ^3 (图中那只鸡就代表该位置)
那么回到正题:这里“^”默认从脚开始延伸,那么这个就可以改变:
eyes - 从眼睛处开始延伸(头)
feet - 从脚部开始延伸(默认)
示例:
/execute anchored eyes as @s at @s run summon chicken ^ ^ ^3 {NoAI:1}
NoAI是一个NBT,若该值为非0,那么这个生物将没有AI且无法正常移动。下图是展示结果。框中的鸡是使用上述指令生成的。
facing *
第一种用法 - 朝向一个坐标
/execute ... facing <xyz>
这里的facing不仅仅针对于tp,还针对于更多:例如/summon、/setblock等等。使用上述的“^”,facing就可以发挥巨大的作用。
第二种用法 - 朝向一个实体
/execute ... facing entity <目标> <eyes|feet>
目标不允许多个实体。
这里不建议将它放在后面,因为放到后面可能会受到as的影响,除非其他情况。放到后面的话问题也不是很大。
eyes和feet的作用和anchored差不多,不同点在于是朝向目标的脚还是眼睛。
if *
若符合条件则正常执行execute。
相当于你写程序的if。不过if里面有很多个条件,解释如下,粗体的将详细介绍:
biome
选定的位置是否在于该群系。
返回为测试通过(1)或测试失败(0)。
/execute ... if biome <xyz> <群系>
不做示例。
block
选定位置的方块是否与选定方块相符。
返回为测试通过(1)或测试失败(0)。
/execute ... if block <xyz> <方块类型>
示例:
/execute if block 1 1 1 minecraft:sandstone
(1,1,1)处是否为沙石。
blocks
和clone的位置计算差不多,这里不再多说,仅仅只是粘贴地点变为了检测地点,若不知道请回去看/clone的指令教程。
/execute if blocks <xyz> <第二个xyz> <all|masked>
all代表包含所有方块,masked则不包含空气。
返回值为符合要求的方块数量,但凡有一个不符合则直接测试失败(0)。
dimension
命令执行者是否在指定的维度。
返回值为测试成功或测试失败。
minecraft:overworld是主世界,minecraft:the_nether是下界,minecraft:the_end是末地。有的模组可能添加了更多维度。
/execute ... if dimension <维度>
entity
命令执行者是否与指定目标相符(目标可为多个实体)。
返回值为与之对应的实体个数(也就是目标的个数),但凡有一个不符合则为测试失败(0)。
/execute ... if entity <目标>
loaded
选定的坐标是否被加载。
返回值为测试成功或测试失败。
/execute ... if loaded <xyz>
score
第一种方法 - 比较
/execute ... if score <目标> <计分板名称> <关系运算符> <相比的另一个目标> <计分板名称>
目标的分数与另一个目标的分数相比较。分数的知识将会在后面的/scoreboard里讲述。
关系运算符:>是大于,>=是大于等于,=为等于,<=为小于等于,<为小于。
这里的所有目标都不允许多个实体。
返回值为测试通过或测试失败。
第二种方法 - 范围内
/execute ... if score <目标> <计分板名称> matches <范围>
这里的范围最好使用“..”。
例如范围填的是1,那么只有分数恰恰好好卡在了1这个位置才为测试通过。如果填的是9..20,那就是为9~20均可判定为测试通过。
返回值为测试通过或测试失败。
in
该指令将执行于哪个维度。
维度在上面的if-dimension已经分别介绍。
/execute ... in <维度ID>
on
将命令执行者设为与指定关系动作相符的实体,比as和at还强。前提是要先用as设置命令执行者。(≥1.19.4)
简单解析如下:
positioned *
修改命令执行点。
第一种用法 - 直接修改坐标
/execute ... positioned <xyz>
直接修改执行坐标。
第二种用法 - 修改目标所在的位置
/execute ... positioned as <一个目标>
请注意:以后的只能选择一个目标将直接简写为一个目标。
直接将命令执行点设置为一个实体所在的位置。
第三种用法 - over语句
有四种用法:
- motion_blocking —— 命令执行者的最高非空气的地方,然后再往上一格,相当于传送至地面
- motion_blocking_no_leaves —— 字面意思,和上一个一样,但排除树叶
- ocean_floor —— 和第一个一样,但排除水方块,简单来说就是海底
- world_surface —— 和第一个一样,但是前三个都将无视不完整方块,而这个则包括不完整方块
/execute ... positioned over <上面的四种任选一个>
rotated *
和/tp的rotation差不多,不过这个是针对于run而生的。建议搭配“^”。
加了as的就代表和目标一样的方向。
/execute rotated <x旋转角度> <y旋转角度>
/execute rotated as <一个目标>
store *
将run返回的值应用于选定的东西。
有两种模式:result、success。success类似于bool,成功则1不成功则0,result则代表返回run带来的返回值,使用去尾法保留整数。
里面还有五种用法,只有bossbar和score稍微介绍:
bossbar
/execute store <模式> bossbar <Bossbar的ID> <value|max>
将run返回的值应用于bossbar的最大值或当前值。bossbar是屏幕上方显示的一个条,这会在后面讲述。
score
/execute store <模式> score <目标> <计分板名称>
将run返回的值应用于目标的分数。
summon
运行时召唤一个实体,并将其设定为命令执行者,适用于没有目标实体的时候使用。
/execute ... summon <实体ID>
unless
是if的反向输出。这里不再重复介绍其条件。
/execute ... unless <条件> ......
/scoreboard
用途
终于介绍完/execute了!你的神智还清醒着吗?那么下一个重要的指令:/scoreboard。它可用于计时器、计算实体数量、计算血量等等一系列数据,让你的命令不再空虚,不再单调,但是用好计分板也是一个难点。
objectives - 编辑计分板
从编辑计分板开始,你的指令工作量就已经不小了。因为随便添加一个计分板就需要用不少的功夫。
add - 添加计分板
添加一个计分板。
/scoreboard objective add <计分板名称> <计分板类型> [显示名称]
计分板类型有很多种,这里建议使用最简单的dummy,dummy稳定且可随意调用。
当然,你还想知道其它的,例如:
- health —— 记录所有玩家的生命值
- food —— 记录所有玩家的饥饿值
- air —— 记录所有玩家的氧气值
- ……
这里不介绍更多,一般情况下建议使用dummy。
显示名称是使用list查看计分板、sidebar时显示的名称,当然使用list查看时可以把鼠标光标移上去查看实际名称。注意显示名称需为JSON文本,可暂时使用双引号代替,后面的tellraw、title等会介绍。例如"abc"。
list - 查看所有计分板
/scoreboard objectives list
可查看当前所有的计分板。
remove - 清除计分板
清除计分板。
/scoreboard objectives remove <计分板名称>
modify - 修改计分板属性
/scoreboard objectives modify <计分板属性>
displayautoupdate
禁用或启用自动更新。在后面填入true或false。
displayname
修改显示名称。需使用JSON文本。显示名称的介绍已在前面讲述。
numberformat(未完成……)
*用途未知,貌似是更改默认数字格式。千万不要随意更改!*
render
更改渲染类型——在按住TAB键时,分数所渲染的情况,后面如果填hearts就是心,如果是integer则是普通的数字。
setdisplay - 修改显示状态
修改显示状态。
/scoreboard objectives setdisplay <显示状态>
below_name
将指定计分板的分数显示于玩家的名字下方。
list
按住tab键后,玩家列表内显示指定计分板的分数。
sidebar
在屏幕右方显示指定计分板的玩家分数。
sidebar.team.(颜色)
右边的计分板将只有指定颜色队伍里的人才能看见。队伍将会在后面的team指令讲解。
players - 修改某一目标的分数
/scoreboard players ...
add - 增加分数
/scoreboard players add <目标> <计分板名称> <分数>
给指定目标的计分板增加指定分数。若未记载该玩家的分数则新建。
display(未完成……)
*用途未知,可能是清除某某格式,但左试试右试试还是不知道有什么用……*
enable *
/scoreboard players <目标> <计分板名称(该计分板类型必须为trigger)>
启动指定目标的计分板。仅适用于trigger类型的计分板,相当于是一个开关。
可以使用reset关闭。reset后面会讲。
get *
只能获取一个实体的一个计分板的数据,一般情况下这个搭配/execute最好,在查询的时候可以用后面的list。
/scoreboard players get <一个目标> <计分板名称>
list
/scoreboard players list
/scoreboard players list <一个目标>
不添加目标则显示有几个被追踪的实体。
添加目标则显示该目标的所有计分板数据。
operation
/scoreboard players operation <被赋值目标> <计分板名称> <赋值运算符> <赋值目标> <计分板名称>
如果你没学过编程的话,赋值运算符为:
+= —— 加上
-= —— 减去
*= —— 乘其
/= —— 除其
%= —— 除其求余
= —— 直接赋值
还有三个:
> —— 如果后者比前者大,那么后者的分数设为前者
< —— 如果后者比前者小,那么后者的分数设为前者
>< —— 交换两者的分数
示例:
/scoreboard players operation Steve Coin += Alex Coin
将Steve的Coin分数加上Alex的Coin分数。假设此时Steve的分数为5,Alex的分数为8,输入该示例后,Steve的分数将变为13。
remove
把add换成remove,然后就是把加变成了减,和add格式一样。
扣除目标计分板分数。
reset *
重置目标计分板,也就是直接清除该目标。
/scoreboard players reset <目标> <计分板名称>
set
直接修改目标计分板分数。
/scoreboard players set <目标> <计分板名称>
/team
用途
/execute很难,/scoreboard可以说更上一层楼。经过两大指令的碾压后,又有一个大型指令——/team!
想制作一个帝国?想制作起床战争?想制作枪战?想制作类似于战桥的小游戏?要是不学/team指令,你想得美!
/team指令可以让多个实体在一个队伍里,这些实体不会互相引起仇恨,甚至可以让它们不会互相造成伤害,还可以给名字添加前缀、后缀,乃至给实体一点颜色!
add
/team add <队伍ID> [队伍显示名称]
显示名称需要使用JSON文本。
添加一个指定的队伍。
empty *
/team empty <队伍名称>
清空该队伍的所有成员。
join
/team join <队伍名称> <目标>
让指定目标进入一个队伍。
leave *
/team leave <目标>
让目标退出所有队伍。我突然发现麻将写的这些指令好极端
list
/team list
/team list <队伍名称>
不添加队伍名称则查询所有队伍,添加队伍名称则查询该队伍的所有成员。
modify *
改变指定队伍的属性。解释如下:
队友隐身是否可见 false关,true开nametagVisibility名字对谁可见:always|所有 never|都不 hideForOtherTeams|仅队友 hideForOwnTeam|仅敌方 好队友4.0suffix名字后缀——使用JSON文本
remove
清除一个队伍。让一个队伍灭亡
/team remove <队伍名称>
中场休息 - 非作弊可用的指令
被三个大指令轰的头晕脑胀了吧!休息一下,让我们看看那些纯生存不开作弊的玩家到底能用什么好指令。
/help
用途及用法
你有了教程还要help干什么?
/help <查询命令>
/me & /tell & /w & /msg & /teammsg
用途
/me是一个发送消息的指令。你说话时,名字将不再被尖括号括中,而是换成前面一个星号,然后空一格,再是你的名字,最后是你发送的消息。
/tell、/w、/msg、/teammsg(/tm 这里的tm不是骂人的意思,是teammsg的简写)都属于私聊。
/teammsg仅用于队伍聊天,内容将直接发送给所有队友,只有队友可见。
/tell、/w、/msg用途全都一样。
用法
/me:
/me <消息>
/w & /tell & /msg
/w(/tell、/msg) <目标> <内容>
/teammsg:
/teammsg <内容>
/seed
单人游戏该指令无需作弊使用,但多人游戏则需要管理员权限,原因是怕你抢了种子自己玩。
直接输入/seed即可获得种子码。单击输出的数字即可复制。
/trigger
只能修改你的trigger类型计分板的分数。而且你还得被启用触发器才能进行修改。
add为增加,set为调整。
/trigger <计分板名称> <add|set> <值>
/random
随机数生成器。如果你闲的没事,可以玩一下这个MC自带的骰子。
/random roll <范围> —— 掷筛
/random value <范围> —— 仅随机数
建议使用之前介绍的“..”。
/list
只需输入该指令即可查询服务器内的所有玩家和最大人数。
中场休息结束!继续开始指令之旅——输出
做一个解密地图,你不输出点东西打算用方块表达你此时的情感吗?这个大板块将介绍输出文字的指令。
/say
用途及用法
最简单的输出也是最差的一个输出。虽然输出指定实体名称以及文字十分简单,但它却不兼容颜色、加粗等格式,/say指令仅仅只是给那些不会指令的人用的。
可以直接使用目标选择器输出实体名称。输出后,前面的[]里面填写的是命令执行者的名字。就是因为这一点导致/say变得十分低端。不仅不稳定,还无法移除。
/say <内容>
/tellraw
/tellraw <发送目标> <JSON文本>
使用JSON文本来输出文字。这个是效果最好同时也是最难的一个文字输出。不仅自定义、毫无破绽,还可以加粗、变色等等。
[] - 当有多个文本数据,请使用这个框起来
{} - 一个文本数据
- "text" - 文本。后面应该加上—— :"<内容>"
- "score" - 计分板。后面应该加上——:{"objective":"<计分板内容>","name":"<目标>"}
- "selector" - 目标选择器。后面应该加上——:"<目标>"
- ……
修饰:如果你不会的话,先加一个英文逗号,然后粘贴在上面的三个文本内容后面:
"color":"<颜色名称>","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false
- color - 设定指定颜色
- bold - 粗体
- italic - 斜体
- underlined - 下划线
- strikethrough - 删除线
- obfuscated - 乱码
粘贴后,如果想调用粗体就把bold后面改为true即可,后面的都是如此。
例如:
/tellraw @a {"text":"Hello world!","color":"green","bold":true,"italic":false,"underlined":true,"strikethrough":false,"obfuscated":false}
输出一个绿色加粗加下划线的Hello world 给所有玩家。
/title
用途
显示标题。使用JSON文本。
用法
actionbar
在物品栏上方显示文本。
/title <目标> actionbar <JSON文本>
title
在屏幕中间显示文本。
/title <目标> title <JSON文本>
subtitle
首先要显示title标题再显示subtitle标题。生成于title的下方。
/title <目标> subtitle <JSON文本>
clear
清除目标玩家的title和subtitle。仅这两个显示的时候才能清除。
/title <目标> clear
reset
重置目标玩家淡入、显示、淡出的时间。
/title <目标> reset
times
修改玩家的标题淡出、淡入、显示时间。
/title <目标> times <淡入时间> <持续显示时间> <淡出时间>
/playsound
用途
输出声音,让你的命令不再单调无趣。
用法
/playsound <声音ID> <声音类型> <目标> <发出声音的位置> [音量] [音调]
音调在0~2之间选,超出就会报错。
示例:
/playsound minecraft:block.anvil.use ambient @a ~ ~ ~ 100 2
播放一个铁砧被使用的声音,音调为2,声音大小为100,给所有玩家播放,声音类型ambient(主音量)。
/particle
用途
可以用指令召唤粒子效果,让你的指令质量更进一步!
用法
/particle <粒子效果ID> [xyz] [分散程度-xyz] [分散速度] [数量] [force|normal] [可见的目标]
注意:这里可填可不填处必须前一个填了才能填这一个。
不填位置默认命令执行点,不填分散就不分散,不填分散速度就只分散不往外分散,不填数量就只生成一个,不填force|normal默认normal,不填可见的目标则所有人可见。
/bossbar
用途
显示像凋灵那样的血条在屏幕上。
用法
add
/bossbar add <bossbarID> <显示名称(JSON文本)>
添加一个bossbar。
get
获取bossbar的数据。解释如下:
list
查询有哪些bossbar。
remove
删除bossbar。
/bossbar remove <bossbar名称>
set
可以修改bossbar的数据,解释如下:
/bossbar <bossbarID> set <数据>
来点新花样!
/tick
用途
想体验时间加速、暂停的感觉吗?tick指令可以帮到你!
但是请注意,tick指令为性能优先,如果性能不足以满足其要求,那么指令也无法满足。
freeze
简单点说,就是时间暂停。The World/咋瓦鲁多
冻结游戏的tick,输入后整个游戏都会暂停,但你仍然可以进行操作。
/tick freeze
query
查询目前的tick情况。
/tick query
sprint
简单点说,就是快进时间。性能越好,加速越快。不过这个有时间限制。
/tick sprint <时间>
rate
强行修改最大TPS。默认20。简单来说就是修改游戏速度,但你本人不变(除非你调低了TPS)。
/tick rate <TPS>
step
在冻结状态下使用该指令,世界会运行你所指定的时间,时间结束后继续冻结。
/tick step <时间>
unfreeze
取消冻结。
/tick unfreeze
/damage
用途
对指定实体造成伤害,还可以让指定目标对目标造成伤害。
用法
/damage <一个目标> <伤害数值> <伤害类型>
/damage <一个目标> <伤害数值> <伤害类型> at <xyz>
/damage <一个目标> <伤害数值> <伤害类型> by <一个攻击者目标>
第一个指令是单纯的对目标造成指定伤害。
第二个指令是在某一个位置对目标造成指定伤害。
第三个指令是一个攻击者目标对一个目标造成指定伤害。
【现学现用!】一些指令模板 - 实际运用和指令的结合
指令模板是将指令运用于真正的游戏之中,只学会一点点指令那是根本不足以学到精髓!
指令模板有对应的解释,可以对前面的知识点加以记忆。
搭桥蛋
需要达成的效果:投出去的鸡蛋的下面会不断生成方块。
需要用到的指令:/execute。
知识点包含:/execute、/fill、目标选择器参数、“~”的运用、命令方块。
首先需要放置一个命令方块,调成循环、不受制约、保持开启的状态。
在命令方块里使用/execute来确定命令执行者和命令执行点。命令执行者应当是一个鸡蛋,鸡蛋的ID是minecraft:egg。
/execute as @e[type=minecraft:egg] at @s
然后就可以执行命令了。使用fill来放置方块。
这里如果使用/setblock的话,那么效果会比较差。丢出鸡蛋后,你只会看到一根细线,在上面走路会十分艰难。
大小需要为2*1*2。这是大多数起床战争中搭路蛋生成的平台的大小。使用之前的“~”即可完成2*1*2的平台。
注意:这里的y坐标需要往下调一格,否则丢出去的鸡蛋会立即破碎。
然后只替换空气,这将会用到keep。方块可按自己的爱好挑选。
/execute as @e[type=minecraft:egg] at @s run fill ~ ~-1 ~ ~1 ~-1 ~1 minecraft:white_wool(或者其它的方块都可以) keep
例如鸡蛋现在正好在(0,0,0)的位置,那么选定的第一个坐标将是(0,-1,0),第二个坐标将是(1,-1,1),两点形成立方体,就是一个2*1*2的平台了。
可以使用这个指令关闭命令方块总是发出的消息。
/gamerule commandBlockOutput false
简单防熊机构
需要达成的效果:不能让玩家获取TNT、重生锚、末影水晶等会对地图造成破坏的物品。
需要用到的指令:/clear。
知识点包含:/clear、命令方块的运用。
首先放置若干个命令方块,这取决于你需要禁用的物品种类数量。
将这些命令方块设置为 循环、不受制约、保持开启。
若想禁用TNT,请在命令方块下输入这条指令:
/clear @a minecraft:tnt
禁用重生锚:
/clear @a minecraft:respawn_anchor
禁用末影水晶:
/clear @a minecraft:end_crystal
计分板计时器
需要达成的效果:用原版的方法计时——因为JE版的Minecraft是没有命令方块执行延迟的(即使有,效果也比较差),所以需要学会用计分板来计时。
需要用到的指令:/scoreboard,/execute。
知识点包含:命令方块的工作,命令方块的用法,/scoreboard,/execute if,游戏内时间。
首先需要知道,命令方块在1tick内只能执行一次,所以可以运用这个小小的延迟来计时。
你需要创建一个计分板。计分板的名称虽然可自定义,但你设置的名称一定要有意义且你能快速知道计分板的名称。
/scoreboard objectives add times dummy
然后放置一个循环、不受制约、保持开启的命令方块。既然1tick只能执行一次,利用这个特性,每1tick加一分,就相当于记了1tick的时间。一般情况下,请使用正计时器,正计时更容易修改,更容易调用。
/scoreboard players add tick(可自定义名称) times 1
上面这条指令就是计1分,放进循环保持开启的命令方块,每tick就会计1分了。
那么怎么调用呢?可以用execute来检测分数!范围内填入计时器计到什么时候才会执行成功。搭配条件制约的链命令方块或红石比较器使用。
/execute if score tick times <范围>
计时器归零指令:
/scoreboard players set tick times 0
【突破限制!】常用NBT列表
大部分入门指令玩家都只知道普普通通的给予物品、召唤生物等。
这个板块会介绍一些常用的NBT。
NBT常常用花括号装起来。
物品
物品的NBT需要接在物品的ID后面,例如/give的物品ID。
AttributeModifiers
这个物品附加的属性。
请注意:下面五项缺一不可!
Amount
增加的数值。(可为负数)
AttributeName
附加的指定属性。需要加上英文双引号。
- minecraft:generic.armor —— 护甲值
- minecraft:generic.armor_toughness —— 盔甲韧性
- minecraft:generic.attack_damage —— 攻击伤害
- minecraft:generic.attack_knockback —— 攻击的击退
- minecraft:generic.attack_speed —— 攻击速度
- minecraft:generic.flying_speed —— 飞行速度
- minecraft:generic.follow_range —— 生物跟随距离
- minecraft:generic.knockback_resistance —— 击退抗性
- minecraft:generic.luck —— 幸运值
- minecraft:generic.max_absorption —— 最大伤害吸收值
- minecraft:generic.max_health —— 最大生命值
- minecraft:generic.movement_speed —— 速度
- minecraft:horse.jump_strength —— 马的跳跃高度
- minecraft:zombie.spawn_reinforcements —— 僵尸增援
Slot
在哪个位置会触发增加属性。
offhand是副手。
Operation
确定数值的增加方式。
- 0 —— 直接加
- 1 —— 乘其
- 2 —— 百分比
UUID
如果你实在不会的话,就可以像这样填:
在后面填上:[I;(随便填一个较大的数字例如),(仍旧),(仍旧),(仍旧)]
即使是随便填仍然可以成功获得带属性的物品。但是太小的值仍然不行。
组合示例
按照示例的格式来写,否则就会报错或者没有达到预想效果。
示例1(带甲钻石):
/give @s minecraft:diamond{AttributeModifiers:[{Amount:4,Slot:offhand,AttributeName:"minecraft:generic.armor",Operation:0,UUID:[I;-, , -, -]}]}
输入该示例无误,你会获得一个放在副手上能增加4点护甲值的钻石。
示例2(血量翻倍器):
/give @s minecraft:diamond_helmet{AttributeModifiers:[{Amount:1,Operation:1,Slot:head,AttributeName:"minecraft:generic.max_health",UUID:[I;-, , -, -]}]}
输入该示例无误,你会获得一个戴到头上能将你的血量翻倍的钻石头盔。
示例3(沉重的砖头):
/give @p brick{AttributeModifiers:[{Amount:13,AttributeName:"minecraft:generic.attack_damage",Operation:0,Slot:mainhand,UUID:[I;-, , -, ]},{Amount:-3.5,AttributeName:"minecraft:generic.attack_speed",Operation:0,Slot:mainhand,UUID:[I;-, , -, ]}]}
请注意,该示例不能直接输入至聊天框。请使用命令方块。
输入该实例无误,你会获得一个攻速0.5,伤害为13的砖头。
CanDestory
指定该物品在冒险模式能破坏什么方块。
示例:
/give @s minecraft:diamond{CanDestroy:["minecraft:sand","minecraft:red_sand","minecraft:gravel"]}
获得一个能破坏红沙、沙子、沙砾的钻石。
可以用在解密地图中。
BlockStateTag
只有方块才能使用该NBT,且只有一部分方块对该NBT有效。
设置该方块的标签。
例如TNT,它有一个unstable的标签,意思是是否能破坏激活TNT。
BlockEntityTag
只有方块才能使用该NBT,且只有部分实体方块对该NBT有效。
设置该实体方块的标签。
例如箱子,它有一个Lock的标签,意思是只有指定名字的物品才能打开这个箱子。
如图,正常情况下无法打开,只有手持指定名字物品才可打开,但仍可以摧毁
CanPlaceOn
只有方块可以使用该NBT。
该方块可以放在哪个方块上面。其格式与CanDestory相似。
display
设置物品的名字及描述。
color
仅对皮革套装的装备有效,若是其它的物品则只会像下图这样。
输入一个整数,然后转化为像#ffffff那样的颜色格式。
Lore
对该物品的描述。
后面的内容需要使用中括号括起来。
首先需要一个成对的单引号,在内部填入JSON文本。若需要多个描述则需要逗号隔开,新添加的描述会换行。
例如:……Lore:[ ' {"text":"介绍"} ',' {"text":"介绍第二行"} ',…… ]……
默认格式为深紫色+斜体,你可以通过JSON文本的修饰来修改这一项。
Name
设置该物品的名称。
和Lore的格式差不多一致,但只能添加一个且不需要中括号。
例如:……Name:' {"text":"介绍"} '……
默认格式为白色+斜体,你可以通过JSON文本的修饰来修改这一项。
组合示例
示例:机密文件(?
/give @s minecraft:music_disc_pigstep{display:{Name:' {"text":"机密文件","italic":false} ',Lore:['{"text":"[→ 暗区物资","italic":false,"color":"white"}','{"text":"传闻与某场事件的真相有关,是暗区中最神秘的文件,各方势力都不惜花大价钱在市场中购买这份文件","italic":false,"color":"white"}']}}
Enchantments(必学NBT)
该物品将带上什么附魔。
格式如下:
……{Enchantments:[{lvl:<等级>,id:"<附魔ID>"},{...}],……}
附魔ID,例如锋利就是minecraft:sharpness,你可以在B站的附魔ID对照大全或Wiki来查找它们。填入附魔ID时可省略命名空间(minecraft:),但保险起见建议填入(需要英文双引号,就像格式那样括起来)。
示例:
/give @a minecraft:diamond_sword{Enchantments:[{lvl:10,id:"minecraft:looting"}]}
获得一把抢夺X的钻石剑。
附魔无视任何限制(除了最大上限为255级,最低不低于0级)。
HideFlags
用作隐藏物品的某些资料,比如附魔、能否损坏、能放在的方块等。
1=附魔;2=属性修饰符;4=无法损坏;8=能破坏的方块;16=能放在的方块;32=其他,比如药水效果;64=皮革盔甲染色信息;128=盔甲纹饰的工具提示;255=所有资料,除了物品名称和介绍。 如果要隐藏多种信息,你只需要把那些标签的数值加起来。比如你想把附魔和属性修饰符的资料隐藏,你需要写3(即1+2)。[摘自Minecraft Wiki]
Unbreakable
字面意思,使该物品无法破坏,不会消耗耐久。
拥有这个NBT的物品会有一个“无法破坏”的文本提示。
例如:
/give @s minecraft:diamond_sword{Unbreakable:true}
就可以获得一把无法破坏的钻石剑。
Damage
只有工具才能使用该NBT,后面填入整数。
代表该工具已经扣除了多少耐久度。
格式:……{Damage:<整数>,……}
generation
用来分辨成书是“原作”(值为0)、“原作的副本”(值为1)、“副本的副本”(值为2)还是“破烂不堪”(值为3)。值大于1将导致成书无法被复制。[摘自Minecraft Wiki]
实体(正在制作……)
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/18246.html