我的世界-1.8.3指令大全
时间:2022-12-12 文章来源:网络收集
实体相关
1.summon指令
(即将列表格)比较常用的指令,用来召唤出生物。summon指令跟刷怪蛋不同,它可以给刷出的实体附加不同的效果。注意啦,生物与实体是不同的,生物时类似于僵尸、骷髅这样的生物,而实体是除了固定的方块以外所有的东西(类似于经验球,掉落物品等等)。具体格式为:
summon 生物英语名称 坐标 {数据标签}
举个例子,比如生成一个村民僵尸:
summon Zombie ~ ~1 ~ {IsVillager:1}
IsVillager:1是数据标签,下面会解释到。~ ~1 ~是推荐使用的坐标,意为在命令方块上面一格处生成某个实体(y走向),如果填上~ ~-1 ~便会在命令方块下方1格生成实体。波浪号的数字不同方向也不同,比如~1 ~ ~是东边一格(x走向),~ ~ ~1是北边一格(z走向),summon这个指令,不像刷怪蛋,刷怪蛋是随机生成,比如僵尸刷怪蛋,会生成大僵尸,小僵尸,穿装备的僵尸,甚至鸡骑士等。而summon只会生成特定的僵尸,如果不加任何数据标签默认为普通的僵尸。
CustomName与CustomNameVisible:
常用的数据标签比如CustomName,运用这个数据标签可以给怪物起名字,亦可用在区分不同的怪物来执行不同的命令。效果跟命名牌类似,但没有防止怪物和玩家距离远时消失的效果(PersistenceRequired标签负责此作用)。(有人说1.7的CustomName用完后即使不看着那个生物依然会显示生物的名称,而1.8则不会,实际上1.8需要在后面加上CustomNameVisible:1才可以起到这个效果)比如
summon Creeper ~ ~2 ~ {CustomName:bomb,CustomNameVisible:1}
就会在命令方块上两格生成一只名为“bomb、不用看生物便会显示名称标签的苦力怕。
Attributes:
比较常用的数据标签还有Attributes标签,这个标签是用来给怪物修改属性,它可以给怪物添加各种各样的属性,一般连用的有Name(注意:这里和CustomName不同,Name只是几个特定的数据名称)比如
/summon Creeper ~ ~1 ~ {Attributes:[{Name:generic.maxHealth,Base:0}]}
Name处填写的是属性名称,Base处填写的是数据,当数量越大改变的能力也越大。以下是任何怪物都可以用的普遍修改属性的数据标签(PS:尽量填写小数适用于生存,当然创造在特定需求下当然非常推荐填写适合的数)。
generic.maxHealth血量,任何血量都可以,只是太大的数容易造成卡机现象。
generic.movementSpeed速度属性。尽量填小数,否则就像瞬移一样。比如僵尸,0.3就是偏快的速度。
generic.attackDamage攻击力,也尽量填小的数,否则容易被秒杀。不建议在生存里填写太大的数字。
generic.followRange探测范围,给怪物最好填小数,否则怪物容易一直追杀自己的目标。填的越高侦测范围越远。
generic.knockbackResistance防击退效果,填写数越高击退效果越不明显。可以和击退附魔效果互相抵消。
generic意为普遍的,所有生物都可以使用,而不加generic的数据标签仅仅只有一些特定的生物可以用、
HealF:
上面那条指令意为召唤出1只0血的苦力怕,也就是召唤后便会死亡。在Base处更改数字即为血量。(谢谢chyx指出错误)HealF和maxHealth不同,Healf是当前血量,而maxHealth是血量上限,也就是说,当HealF比maxHealth小时,生物的血量并不是满的)0血还有另一种形式,比如
/summon Creeper ~ ~1 ~ {HealF:0}
即可。这个方法可以用在特殊的地方,比如不小心把末地的出口打没了(创造),召唤满血末影龙嫌麻烦,那就直接召唤0血末影龙即可。(每只末影龙死了之后都会出现出口)上面的Creeper可以改成其他的生物。
ActiveEffects:生物生成可以自带药水属性,而并不用自己来投掷药水来给予怪物。基本格式为
summon 实体名称 坐标 {ActiveEffects:[{Id:药水代码,Duration:药水时间}]}
和effect性质相同,具体可以看effect。它们都可以隐藏粒子效果,比如
summon EntityHorse ~ ~1 ~ {CustomName:number1,Tame:1,Saddle:1,Type:0,ActiveEffects:[{Id:1,Duration:123456789,ShowParticles:0b}]}
就会刷出一只带有迅捷属性却看不见药水粒子效果的马(其他NBT请看下方生物数据标签)
Equipment:
之前说过,如果不加NBT使用summon刷出的生物不会附带任何属性,比如刷出僵尸村民等等或者带装备的僵尸。用Equipment可生物加上装备。基本格式为
summon 实体名称 坐标 {Equipment:[{id:武器名称/物品名称,Count:数量},{id:靴子名称,Count:数量},{id:腿甲名称,Count:数量},{id:胸甲名称,Count:数量},{id:头盔名称,Count:数量}]}
这五个空都是和装备种类都是对应,需要注意。Count处填写数量,当掉落对应物品时,也会掉落相应数量的物品。
小bug:当使用像
summon Zombie ~ ~1 ~ {Equipment:[{},{id:golden_helmet,Count:5},{},{},{}]}
类似的指令时,虽然写的是金头盔,但是玩家看到的僵尸却是僵尸穿着金靴子,当杀死僵尸时掉落的却是五个金头盔。所以名义上虽然是金靴子,但是实际上还是金头盔。
NoAI:
NoAI是一种给生物添加一种属性的标签。如果生物后加上NoAI标签,这个生物就会变成“傀儡”,生物会悬空,并且如果没有特殊状态(比如末影人受到伤害瞬移)的话将不会再动弹。一般可以配合隐身的生物来做一种外观上虽然是某种生物,但是实质却是另一种生物的效果。具体使用方法为在数据标签处加上NoAI:1。
Riding:
Riding是用来生成叠加生物的。使用这个指令可以使生物骑着生物(就像鸡骑士等等)。基本格式为
summon 生物名称 坐标 {Riding:{id:生物名称}}
注意,一定要两个括号。少一个便不会触发指令。前者是骑生物者,而后者id是被骑者。比如
summon Zombie ~ ~1 ~ {Riding:{id:Slime}}
便会刷出一只骑着史莱姆的僵尸。当然,Riding可以无线叠加,比如
summon Villager ~ ~1 ~ {Riding:{id:Villager,Riding:{id:Villager,Riding:{id:Villager,Riding:{id:Villager,Riding:{id:Villager}}}}}}
每多加一个生物,就要多一个Riding和括号。一定要注意,多加的Riding要填进另一个Riding括号里头。
效果图片:
如果不是特定组合(鸡骑士等),骑在上面的生物没有控制被骑生物的权利。
2.kill指令
mc中最常用的指令之一。在1.8之前,这个指令本是用来自杀。如果只输入
/kill
则会起到自杀的效果。在1.8之前也适用,一般先关掉Inventory(死亡掉落)在使用这个指令。现在1.8之后,这个指令用处就变得大多了。它不仅可以用来杀死玩家,还可以用来杀死实体。基本格式为
kill 选择器/玩家 数据标签
如果要杀死特定的玩家,比如要杀死一个名为“End-Enderman”的玩家,那就用
kill End-Enderman
即可做到杀死一个特定玩家的效果。
1.8后选择器多了@e这个选项,可以起到给所有实体执行一些命令的效果。比如
kill @e
可以清除所有除了方块以外的东西(提醒:这个指令一定要慎用,它会杀死一切的实体,尤其是不能高频这个指令,不然会对存档/服务器造成毁灭性的打击,所以一定要注意)
kill这个东西可以做到杀死一切实体的效果,所以在做一些实用的东西时(比如原版做出凋零骷髅刷怪蛋,之前需要先弄一个替死的)会派上很大的用场。kill和testfor等指令加上的标签一样,可以加上type和name系列的标签。基本格式为
kill @e[type=实体种类,name=实体姓名]
比如我们要杀死一只名为ZombieKing的僵尸,那么在实体种类处填写Zombie(注意大小写,不小心杀错了可就坏事了,因为kill @e系列的指令千万不能疏忽,尤其是在高频的时候,一旦出错后果不堪设想),name处填写名称(可以用命名牌、CustomName、铁砧或者用刷怪蛋出来自带的姓名等等,这个如果不甚填错不用担心,顶多也就杀错怪,如果没有的话不会杀死任何实体)。一切实体都可以起名字(比如射出去的箭,如果不用summon也可以用entitydata),所以这一点是很方便的。
只要实体种类处填对,就能清除许许多多的你认为碍事的东西。小到经验球(XPOrb)、掉落物(Item),大到玩家,生物,做冒险机关跑酷解密什么的都是很适合的一个指令。只是再一次提醒,一般档被毁不少都是因为这个而引起的。高频kill @e可是比高频tp更进了一个档次...
所以请谨慎行事。珍惜生命,学好指令。
3.effect指令
此指令用于给玩家附加药水效果。激活后是直接加在玩家身上的。基本格式为
effect 玩家名称 药水效果 药水持续时间 药水等级 粒子效果
药水效果填写药水的名称。而持续时间和等级分别填写数字,比如
effect @a poison 10 0
这会给玩家10秒的1级中毒效果。而粒子效果处要填写true或者false,如果填写true便会隐藏药水的粒子效果。比如
effect @a regeneration 20 5 true
当然,玩家可以随时改变时间和药水等级,比如说这条指令
effect @a speed 9999 255 true
这会给玩家一个255等级,药水效果时间将近3个小时并且不会显示粒子的速度效果。不过这种指令一定要慎用,一般某些东西不是等级越高就越好,
比如速度,甚至会移动到未加载区域。所以要慎用。
还有一种模式,用于清除玩家所有药水效果(就像牛奶),基本格式为
effect 玩家名称 clear
另外effect也可以给实体添加效果,比如
effect @e 12 123
这会给全体添加防火效果123秒(不填写等级默认1级)
在某些情况下effect不推荐泛滥使用,否则容易对玩家造成一些影响。
4.tp指令
比较常用的指令,常用于传送玩家。用这个方法可以将玩家或者实体瞬间传送到指定的地方(瞬移)。
基本格式为
tp 坐标处 玩家
比如坐标处填写1,2,3,那么玩家就会被传送到这个地点。也可以用选择器,比如用@a就是将所有玩家传送到一个地点。
如果不指定坐标那么就会传送到指定玩家处,基本格式为
tp 玩家/选择器
单人游戏自然这个指令没有太大的用处,使用之后玩家屏幕视角只会略微动一下。
指定某个玩家时,玩家就会传送到某个玩家处。
我们假设一个玩家为a,另一个玩家为b。假如使用
/tp a
假如b玩家使用了这个指令,那么b玩家就会传送到a玩家的坐标处。如果b玩家用的是tp b则会变成只会动一下视角的效果。
注意:tp @a似乎只能在聊天框使用,命令方块会无效。
如果想tp实体,那么只能用选择器。因为实体名直接在命令方块填写会无效。比如把玩家所在世界的所有苦力怕向上100格,那就用
tp @e[type=Creeper] ~ ~100 ~
如不填写坐标,那就是把玩家传送到随机一个苦力怕的位置。也可以把一个实体传送到另一个实体的坐标上,比如
tp @e[name=a] @e[name=b]
意为将一个名字为a的生物传送到b的坐标处。
建议最好不要高频tp,因为高频tp毁档的事情已经不少见了....
5.spreadplayers指令
(建议先学会有关于区域的指令再来学习此指令,如clone,testforblock等,初期不好理解)用于将玩家随机扩散在指定的区域内(也就是随机传送到指定区域的某个地方)。基本格式为
spreadplayers 扩散中心点坐标 扩散最小半径 扩散最大半径 整个队伍/单个玩家 玩家名/选择器
扩散中心点坐标填写x和z。y是默认的,所以不用添加。之后后面扩散都会按照这个点来进行区域扩散,所以一定要慎重填写,不要误把z填写成y,否则如果记不住坐标可能就再也找不到原来的地方了。。而扩散最大半径和扩散最小半径就有些不一样了。两个地方都填写数字。spreadplayers是按照正方形进行扩散(有人说是圆形,但是并不是这样),比如填写0,1,意为在中心点处随机扩散到中心点半径1格的地方,也就是一圈。如图,假设红石火把是中心点,那么如果扩散半径分别是0,1,那么就会随机扩散到包括中心点在内的9个坐标处。
以此类推,不管怎么用最后都会按照指定的中心点来进行扩散。如果要一个队伍的玩家全部在根据中心点扩散,那么在整个队伍/单个玩家处填写true,这样这个队伍的所有玩家都会随机扩散到指定区域。反之,单个玩家就填写false。(队伍可以看计分板teams栏)
虽然spreadplayers看似是作用于玩家,但是实体依然可以在spreadplayers使用。比如将所有的僵尸全部以某个中心点扩散到附近区域来。
即使是实体,聊天栏依然会显示是玩家扩散而不是实体扩散。
6.entitydata指令
此指令用于替换现存实体的数据标签。和blockdata需要区分的是,此指令是替换实体的数据标签,而后者是替换方块的数据标签。基本格式为
entitydata 实体名称 实体NBT标签
实体NBT可以看summon(目前只编写了生物的,实体的敬请期待)。实体名称需要用选择器来掌握。(目前不能用entitydata对玩家执行操作)任何实体NBT标签包括一些只有entitydata才能使用的标签(比如HurtBy,LifeTime等等)。比如我们把现存的所有苦力怕都瞬间爆炸,用
entitydata @e[type=Creeper] {ignited:1}
即可做到这种效果。和summon不同的是,两个括号之间用不着加东西。如果想再添加一项NBT,比如使用
entitydata @e[type=Creeper] {ignited:1,Fuse:0}
使用之后还会附加让苦力怕瞬爆,以此类推。(可以用name=xxx指定特定的生物)
另外,entitydata在使用某些指令时或者直接加在实体名称处时需要用的UUID(HurtBy等等,summon有讲解)。因为entitydata目前不能指定玩家,除了用选择器的方式还可以把UUID填写至实体名称处(看UUID方式可以看execute)。比如
entitydata a5b84cfe-9407-45f1-9414-3d1c776d8d20 {ignited:1,Fuse:0}
(每个生物UUID都不相同,所以这个指令你使用是无效的,请把上面一串数字字母代码替换成要执行生物的UUID)
7.blockdata指令
这个指令用于改变现存方块存有的NBT。需要和entitydata区分开来,前者是替换方块的数据标签,后者是替换实体的数据标签。基本格式为
blockdata 需要改变的方块坐标 方块数据标签
坐标一定要掌握好,不然就会提示“目标方块没有持有数据”。
每个方块都有自己特殊的数据标签(当give处的物品数据标签更新好了之后请见give处)。比如改变一个坐标处的命令方块里的命令,那就用
blockdata x y z {Command:xxx}
一般用于更改漏斗、发射器等NBT,比如将命令方块上的箱子的第一格变为命令方块,用
blockdata ~ ~1 ~ {Items:[{id:minecraft:command_block,Damage:0s,Slot:0,Count:1b}]}
即可。
有时可以用高频来不断地执行命令,比如不停的变换物品就可以起到做一个机关的效果。
因为setblock放置方块时会有放置方块的声音,所以用这个指令可以做到很隐蔽的效果(先把commandBlockOutput关掉)。
物品相关
1.give指令
give是比较常用的一个指令。最初用到命令方块都必须要用过这个指令。最基本的形式是
/give 玩家名 数据标签
1.7(或者更低版本)的形式为
/give 玩家名 方块代码
比如/give @p 137就是给予玩家一个命令方块。
/give @a minecraft:command_block
是目前比较通用的一种。可以在游戏中按F3+h来查看英文名称。还有一种形式,具体为
/give @a minecraft:command_block 1 0
前面的数字1是给予玩家物品的数量,意为“给予玩家一个命令方块”,后面的0是损伤值。(1.8通用)这个方法是用于区分某些物品,比如刷怪蛋(spawn_egg)有许多的种类,就要用到不同的损伤值。按下F3+h也可以查看损伤值。
其次,跟give配合、给物品加上一系列数据比较贴切的就是display指令。它可以为给予的物品增加许多的特效。比如Name标签,举个例子:
/give @p experience_bottle 1 0 {display:{Name:xxx}}
使用这个指令就会得到一个不同名字的附魔之瓶。不同名字的物品会有不同的name标签(名称),以后可以用到各种指令的name标签处。xxx处填写你想要的名称。比如燃烧瓶,出来的效果为
和Lore标签不同的是,当持有这个带有特殊标签(或者直接用铁砧)的东西时,不需要在物品栏里便能看到。
还有比较常用的ench附魔标签,比如
give @p minecraft:spawn_egg 1 50 {display:{Name:xxx},ench:[{id:附魔编号,lvl:等级}]}
就能给予玩家一个带附魔特效的苦力怕蛋。第一个id是附魔编号,而第二个lvl是等级,效果随着等级的变化而变化。以及可以添加文字效果的Lore指令:
give @p minecraft:diamond_sword 1 0 {display:{Name:名字,Lore:[说明]}}
使用这个指令就可以给予玩家附加一个文字说明的钻石剑。“说明”处填写你想加的文字,比如在说明处加上“专打僵尸剑”,说明就会变成说明处的文字。如图:
只不过跟名字不同,拿着被附加文字的物品是无法直接看到文字的,在物品栏里才能看到。
顺便说下按下F3+h后的形式(再按一遍可取消):
注:现在1.8版本已经将give的方块代码形式删除了,但是其他(例如附魔id,或者其他指令)的指令并没有影响。像类似直接添加数字代码的(give @p 137)1.8版本以上的已经没有用了,还请注意。上面的是give的基本指令,而不同的方块拥有不同的数据标签。方块nbt请看这里
2.clear指令
此指令用于清除玩家身上的物品。基本格式为
clear 玩家名 物品名 损伤值 数量 物品数据标签
除了开头的clear以外,其余的都可以省略掉。玩家名填写选择器或者玩家名称,物品名填写物品名称,损伤值和数量详请看give指令。物品数据标签可以填写自己本身的标签,比如箱子的Item,附魔武器的ench等等。(注意,和give相反,前面是损伤,后面是数量,看好了再清除)
如果在聊天框单单输入/clear的话,执行命令的玩家将会被清除所有物品。有keepInventory也会被强制执行。
举个例子,比如清除所有玩家的钻石,用
clear @a diamond
即可。钥匙清除所有玩家的花岗岩,那就需要用
clear @a stone 1
建议填上损伤值,不然假如不填写上面的1就会清除所有有关于石头类型的物品。
数据标签一般填写方块本身的数据标签,比如
clear @a command_block 0 1 {BlockEntityTag:{Command:1}}
就会清除一个命令方块里的命令为“1”的命令方块。如果玩家持有两个或者两个以上并不会全部消除。
(注意:填写数量-1也会清除所有该物品)
clear指令虽然用处很大,但是一定要慎用,避免造成一些麻烦。
3.enchant指令
用于给玩家的武器附魔。具体格式为
enchant 玩家名称 附魔代码 附魔等级
enchant目前只能给玩家附魔。而且只能附魔玩家正在拿着的武器。比如
enchant @a 16 1
如果玩家手里拿着的是剑系列武器,那么就会给手里拿着的剑附加锋利属性。不适合此武器的附魔属性不会附在武器上。
和give不同的是,enchant用不着{id:xxx,lvl:xxx}的形式来执行附魔。
4.replaceitem指令
用于给现存的实体替换装备或者给现存的方块替换物品。现存的方块包括所有带有物品栏的方块(如箱子等)。基本格式为
replaceitem 模式 方块坐标/选择器 格子数据 物品名称 数据值 物品数据标签
replaceitem共有两种模式,分别是block以及entity。block是用于替换方块的物品,而entity用来替换实体的物品。坐标和选择器分别是block和entity的需求。格子数据是replaceitem特有的各自数据标签。其余的和give相同。
entity:基本格式为
replaceitem entity 格子数据 物品名称 数据值 物品数据标签
任何生物都有格子数据,比如僵尸利用slot.weapon可以给僵尸全部带上武器(就像entitydata+Equipment)。
共有slot.weapon(武器栏)、slot.inventory(玩家背包/容器栏,需要指定,格子为0-26)、slot.armor.head(实体头)、slot.armor.chest(实体胸甲)、slot.armor.legs(实体腿)、slot.armor.feet(实体脚)、slot.enderchest(末影箱格子,需要指定,格子为0-26)、slot.hotbar(玩家物品快捷栏,需要指定,格子为0-8)、slot.villager(村民背包栏,需要指定,格子数为0-7)、slot.horse.chest(驴/骡箱子,需要指定,如果指定普通的马会失败,格子为2-16)、slot.horse.saddle(马鞍栏)、slot.horse.armor(马甲栏)
上面的格子数据需要有些数据需要制定,要指定玩家的格子数,后面都要加一个“.格子数”,比如
replaceitem entity @e[type=Player] slot.inventory.21 command_block
这会将玩家的背包栏的第22格替换为命令方块(0是第一格,所以要往后数一格)。
其他需要指定格子数的也按照这种格式即可。
在类似于马鞍这样的格子数据,只能用minecraft:saddle和minecraft:air之间替换,否则无效。马铠可以让三种马铠交换这来弄以及minecraft:air。
物品数据标签可以制定,比如
replaceitem entity @e[type=Zombie] slot.weapon diamond_sword 1 0 {ench:[{id:20,lvl:1}]}
这会把所有的现存僵尸都装上带火焰伤害的钻石剑。
(某些即使看似无法使用武器的生物,比如末影人,装上后攻击也会有附魔的效果)
block:基本格式为
replaceitem block 方块坐标 slot.container.格子 物品名称 数据值 物品数据标签
坐标处填写要改变物品数据的方块坐标,block只能使用slot.container.格子来执行命令。格子填写数字,用来指定替换的格子(比如箱子是0-26,漏斗是0-4,发射器和投掷器是0-8,熔炉是0-2,酿造台是0-3等等)。其余使用方法和entity一样。
replaceitem要和entitydata区分,前者是改变生物/方块物品栏,后者是改变实体本身NBT。
探测相关指令
1.testfor指令
mc中最常用的指令之一,用于探测一系列的东西。可以探测玩家、探测实体甚至探测玩家背包的东西(方块用testforblock,这一点需要注意,两者要区分)。最基本的形式是
testfor 玩家/选择器 testfor系列数据标签
如果直接探测这个世界有没有某个玩家,比如探测这个世界有没有叫“End-Enderman”的玩家,就用
testfor End-Enderman
使用这个指令,如果这个世界有一个叫做“End-Enderman”的玩家,便会显示“发现End-Enderman”并且命令方块持续输出,直到这个玩家不存在为止。一般testfor需要高频持续探测一个东西得输出。
或者运用选择器,比如探测这个世界的所有玩家,用
testfor @a
即可。自从到了1.8后,运用@e的次数就越来越多了。一般用在UUID上。比如
testfor @e[type=实体名称,name=名字]
type后面填写实体的英文名称,比如僵尸就填写Zombie,掉落物就填写Item等等。name填写玩家起的名称(比如用命名牌或者CustomName),如果想指定所有的这个种类那就把name去掉即可。最好用于高频,在做RPG、机关、解密、冒险无论是哪个地图都有着很大的帮助。(但是唯一缺点就是容易卡)当探测到特定的生物后,命令方块就会有输出。一般连接比较器来执行一系列的命令。(探测到会一直有输出,直到探测不到)
还有一种形式,就是探测玩家在一个坐标的形式。
testfor 选择器[x,y,z,r]
选择器就是@a、@e、@r、@p,x、y、z是坐标,在游戏中按下默认的F3可以查看。r是半径,比如1就是1格,2就是附近2格。举个例子,比如
testfor @a[123,45,789,1]
高频这个指令,当123,45,789这1格方块的地方有玩家的时候,便会输出信号。
一般testfor都是用于探测玩家在某个地方,之后连接比较器做出一系列效果。对于地图是很有帮助的一个指令。
(自从execute出来之后貌似testfor就被冷落了些...因为execute可以省下一个比较器...但是testfor却是有着不可磨灭的作用)
除了探测玩家,testfor还可以探测玩家背包里的物品。比如
/testfor @a {Inventory:[{id:minecraft:xxx}]}
Inventory便是背包,而xxx处填写要探测的物品名称,之前说到过可用F3+h看到。比如我们要探测玩家背包里有没有罂粟,那就用
/testfor @a {Inventory:[{id:minecraft:red_flower}]}
但是我们知道,物品可以叠加,那么,要探测一定数量的物品,假如探测玩家背包里有没有3个钻石,那就用
/testfor @a {Inventory:[{id:minecraft:diamond,Count:3b}]}
物品正常情况下叠加只能达到64。假如探测玩家背包里有没有67个钻石,用
/testfor @a {Inventory:[{id:minecraft:diamond,Count:64b},{id:minecraft:diamond,Count:3b}]}
以此类推,可以无限叠加下去,但是一定要注意括号。
除了玩家背包里的物品,也可以探测玩家物品栏的9个物品。要用的是Slot数据标签。
/testfor @a {SelectedItemSlot:格子数,Inventory:[{Slot:格子数b,id:方块名称}]}
格子数是一样的。比如你需要探测第一个物品栏装的是刷怪蛋,那就用
/testfor @a {SelectedItemSlot:0,Inventory:[{Slot:0b,id:minecraft:spawn_egg}]}
有人说这个指令必须要用到9个命令方块,实际上那个是在完全不知道玩家物品会在哪个物品栏里的情况下。当知道玩家或者在解密(比如必须格子数正确才能触发机关)的情况下一般用这个指令。(9个命令方块就是每一个数字改一下,0-8即可)
如果探测的物品是附加了数据标签的(比如用铁砧改了名字),那么就用
/testfor @a {SelectedItemSlot:格子数,Inventory:[{Slot:格子数b,id:方块名称,tag:{display:{Name:名字}}}]}
总之,虽然execute类似的指令很方便,但是testfor容易理解,它的实用度还是非常高的。(testfor分数具体看scoreboard)
2.testforblock指令
和testfor性质相同,但是testfor一般用于探测玩家或者其他实体,而testforblock用于探测方块。在做机关等地图有很大的用处。最基础的形式为
testforblock x y z 方块 数据值 数据标签
x y z处填写方块所处位置的坐标,方块名想要探测方块的对应名称(老方法查看,F3+h)。数据值这里要特殊强调下,这个在其他指令总是不填,但是在testforblock最好要填上,也就是探测方块状态。不同的朝向、不同的方式(例如按钮按下去的时候、箱子打开的时候等等)都会有不同的数据值。比如当箱子打开的时候,数据值就会改变,会变成和原来关上箱子不同的数据值,一旦关上又会变回原样。所以数据值在testforblock得到了很大的应用。数据标签填写类似于give的标签,不同物品会有不同的数据标签,比如容器的Item等等。不填写数据值依然可以用的,但是探测不了状态,只能探测方块的种类,比如随便输入一个坐标,
testforblock x y z chest
如果是箱子就会成功探测到,不是的话就会显示位于x y z的方块为xxx(预定:箱子)的形式。所以在想把玩家随机tp到一个坐标时可以先用testforblock来查看这个坐标是否安全。但是这并无法探测方块状态。
假如要探测一个朝南的箱子,那就用
testforblock x y z chest 3
如果不确定它的数据值,可以随便填写一个数据值,当你执行命令的时候,如果探测到箱子,但是数据值不对,会提示位于x y z的方块拥有数据值xxx(预定:你所填写的数据值),xxx便是这个物品所有的数据值。当数据值和物品都对上了号时,便会提示成功找到了位于x y z的方块并且会有信号输出。
物品自己本身的数据标签依然可以使用,如果想探测一个箱子里的物品那就用
testforblock x y z chest 数据值 {Items:[{id:minecraft:物品名,Damage:损伤值s,Slot:格数b,Count:数量b}]}
数据值之前说过,就是用于调整方块的状态,Item指令是方块自带的特殊标签,凡是容器都带有这个标签。损伤值就是用于区分物品的种类(F3+h查看,give的图片里有)格数说过,比如箱子第一格物品栏就填写0,以此类推(数字b千万不能丢掉,不然可能会造成指令有误)。数量填写方块叠加的数量。这个指令可以用来做机关,本人推荐用非电路来配合类似的testforblock。
非电路类似于↓
一旦探测不到某个物品(物品状态被改变)就会触发后面一系列的指令。
如果想探测另一格子的物品,就用
testforblock x y z chest 数据值 {Items:[{id:minecraft:物品名,Damage:损伤值s,Slot:格数b,Count:数量b},{id:minecraft:物品名,Damage:损伤值s,Slot:格数b,Count:数量b}]}
其他的和上面的讲解相同,只是需要注意下括号,以此类推。
建议学会了testfor再来学习testforblock,因为学会了testfor后这个就好理解了。自从出了execute探测方块(detect)之后testforblock使用频率也受到了影响。但是testforblock对于execute而言还是比较好理解的多,所以做陷阱还是比较方便些。陷阱例子请看此帖
(execute算是testfor和testforblock的进一层指令)
更多相关内容请关注:我的世界专区
3.testforblocks指令
(建议先学会clone再来学习这个指令)和clone有些相似,用法也几乎相同,但是不同的是,clone是复制并粘贴方块,这个是检测并比较一个区域的方块是否相同(检测一个区域的方块可以用testfor的r半径)。基本格式为
testforblock 斜对角坐标 斜对角坐标 被比较区域 模式
当两个区域的方块相同的话,那么命令方块就会有输出。
由于是检测方块是否相同,所以用不着填写物品名称。
模式处填写all或者masked。all是默认的,而masked和clone的masked相同,如果比较区域中有空气,那么空气并不会被比较,所以即使两个区域都是空气也不会有输出。
更多相关内容请关注:我的世界专区
4.execute指令
(注:建议先学上面的testfor以及testforblock后再来学习这个指令,学会了这两个指令就比较好理解了)
1.8常用的指令,一般用于探测实体或者方块(带高频)。基本格式为
execute 选择器 数据标签 执行指令
也是传说中的炸服神指令。(你认为服主们会给你op来做这项任务吗233)比如
execute @e[type=xxx] ~ ~ ~ summon PrimedTnt ~ ~ ~
(在xxx处填写生物种类名称。填写僵尸就是在所有僵尸处生成点燃的TNT,填写弓箭就是在所有弓箭处生成点燃的TNT)这个指令,在做冒险类地图都是很常用的。上面的选择器一般填写@a、@e、@p、@r,而type处填写的是实体名称,用来探测实体。如果要区分实体,比如僵尸,数量比较多,假如要探测一只叫做PlantVSZombie的僵尸并且要在这只僵尸的地方生成雷电那就用
execute @e[type=Zombie,name=PlantVSZombie] ~ ~ ~ summon LightBolt ~ ~ ~
添加了name数据标签。如果连续激活就会连续在这个僵尸处生成雷电,直到僵尸死亡。后面添加想要执行的命令。包括testfor等一系列的指令。
而且这个指令基本上都是要接触高频,所以使用请小心,稍有不慎容易对存档造成伤害。除了探测实体执行命令,还有一种形式,
execute 选择器 实体 执行命令区域坐标 detect 探测方块坐标 方块名 损伤值 命令
这个形式比较繁琐。除了探测实体,这个指令还需要探测方块才能激活。比如高频
execute @e[type=Slime] x y z detect x2 y2 z2minecraft:air 0 setblock ~ ~ ~ minecraft:redstone_block
这个指令的意思是:在xyz处放置一个红石块(注意啦:setblock后面最好不要添加坐标什么的,比如~ ~1 ~,它是直接作用在x y z上的,等于x,y+1,z的坐标...以此类推,不要乱用)。先前必须要检测到史莱姆以及x2,y2,z2为空气方块。两种条件缺一不可,否则不会激活(将detect执行为xxx失败)。这个在解密的地方很有用,比如放置一个东西就会触发其他机关。在高频这个指令之前,一定要检查好,否则可能会造成意外的影响。
有一点要注意的是,execute探测成功一次后会一直保留信号,所以很多人在看电路结构的时候不知道是怎么回事。这需要再用一次红石信号来激活它,如果探测不到输出信号才会消失。所以高频(保证电脑)是最好的方法。(保留信号可以做出一系列的效果,可以参考上面的testfor)
execute还可以强制生物做一些事情,比如/say,这一点本来不能让生物做到,但是用execute可以做到。
最简单的比如
execute @e[r=5] ~ ~ ~ say I am HeroBrine
比如这个,r是半径。指令意为探测玩家附近半径为5的生物并且半径为5内的生物说I am HeroBrine。
这个方法可以用来查看生物的UUID(下面会说到,可用在僵尸猪人的HurtBy和entitydata等)。
execute属于testfor和testforblock进一步理解的指令,初期不是很好理解。建议先掌握testfor与testforblock再来学习execute指令。
计分板相关
1.scoreboard指令
mc中比较常用的指令之一(这是mc中范围比较大的一个指令)。计分板属于一种系统,通常用来团队合作或者用来指定变量等等。这个指令可以说是变幻多端,用处极大。现在甚至可以把实体拉到队伍来指定你想做到的效果。
比较常用的三大类,分别为objectives(指定判据/目标)、players(指定玩家/实体)、teams(指定队伍)。
1.objectives
创造/删除目标:基础格式为
scoreboard objectives add 创造目标名称 判据 显示名称
目标计分版名称自由填写,填写你想给这个目标起的名字。之后创建的目标就会以这个名字的形式来进行。判据处下面会解释到,用来对玩家的行为作出判断并且如果玩家的行为和输入的判据符合便会进行加分。正常情况下如果不想进行任何判据这里就可以填写dummy(可以说是最基础的判据)。显示的名称可以不填写,不影响指令的效果。
显示栏:
具体格式为
scoreboard objectives setdisplay 显示选项 显示名称
显示选项有sidebar、belowName、list等等。
sidebar:
如果让显示名称有效,还必须要先添加侧边栏,否则这个名称不会显示。添加侧边栏可以用
scoreboard objectives setdisplay sidebar 创造目标名称
这个指令必须要和最初创造的目标名称一致。
比如我们建一个名称为“End”的目标,那么要侧边栏显示区就在后面的“创造目标名称”填写“End”。但是之后还需要一步才可启动侧边栏,因为必须要给这个目标设定分数才可以。
scoreboard players set 显示名称 创造目标名称 分数
(注:players的方法请详细看“players”的用法,要在任务栏显示还必须要经过这步)这个显示名称和之前的显示名称不同。如果最初时不填写那么第一个显示名称就是默认创造出来的目标的名称。
图中的侧边栏就是在最初时创造目标是在显示的名称处填写的是1,如果不填写就会显示目标名称“End”。“击杀End-Enderman”即是在players填写的显示名称,用这个方法可以做出任务栏,比如指定一个任务,之后队友们努力去完成等等。(任务栏的原理其实是添加一个假玩家,因为scoreboard可以填写不存在的玩家。可以填写存在的玩家名来随时观察此玩家的分数变化,这个可以用来作用在玩家上。当假玩家分数改变时红色数字部分也会改变)如果想把侧边栏清除,那就用
/scoreboard objectives setdisplay sidebar
使用这条命令,将会把侧边栏清除。
list:
目标不仅仅可以创造一个,还可以创造多个目标。如果不记得自己都添加了哪些目标,可以用
/scoreboard objectives list
来查看计分板创造过的目标。
类似于这样显示目标的指令,不推荐在命令方块里使用。在命令方块里即使是默认的gamerule(比如commandBlockOutput等等)也不会显示图中这样的形式,而是在命令方块里显示。并且如果有多个目标命令方块在使用起来会很麻烦。
belowName:
在多人的时候,还可以直接在显示选项处填写belowName即可。用这个方法可以把显示栏放到玩家的头上。
显示区也可以用list来进行显示所有玩家的效果。基本格式为
/scoreboard objectives setdisplay list 目标名
使用之后需要按下Tab即可显示所有玩家。
移出这个效果的方式和清楚侧边栏相同。使用这个指令之后再按下Tab就不会再出现了。
(还有sidebar.team.颜色名称,不过可以直接用option的color来改变)
remove:
如果想移除某个目标,那就用
scoreboard objectives remove 创造目标名称
使用这个指令即可将计分板所在的目标移除。
判据:用于改变一些加分的效果。基本格式为
scoreboard objectives add 创造目标名称 判据
设置目标后,探测这个目标里的分数即可。(用testfor,一会会讲到)如果想把目标分数设为0,那就用
scoreboard players set 玩家名 创造目标名称 0
(都可作用于objectives和teams)
比如我们想把一个已经叫Death的目标设为0分,用
scoreboard players set @a Death 0
即可做到这个效果(一旦有分数对于某些指令而言可能会直接有输出)
(下面是具体各种判据。虽然有一种说法叫“把玩家加进判据”,但是创造一个目标就可以直接探测了,默认为0,不用再设置)
dummy此判据用于当玩家不想指定在加入这个目标后执行一些操作会进行加分或减分时,那就用这个判据。因为在创造一个目标时必须要有一个判据。原版经常用,但是只有op权限或者有权利作弊这样的才能使用,没有的只能使用判据trigger(也属于一个指令)。
trigger此判据用于当玩家不想指定在加入这个目标后执行一些操作会进行加分或减分时,那就用这个判据。在用于目标判据时,和dummy的效果相同。但是trigger没有限制,任何人都可以使用。trigger自己也单独属于一种指令。(具体看trigger指令)这是使用trigger指令的前提。
health此判据用于当玩家的血量改变时,玩家的分数就会改变。简单来说,就是玩家挨揍了,分数就会减少,玩家加血了,分数就会增加。减血包括所有掉血的方式,加血包括饥饿度自然恢复、喝药水等等。在判据处填写health即可做到这个效果。(有一点要注意,用testfor @p[score_xxx_min=1]之后(高频),即使减到不能再减了依然会有输出(在这里min属于最小值)只要玩家在不死的情况下)这个判据无法直接用设置分数的方法改变,就像dummy一样,所以在处理一些东西时比较麻烦。
deathCount此判据用于当玩家死亡之后,死亡玩家的分数便会加一分。比如一个叫做End的玩家死了,如果有这个判据,他就会自动加一分。还可以用来做地图等等。(有个游戏的规则就是比谁死得更快,懂吗...)在判据处填写deathCount即可做到这种效果。
playerKillCount此判据用于当玩家击杀了另一个玩家时,他的分数便会加一分。只要玩家加进了这个目标杀死玩家就会加分。在判据处填写playerKillCount即可做到这种效果(游戏会自动判断玩家死亡来源,如果来源于玩家便会加分)。
totalKillCount此判据用于当玩家击杀了任意一个生物时,他的分数便会加一分。只要玩家加紧了这个目标后杀死生物就会加分。在判据处填写totalKillCount即可做到这种效果(有意会自动判断生物死亡来源,即使不显示。比如玩家用弓箭杀死生物就会加分,而骷髅就不可以。这个生物包括玩家,杀死玩家也可以加分)。
这会添加一个名为zombies的目标,并且如果把玩家加进目标里,如果钻石剑损坏便会给玩家加一分。minecraft.后面可以变为其他的物品名。(注意,minecraft.是必须要加的,否则会显示“无效的目标准则类型”)
之后的都按照这种格式来进行。
stat.killEntity此判据用于当玩家杀死某个特定的生物时,玩家的分数会加一分。要和totalKillCount区分开来。要填写stat.killEntity.生物名,比如如果想让加进这个目标里的玩家杀死一只苦力怕便会加一分,那就在后面用stat.killEntity.Creeper即可。要注意大小写,不然也会显示“无效的目标准则类型”。stat.entityKilledBy此判据用于当玩家被某个特定的生物杀死时,玩家的分数会加一分。一定要与stat.killEntity区分开来,以及不推荐填写被动型生物。要填写stat.entityKilledBy.生物名即可。和stat.killEntity用法相似。stat.useItem此判据用于当玩家对某个物品做了某些特定的动作时,玩家得分数便会加一分。比如将方块放下,对除了实体工具消耗耐久度等等(比如剪刀,由于剪羊毛算对实体,所以即使剪刀消耗了耐久度就不会加分。所以如果想让它加分还需要有stat.breakItem)。填写stat.useItem.minecraft.物品名即可。(方块放下:比如想放下一个石头加分,那就用stat.breakItem.minecraft.stone即可,.minecraft一定要注意加)同时也可以指定损伤值,比如要放下花岗岩就会加分,那就用scoreboard objectives add 目标名称 stat.useItem.minecraft.stone 1 1stat.craftItem此判据用于当玩家在合成台里合成某个特定的物品时,玩家的分数便会加一分。需要和stat.craftingTableInteraction区分,前者是必须指定特定的,后者只要和合成台互动就会加分。填写stat.craftItem.minecraft.物品名即可。stat.mineBlock此判据用于当玩家挖掘方块并且破坏后,玩家的分数便会加一分。填写stat.mineBlock.minecraft.物品名即可。注意这个判据跟是否掉落物品无关,也就是如果先前用过gamerule doTileDrops false也不会影响加分。teamkill此判据用于当玩家杀死某个颜色的玩家之后,玩家的分数便会加一分。不用指定这个队伍的特定名称,直接指定颜色即可(可用于几个队伍组成同盟之类的)。填写teamkill.颜色名即可。具体颜色名请看tellraw一栏。
killedByTeam(被某个颜色的玩家杀死)我会以后慢慢补上(只有玩家才生效,用teamkill.颜色即可,实体加进队伍里并不会生效),虽然标题上写的是除了服务器指令(毕竟是scoreboard这个大型指令的判据)。这里给您带来了不方便,抱歉= =
2.players
set:
players可以给特定的玩家设定分数。一般用到的是set,基础格式为
scoreboard players set 玩家名/实体名/选择器 目标/队伍 分数
(要和add区分)。玩家/实体/选择器填写玩家登录名称、实体用命名牌/CustonName等起的名称、@a@e等等。目标/队伍填写它们的对应名称,分数填写数字。(add只能用来加分,用这个等于可以减分)分数可以用testfor来探测,当探测到一定数值的分数,就会有输出(原理相同,一般用于高频)。
testfor 选择器[score_目标名称/队伍名称_min=分数]
比如我们要探测在一个叫TeamA的队伍里的所有玩家分数为1,那就用
testfor @a[score_TeamA_min=1]
add:
players还可以给个别玩家或者实体(假玩家也可以)加分,用add即可。具体格式为
scoreboard players add 玩家名 目标/队伍 分数
分数填写数字,填写多少就给玩家加多少分(add的方式只有增加,-1不可以,只能用set或remove)
比如我们给一个在目标名为End,叫做End-Enderman的玩家加一分,用
scoreboard players add End-Enderman End 1
即可做到这种效果。
和目标不同,创建之后需要把玩家或实体加进来才能进行一系列的效果。
remove:
在使用player系列标签时,除了可以加分,还可以直接减分。可以用remove做到。基础格式为
scoreboard players remove 玩家名 目标/队伍名 分数
比如我们给一个叫“End-Enderman”的玩家,在“End”目标里减一分,
scoreboard players remove End-Enderman End 1
配合显示栏,能直接看出玩家的分数变化。
(set可以直接设置,而add是加分,只加不减,这个是只减不加,需要区分)
list:
利用list可以显示出玩家或者实体的分数。
scoreboard players list 玩家/实体名
enable:
加分和减分不仅只有有作弊权限的人可以使用(op),可以用enable给玩家加一个权限。基础格式为
scoreboard players enable 玩家名 目标名
用这个格式可以给玩家一个权限。当按照这个格式给玩家权限之后,玩家就可以使用trigger指令来改变自己的分数。(详请看trigger指令处)
reset:
如果想重置某个玩家里目标的分数, 那就可以用reset。基础格式为
scoreboard players reset 玩家名 目标名
使用之后总是会显示重置了xxx玩家的xxx的分数。可以清除玩家特定的显示栏(而不是直接将所有的显示栏的东西清除)并且将玩家分数设为0。
operation:operation属于计分板的一种系统。它可以用来计算玩家的分数,也就是起到了计算器的作用。operation运算系统的格式为
scoreboard players operation 主要针对对象 主要针对对象的目标名称 运算方式 次要针对对象 次要针对对象的目标名称
举个例子吧,假如主要针对对象分数为1,次要针对对象的分数为1,用的是减法,那么用的第一次就会让主要针对对象的分数减去次要针对对象的分数,也就是1-1=0,之后主要针对对象会变成运算的结果也就是0,而次要针对对象的分数不变。 而如果再用一次(目前主要针对对象的分数为0,次要针对对象为1)的话,就会变为0-1=-1,也就是主要针对对象的分数会变为-1,而次要针对对象还是1。简单来说,就跟计算器的方法相同。
两个目标可以填写相同的,也可以填写不同的(之前需要先创造目标)。计算只会改变玩家所设置的目标分数,并不会改变玩家其他目标分数。比如玩家a是主要针对的对象,玩家b是次要针对对象,两个玩家都在目标为c和d。比如用的是加法,a玩家目标c分数为1,目标d分数2,b目标c分数为1,目标d分数为0。如果a选的是目标c,次要b也是目标c,那么就会由a玩家目标c的分数+b玩家目标c的分数,也就是1+1=2。这时玩家a目标c分数变为2,d目标的分数不会改变。如果a的目标选的是c,b的目标是选的是d,那么就会由a玩家目标c的分数+b玩家目标c的分数,也就是1+0=1,这时玩家a目标c分数还是1,d目标的分数不会改变。所以可以跨目标执行运算。
运算方式有很多种(计分板和title不同,不需要再另执行命令,所以一些运算方式直接加上后缀=即可),分别有
=相等,会让主要针对对象的分数和次要针对对象的分数保持持平。
+=加法,会让主要针对对象的分数和次要针对对象的分数加起来。
-=减法,会让主要针对对象的分数减去次要针对对象的分数。
*=乘法,会让主要针对对象的分数乘以次要针对对象的分数。
/=除法,会让主要针对对象的分数除以次要针对对象的分数。
%=除法取余,取算出来的余数。比如3÷2,余数为1,那么主要针对目标分数会变为1。也就是让主要针对对象的分数除以次要针对对象的分数并且主要对象的分数会变为除出来的余数。如果是整数那么会变为0。
> 如果目前主要针对对象的分数比次要针对对象的分数小,那么主要针对对象的分数会和次要针对对象的分数持平。反之,如果主要针对对象的分数比次要针对对象的分数大,那么分数不会有变化。
< 如果目前主要针对对象的分数比次要针对对象的分数大,那么主要针对对象的分数会和次要针对对象的分数持平。反之,如果主要针对对象的分数比次要针对对象的分数小,那么分数不会有变化。
>< 几种运算方式里唯一会改变次要针对对象分数的运算方式。用这个运算会将主要针对对象和次要针对对象的分数互换。
举个例子,比如
scoreboard players operation a 1 += b 1
运算的格式略复杂,当使用成功时会显示操作已应用成功。
3.teams
teams一般用来执行一些队伍操作。它可以在计分板上添加一个队伍并且可以让这个队伍做出许多效果。
add:此指令用于创造一个队伍。这是要执行计分板上队伍效果的前提。基本格式为
scoreboard teams add 创造队伍名称 显示名
创造队伍名称处填写你想创造队伍的名字,显示名原理和objectives相同,需要显示栏才可运行。
join:此指令用于将实体加入一个队伍从而起到可以给玩家或者实体执行一些命令的效果。基本格式为
scoreboard teams join 队伍名称 玩家/实体名称
队伍名称填写加入的队伍(加入后执行其他命令可以填写这个队伍)。除了玩家,还可以将任何实体加入这个队伍。
option:此指令用于给队伍执行一系列的效果。基本格式为
scoreboard teams option 队伍名称 效果名称 效果状态
下面是option的效果选项。
friendlyfire:此效果选项用于给队伍开启友好状态。当一个队伍开启了友好状态时,队伍中的玩家亦不可互相伤害。基本格式为
scoreboard teams option 队伍名称(使用add)friendlyfire true/false
true/false即为状态,当填写true的时候,这个队伍便会开启友好状态。实体也可以开启友好,具体看这个帖。
nametagVisibility:此效果选项用于对看到队友头上的姓名标签做一系列的操作。具体格式为
scoreboard teams option 队伍名称 nametagVisibility nametagVisibility的数据标签
always:此数据标签用于对玩家头上的姓名标签做出一直显示的效果。在nametagVisibility的数据标签处填写always即可做到这种效果。
(由于是自己跟自己联机,双开mc,并且渣水准,所以只能凑活用了...)比如把一个叫behurt的队伍做出这样的效果
scoreboard teams option behurt nametagVisibility always
never:此数据标签用于对玩家头上的姓名标签做出不再显示的效果。在nametagVisibility的数据标签处填写never即可做到这种效果。
hideForOtherTeams:此指令用于对玩家头上的姓名标签做出其他队伍的玩家看不到的效果。也就是使用后,其他队伍的玩家不能再看到这个队伍里玩家的姓名标签,只有自己队伍的玩家才能看见。在nametagVisibility的数据标签处填写hideForOtherTeams即可做到这种效果。
hideForOwnTeam:此指令用于对玩家头上的姓名标签做出自己队伍的玩家看不到的效果。也就是使用之后,这个队伍的玩家不能再看到自己队伍玩家的姓名标签,只有其他队伍的玩家才可以看到。在nametagVisibility的数据标签处填写hideForOwnTeam即可做到这种效果。
deathMessageVisibility:此指令用于对玩家死亡时的死亡信息做出一系列的效果。具体格式为
scoreboard teams option 队伍名称 deathMessageVisibility deathMessageVisibility的数据标签
deathMessageVisibility和nametagVisibility的数据标签基本相同。
always:此指令用于对玩家死亡时的死亡信息做出一直显示的效果。在deathMessageVisibility的数据标签处填写always即可做到这种效果。
never:此指令用于对玩家死亡时的死亡信息做出不再显示的效果(可以直接用gamerule showDeathMessages false)。在deathMessageVisibility的数据标签处填写never即可做到这种效果。
hideForOtherTeams:此指令用于对玩家死亡时的死亡信息做出对其他队伍的玩家不显示效果。也就是使用后,其他队伍的玩家不能再看到这个队伍里是否会有玩家死亡,只有自己队伍的玩家才能看见。在deathMessageVisibility的数据标签处填写hideForOtherTeams即可做到这种效果。
hideForOwnTeam:此指令用于对玩家死亡时的死亡信息做出对自己队伍的玩家不显示效果。也就是使用后,自己的队伍的玩家不能再看到是否会有自己队伍的玩家死亡,而其他队伍的玩家依然能看见。在deathMessageVisibility的数据标签处填写hideForOwnTeam即可做到这种效果。
seeFriendlyInvisibles:此指令用于对自己队伍的玩家隐身效果做出一些操作。用这个指令,可以看到自己队伍隐身的玩家。基本格式为
scoreboard teams option 队伍名称 seeFriendlyInvisibles true/false
填写true的效果:
当然,别的队伍依然看不到隐身的玩家,自己队伍的看到隐形的玩家是半透明的效果。
color:此指令用于改变玩家队伍的颜色。当使用color之后,玩家的侧边栏以及用list等等都会变成玩家选择的颜色。基本格式为
scoreboard teams option 队伍名称 color 颜色名称
颜色名称一共有16种,和tellraw相同,具体颜色请看tellraw部分的color。
由于可以直接用这种方法来进行变色效果,所以可以省略sidebar.team这一步骤。
list:此指令用于显示所有队伍里的玩家(实体也可以)。和其他list不同,只要加进来的玩家/实体就会显示。基本格式为
scoreboard teams list 队伍名称
使用这条指令可以把一个特定队伍里的所有玩家(实体)。
(ps:这样的不推荐在命令方块里使用,直接在聊天框里输入指令比较方便)
也可以不输入队伍名称,这样会显示有多少队伍并且有几个玩家。
leave:此指令用于将某个特定的玩家或者实体离开某个队伍。基本格式为
scoreboard teams leave 玩家名称/实体名称
比较特殊的是,只要指定特定的玩家或者实体即可,并不用指定某个队伍。
empty:此指令用于解散一个队伍里的所有玩家以及实体。当使用这个指令之后,指定的队伍将会移除所有的玩家和实体。但这并不代表删除这个队伍。基本格式为
scoreboard teams empty 队伍名称
并不用指定玩家,只需要指定队伍即可。
remove:此指令用于移除一个队伍。当使用这个指令之后,指定的队伍会被删除。(注意:删除队伍后队伍中的玩家和实体也会被全部解散)。建议慎用,因为当删除这个队伍后队伍中的一些效果将不会再度存在(只能再创)。基本格式为
scoreboard teams remove 队伍名称
计分板指令可能初期理解不太容易,但这些指令基本上都是固定的。
2.trigger指令
这个指令用于给目标加分。用法跟计分板的players set或add相同,但是不同的一点是,后者必须是管理员(有作弊权限)才能使用,而前者任何人都可以使用。在这之前,首先要有作弊权限的人给没有作弊权限的人一个权限。(有作弊权限的人直接使用trigger也可以,和players的最终效果没有什么区别)先用
scoreboard players enable 玩家名称 创建目标名称
具体可以看计分板处。trigger指令基本格式为
trigger 创建目标名称 set 分数
这个指令可以用来设定玩家的分数,和players set相同。这之前必须要先创建目标才可以。(创建的目标判据必须为trigger,否则这个指令会提示不是触发型或者触发型无效等一系列话语)之后即可使用这个指令为目标设定分数分。
除了set,也有add指令(依然是只能加分)。基本格式为
trigger 创建目标名称 add 分数
一定要注意在创建目标时加上trigger判据。
3.stats指令
说起来,这个指令就相当于计分板的高级判据。使用这个指令需要先创建一个计分板,比如创造一个目标。具体格式为
stats 模式 坐标/玩家名 set/clear stats判据 目标名称
一般用于探测命令输出。当玩家执行一项命令成功之后,影响到的方块/实体数量将会被即为一定数量的值。
模式有两种,分别是entity和block。这里一定要区分:如果是玩家用聊天框执行的命令,那么就用entity;如果是玩家用命令方块执行的命令,那么就用block。如果玩家用命令方块执行的命令却使用的是entity,那么不会stats即使显示了将xxx(stats判据)的统计信息储存在了xxx(队伍名称/目标名称)的xxx(玩家名)上,命令成功了也不会显示影响到的方块/实体数量。所以一定要区分开来。
坐标是block模式用的,也就是指定成功执行命令的命令方块坐标处。而玩家名称是entity模式用的。set是执行命令时需要用的,也是比较基础的。一般情况下要用到stats设置分数都需要用到set。而clear是用于清除统计信息。当使用完clear之后,玩家/方块执行命令将不会再影响分数(clear不用添加队伍名称/目标名称)。
stats判据:
AffectedBlocks:此判据用于区分命令影响的方块数量。比如玩家使用setblock召唤出一个方块,那么分数就会自动设定为1。stats判据很高级,分数是自动设定,所以当玩家使用fill类似的指令时,比如使用fill ~ ~1 ~ ~ ~2 ~ redstone_block之后,那么分数会自动设定为2,而把波浪号的2改为1之后,也就是之后填充1个红石块,那么分数又会自动变为1。要注意好是命令方块执行命令还是玩家用聊天框执行命令。
AffectedEntities:此判据用于区分命令影响的实体数量。比如玩家使用summon召唤出一个实体,那么分数就会自动设定为1。性质与AffectedBlocks相同。
SuccessCount:此判据用于区分命令成功的次数。无论任何指令,只要成功输出便会+1。
QueryResult:此判据用于区分询问命令的结果。比如玩家在使用time指令时,得到的结果便会变为玩家得分数。
其中,有一个较特殊的效果,那就是用gamerule来实现对应加分效果(这里感谢[size=1em]乾.坤指出丢下的部分)
和其他gamerule数据标签不同的是,这个gamerule需要指定目标的值。
首先需要创造一个目标,并且将玩家加入到这个目标里(详请看scoreboard,前者用objectives的add,后者用players的set),之后使用
stats entity 玩家名称/选择器 set QueryResult 玩家名称(要进行对应分数变化的玩家) 创造目标名称
在这之后,就可以用gamerule直接来改变分数。具体用法为
gamerule 创造目标名称 分数
分数由自己制定,之后直接使用一次(图中为entity,会自动追踪使用这个命令的玩家,否则用命令方块需要指定block的坐标)
gamerule 创造目标名称
你就能发现,分数已经变为你指定的分数了。
AffectedItems:此判据用于区分命令影响的物品数量。比如玩家使用give给玩家一个物品,那么分数就会自动设定为1。而当玩家用give给玩家更多的物品时,设定就会变得跟给予玩家的物品相同。
当然,使用这些指令,前提是必须要创建计分板才可以执行。
总之,stats步骤为创造计分板-设定玩家-建立stats变量-执行命令。一定要按照这个步骤来走。
玩家操作相关
1.xp指令
这个指令用于给玩家经验值。在生存模式做出附魔等动作都会消耗一定量的经验值。基本格式为
xp 经验值数量 玩家名
经验值数量填写大于0的数字,意为给玩家多少经验。(有人说后面的玩家名处只能填写选择器,实际上填写玩家的登陆名也可以)
如果想给玩家一定等级的经验值,用
xp 经验值数量L 玩家名
L意为level,比如填写1,就是让玩家升一级
如果用level的形式,那么就可以填写负数来做到让玩家掉级。比如
xp -1L @a
用这个指令可以给让玩家掉一级。
(注意:只有level的形式才可以填写负数,不然就会显示“无法给玩家为负数的经验值”)
2.gamemode指令
mc中最常用的指令之一,用来改变游戏模式。如果玩家想先在创造里建一些东西后变生存(前提是必须要开作弊,初始没开作弊的可以在开局域网时设置)就需要用到这个指令(和difficulty指令不同,difficulty的效果可以在设置栏里找到,而游戏模式则不可以)基本格式为
gamemode 模式
模式处填写数字或者英文名称。和give不同的是,升为1.8后数字依然可以在gamemode处运用。(比较方便)
输入gamemode 0或者gamemode survival即可将游戏模式转换为生存模式;
输入gamemode 1或者gamemode creative即可将游戏模式转换为创造模式;
输入gamemode 2或者gamemode adventure即可将游戏模式转换为冒险模式;
输入gamemode 3或者gamemode spectator即可将游戏模式转换为旁观模式。
目前无法通过指令变为极限模式(为了防止损坏存档)
还可以通过选择器的方式来改变单个玩家的模式,比如
/gamemode 1 玩家名
这个方法就可以指定特定的玩家,例如僵尸在两个玩家当中,如果一个玩家突然变为生存,僵尸只会追逐变生存的玩家,而另一个玩家并不会改变模式亦不会受到攻击性生物的干扰。
用法和difficulty相同。(defaultgamemode和gamemode的用法一样,但是前者使用在服务器)
3.achievement指令
此指令用于给予玩家成就。当玩家完成一系列的要求时,就会得到一些成就(就像论坛里得到勋章一样)。利用achievement give可以跳过要求直接获得一项成就。基本格式为
achievement give 成就名 玩家名
其中成就名为必填项,玩家名可以在聊天框中不填或者填写选择器等等(命令方块属于必填项)。如果不填(聊天框里)则会将这项成就授予执行命令的玩家。
成就名:一般格式是achievement.xxx。xxx共有openInventory(打开物品栏成就)、buildWorkBench(制作工作台成就)、buildPickaxe(制作镐子成 就)、buildSword(制作剑成就)、buildHoe(制作锄头成就)、buildFurnace(制作熔炉成就)、makeBread(制作面包成就)、bakeCake(自作蛋糕成就)、buildBetterPickaxe(制作木镐以外的镐子)、bookcase(制作书架)、enchantments(制作附魔台)、overpowered(制作附魔金苹果)、cookFish(制作熟鱼)、acquireIron(制作铁锭)、breedCow(繁殖一头牛)、killEnemy(杀死攻击生物)、killWither(杀死凋零)、ghast(用恶魂的火球杀死恶魂)、mineWood(获得木头成就)、killCow(获得皮革)、diamonds(获得钻石)、blazeRod(获得烈焰棒)、portal(进入地狱传送门)、theEnd(进入末地传送门)、theEnd2(返回末地传送门)、snipeSkeleton(用弓杀死50步开外的骷髅)、onARail(做矿车移动到1000步以外的地方)、spawnWither(生成凋零)、potion(酿造药水)、flyPig(骑猪让猪受到2格伤害)、overkill(一击造成9格心的伤害)、fullBeacon(造出三层信标,三层信标意为最高级信标)diamondsToYou(把钻石扔出去,有实体/玩家捡走)、exploreAllBiomes(到了所有的生物群系)这几种成就。achievement.是必须要填写的前缀。
要注意如果授予一些高级成就(需要完成其他成就),那么授予这个成就的同时也会授予其他成就。
也可以清除玩家的成就,那就需要用到take,基本格式为
achievement take 成就名 玩家名
使用这个指令可以做到消除成就的效果。
当清除一个玩家的高级成就时,其他成就并不会消失。
4.say指令
用于向玩家发出话语。可以制定特定的玩家或者运用选择器等等,基本格式为
say 发送的信息
say默认为对世界所有人发送信息,所以不用填写选择器。如果是在聊天框里发送的话,则会将来源玩家显示出来。
相反,如果在命令方块里发送就会默认为系统发送(显示@)。也可以使用选择器来显示世界内所存在的玩家,比如
say 发送的信息 @a
只是用这种方法不能用来查看玩家的UUID。
用选择器显示的玩家有点和suggest_command相像,可以在聊天框里点击并且会自动输入在聊天框里,可以用来发送信息。
如果是单纯的聊天还是比较推荐直接在聊天框里发送文字。
5.me指令
用于发出一些动作话语。用这个指令可以显示发出这个指令的玩家正在干什么(干什么的话语是玩家自定义的,和say、tellraw等性质相同)
基本格式为
me 显示话语
显示话语和text差不多,填写什么就会显示什么。
和say与tellraw不同的是,这个指令直接就可以使用,不需要作弊权限。(非op玩家依然可以用)
推荐在聊天框里使用这个指令,否则在命令方块使用的话将不会显示玩家,只会显示默认为系统的@
6.tellraw指令
mc中最常用的指令之一。这个指令也属于一个系统,和say、title非常相似。基本格式为
tellraw 玩家 Json信息
比较基础的Json信息(Json信息在这里=数据标签)就是text,用来向玩家说一段话。比如
tellraw @p {text:发现玩家}
玩家处可以填写玩家登陆游戏时的登录名或者选择器等等。(注:有人说这个必须要加引号,实际上引号可以省略,对于只是普通的话语可以不加,但是对于某些效果必须加上,否则指令无效)
和say相比,好处是省略了前面说话者的名字,也就容易让人察觉到这句话是哪些人说的。
对比图
(say另有用处,比如用来查看UUID)
text还可以用来清屏,n可以把文字接到下一行,如果要清屏那就用
tellraw @p {text:nnnnnnnnnnnnnnnn}
(这种Json信息必须要加引号,否则无效,并且要注意符号的方向)
Json信息要求比较苛刻,有一些东西即使有一点点失误都不会触发指令。(会显示无效的Json信息)
text触发的信息还可以给它加上效果,比如颜色。类似效果基本格式为
tellraw 玩家 {text:xxx,Json效果数据标签}
Json效果数据标签
color此指令用于区分tellraw文字部分的颜色。在Json效果数据标签处填写color:xxx即可给文字加上颜色。默认为白色(注意大小写,不然即使填的是正确的依然会为白色)。一共有黑色(black)、红色(red)、深绿色(dark_green)、钻石蓝(aqua,tellraw特有颜色)、蓝色(blue)、深紫色(dark_purple)、青色(dark_aqua)、灰色(gray)、深灰色(dark_gray)、深红色(dark_red,tellraw特有颜色)、黄绿色(green)、黄色(yellow)、粉色(light_purple)、湛蓝色(dark_blue,tellraw特有颜色)、橙色(gold)、白色(white)16种颜色。其中tellraw特有的颜色是无法用染料得到的颜色,只有用tellraw的color才能得出。
bold此指令用于区分tellraw文字部分是否加粗。如果在Json效果数据标签处填写bold:true(之后的都要这么填写)即可给tellraw的文字加粗。(可与Json效果数据标签联用)
italic此指令用于区分tellraw文字部分是否为斜体。如果在Json效果数据标签处填写italic:true即可让tellraw的文字变为斜体。(可与Json效果数据标签联用)
underlined此指令用于区分tellraw文字部分是否有下划线。如果在Json效果数据标签处填写underlined:true即可让tellraw的文字加上下划线。(可与Json效果数据标签联用)
strikethrough此指令用于区分tellraw文字部分是否有删除线。如果在Json效果数据标签处填写strikethrough:true即可让tellraw的文字加上删除线。(可与Json效果数据标签联用)
obfuscated此指令用于区分tellraw文字部分是否为一种特殊的乱码文字。如果在Json效果数据标签处填写obfuscated:true即可让tellraw的文字变为乱码文字。文字必须为英文才有效。(由于电脑的某些问题使用这个代码会对本人电脑造成一些影响,具体效果不太清楚,还请见谅)
insertion此指令用于区分tellraw文字部分是否可以通过一些操作来做到在聊天栏里出现额外的文字的效果(和clickEvent加上/say有些相似)。方法为按下Shift+点击,如果在Json效果数据标签处填写insertion:xxx即可出现不同的文字效果。注意这个文字同时按Shift和点击后,只是在聊天输入框里出现文字,并不是像text的文字效果那样。insertion也可以加引号,当遇到空格类似的特殊符号需要加上。(可联用)
这些Json数据标签都可以加在一起,比如
tellraw @a {text:苦力怕来了,bold:true,strikethrough:true,italic:true,color:gold,underlined:true,insertion:输入kill @e有惊喜}
另一个基础的标签为selector,用于显示存在的玩家或实体的信息,和say的作用差不多。基础格式为
tellraw 玩家 {selector:选择器}
选择器处填写@a、@p、@e、@r等(亦可加上type或name,就像testfor)。比如填写@e,效果为
和say一样,可以用来查看UUID用于entitydata指令等等。
在使用text的时候,有的人发现假如给text添加了颜色后,所有的文字都会有这种颜色。比如加粗,只能全部加粗而不能单个加粗,那就需要添加额外的Json数据标签了。extra指正是用来添加额外的效果。基本用法为
tellraw 玩家 {text:文字,extra:[{text:文字}]
第一个text后可以加一系列的效果,比如color等等,不过这只对第一个text文字内容有效,所以给文字添加各种各样的效果。比如
tellraw @a {text:Dangerous,color:red,extra:[{text: Zombie,color:blue}]}
一定要注意括号。extra里面还可以接着加text,比如
tellraw @a {text:Dangerous,color:red,extra:[{text: Zombie,color:blue},{text: Coming,color:dark_blue}]}
另一个text里依然可以加Json数据标签。(所以不用一直extra再套extra)
Event系列:Event用来给Json信息添加一些奇特的效果。具体格式为
tellraw 玩家 {text:文字”,clickEvent/hoverEvent:{action:clickEvent/hoverEvent的Json数据标签,value:{命令/效果}
用来给tellraw的文字加一种点击效果,有它存在指定字文字便可以被点击,逐渐出现一系列效果。
clickEvent
run_command:此指令用于在点击特定的文字后触发指令。基本格式为
tellraw 玩家 {text:文字,clickEvent:{action:run_command,value:{命令/效果}
就像execute一样,后面可以执行其他命令,也就是点击之后就会执行那个命令。任何命令都适合。比如
tellraw @a {text:召唤术,color:red,clickEvent:{action:run_command,value:/summon VillagerGolem ~ ~20 ~ {PlayerCreated:1}}}
激活指令后点击文字即可召唤出一只默认为玩家创造的铁傀儡。value后面加上任何指令以及其指令的数据标签都可以。需要注意的是引号的位置,前引号要引在命令之前,后引号引在命令之后,而不能引在前面的Json信息标签的后面,否则会显示Json信息无效。
suggest_command:此指令用于区分当玩家点击用来获得value后面的文字并且自动复制到聊天栏里。用法和run_command相同。就像insertion。例如
tellraw @a {text:点一下吧,color:aqua,clickEvent:{action:suggest_command,value:kill @e}}
(value也可以起到发一段话的作用。注意比如run_command必须要加那个斜杠,否则默认为发一段话,就像say一样)
效果:
(可以恐吓队友2333,不加“/”的话kill @e只会当作玩家说的话发出去2333)
hoverEvent
当玩家将鼠标指针悬停在制定文字上便会显示玩家指定的效果。
show_text:此指令用于区分当鼠标悬停在指定文字时是否会显示另外一段文字。基本格式为
/tellraw @a {text:文字,hoverEvent:{action:show_text,value:另一段文字}}
当鼠标指针悬停在第一个“文字”的时候,便会出现另一段文字的内容。
show_item:此指令用于当玩家将鼠标指针悬停在指定文字上会显示一种物品(可以使添加过NBT的物品)。格式为
/tellraw @a {text:文字,hoverEvent:{action:show_item,value:{物品数据标签}}}
之后就会显示这个物品的属性和方块代码等等。举个例子,比如
/tellraw @a {text:鼠标点这里,hoverEvent:{action:show_item,value:{id:command_block}}}
就会在悬停在“鼠标点这里”的文字时会出现普通命令方块的介绍。
小提示:id前面必须要加括号,否则会显示这样↓
show_achievement:此指令用于当玩家将鼠标指针悬停在特定文字出会显示某个成就的信息(具体可以看achievement give一栏)。基本格式为
/tellraw 玩家名 {text:文字,hoverEvent:{action:show_achievement,value:成就名}}
注意:成就名处必须要填写achievement.xxx,否则就会像显示无效的物品一样,出现了Invalid achievement)
举个例子,比如
/tellraw @a {text:您获得了一个新成就,hoverEvent:{action:show_achievement,value:achievement.killWither}}
show_entity:此指令用于当玩家将鼠标悬停在特定文字处会显示某个实体的信息。此实体信息可以是假实体,完全由玩家创造。基本格式为
/tellraw @a {text:文字,hoverEvent:{action:show_entity,value:{type:实体类型,name:实体名称,id:自拟的UUID或者介绍}}}
就和summon一样,只不过id处可以自拟。比如
/tellraw @a {text:图鉴326号,hoverEvent:{action:show_entity,value:{type:Giant,name:进击的巨人,id:巨人8791号}}}
效果拔群
Json信息是学习命令初期不太好理解的。可以先学学其他的指令再来学习tellraw。
7.titile指令
和tellraw有些相似,但是不同的是,tellraw是显示在聊天栏,而title是直接在玩家屏幕上的。
具体格式为
title 玩家 title选项 Json信息
玩家填写选择器或者人名。而title选项要填写title特有的方式。Json信息和tellraw相同,比如
title @a title {text:123456789,color:red}
title选项:
title:此选项用于将玩家发出的话语显现在屏幕上,也是title最基础的选项。基本格式为
title 玩家 title Json信息
之后填写选项也按照这种格式来填写。
和text非常相似,但是如果单单就是发出话语可以不加text。
subtitle:此选项用于给屏幕上的title文字添加一个副标题。需要注意这个指令需要和带title选项的指令分别执行一次才会有效果。当执行完一次subtitle之后可以给下一次title添加副标题,基本格式为
tltle 玩家名 subtitle 副标题Json信息
分别执行一次后,会出现一次副标题(仅会出现一次)。比如执行一次
title @a subtitle {text:来自末影人,color:red}
之后再激活
title @a title 下雨了
效果为
clear:此选项用于将屏幕上的字幕清除。使用/title @a clear即可将屏幕上的字幕瞬间清除。由于一般直接title的字幕很短,所以一般都和times联用。
times:此选项用于调整字幕存在的时间。和subtitle一样,需要分别激活。基本格式为
title 玩家名 times 出现时间 存在时间 消失时间
普通的title如果注意看就能发现,屏幕上的文字是逐渐出现并且逐渐消失的,是有特效的。比如填写
title @a times 20 20 20
再执行title,屏幕上的文字出现时间就会变为大约1秒,停留大约1秒,消失大约1秒。
这个选项有很大的用处,比如激活
title @a times 5 10086 5
再分别激活
title @a subtitle 囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧
title @a title 十五字十五字十五字十五字
没有作弊权限的玩家会很抓狂的......(在屏幕上存在时间大约为504.3秒......)
reset:此选项用于重置所有title选项。使用之后已激活的subtitle和times都会恢复为默认状态
其余讲解请看tellraw部分。
8.tell指令
用于给特定玩家一条信息,也就是私聊。基本格式为
tell 玩家名称 内容
如上图,白色的是发起tell的玩家,灰色的是被指定tell的玩家。也就是发起人会显示xxx→xxx,被发起人会显示xxx whispers。
要注意只有服务器才可以用这种指令。
9.msg指令
用于给特定玩家发一条信息。和tell有一些区别,基本格式为
msg 玩家名称 内容
前者是发起msg的玩家的效果,后者是被选定msg玩家的效果。也就是发起人会显示我→xxx,被发起人会显示xxx→我。
需要注意只有服务器才可以用这个指令。
特效相关
1.particle指令
此指令用于在世界里生成颗粒。颗粒几乎无处不在,无论是攻击生物或者对生物执行操作,还是天然的方块等等,都有自己独特的颗粒。甚至包括像远古守护者鬼脸类似的,都算作颗粒。
基本格式为
particle 颗粒名称 执行坐标 颗粒坐标 颗粒速度 颗粒数 执行模式
颗粒名称包括crit(攻击生物颗粒)、explode(生物死亡颗粒)、droplet(下雨颗粒)、snowshovel(下雪颗粒)、slime(史莱姆跳跃颗粒)、mobappearance(远古守护者鬼脸颗粒)、note(音乐盒颗粒)、angryVillager(在村庄打村民的生气颗粒)、happyVillager(产生村民的新交易选项、骨粉种植等颗粒)、heart(驯服生物颗粒)、portal(下界传送门、末地传送门、末影人瞬移颗粒)、depthsuspend(虚空颗粒)、reddust(红石激活颗粒)、smoke(火把颗粒)、largeexplode(恶魂火球爆炸等小型爆炸颗粒)、hugeexplosion(末影龙死亡等大型爆炸颗粒)、splash(坐船、水在方块上的掉落颗粒)、suspended(水下颗粒)、wake(钓鱼颗粒,不会下落)、lava(岩浆颗粒)、dripLava(岩浆在方块上的掉落颗粒)、largesmoke(火焰燃烧颗粒)、fireworksSpark(烟花颗粒)、spell(药水颗粒)、witchMagic(女巫喝药水颗粒)、instantSpell(治疗/伤害药水特殊颗粒)、magicCrit(附魔触发颗粒)、townaura(菌丝颗粒)、enchantmenttable(附魔台颗粒)、flame(熔炉燃烧颗粒)、barrier(屏障颗粒)、snowballpoof(雪球碎裂颗粒)、footstep(脚印颗粒)几种不用指定任何效果的颗粒,还有几种需要指定id的颗粒。比如blockcrack,需要用
blockcrack_物品id来指定。比如
particle blockcrack_119 ~ ~1 ~ 1 1 1 0.0005 1500
可以指定损伤值,比如
particle blockcrack_1_1 ~ ~1 ~ 1 1 1 0.0005 1500
还有blockdust_物品名(物品破坏颗粒)、iconcrack_物品名(吃东西颗粒),按照上面的格式填写即可。
这几种指定物品名的颗粒也可以制定损伤值,比如
/particle iconcrack_351_1 ~ ~1 ~ 1 1 1 0.00001 2000
执行坐标是颗粒基础的坐标,会在玩家指定的地方产生效果。而颗粒坐标是在前面执行坐标的基础上扩散的坐标。比如填写1 0 0,颗粒会向x为1的地方扩散,而填写0 1 0,效果是摞起来的,填写0 0 1,颗粒会向着z为1的地方扩散。填写不同的坐标则会产生不同的扩散效果。
颗粒速度填写数字,不仅决定了颗粒移动的速度,也决定了颗粒存在的时间。颗粒数填写数字,填写多少就会有多少个这样的颗粒,如上图,假如填写1就不会有这么多的生气标志,而只会出现一个生气标志。(远古守护者鬼脸颗粒比较特殊,填写越多颜色越重,但不会增加鬼脸数量)需要注意数量最好不要填的太多,填写一万以上就很容易卡,甚至会对游戏存档造成损坏。
执行模式有anything和force。anything为默认的模式,而使用force可以让在颗粒16格外的玩家看到。任何颗粒(包括远古守护者的鬼脸颗粒),只有16格的视野,16格以外不能看到。而填写force可以避免。
粒子效果除了可以用作装饰,还可以迷惑、干扰玩家(比如岩浆、鬼脸等等),用处广泛。
2.playsound指令
此指令用于向玩家播放在mc里存在的音效。基本格式为
playsound 声音名称 玩家名称
声音名称填写playsound自己本身拥有的声音,比如
playsound mob.zombie.say @a
便会像全体玩家播放僵尸空闲音效。音量默认为生物自身的音量。但是可以指定。基本格式为
playsound 声音名称 玩家名称 播放坐标 音量 音调
播放坐标是声音坐标的地点,如果不指定玩家听到的是正好的声音。当播放的声音超过了半径约128格以外,玩家就不会再听到指定的音效了(不包括128,超过了128之后就会显示玩家离得太远了,无法听到这声音)
音量是播放音量的大小,比如
playsound mob.endermen.stare @a ~ ~ ~ 15
但是效果非常不明显,而坐标可以弥补这一点。而音调是音调的高低,比如
playsound mob.ghast.scream @a ~ ~ ~ 3 0.5
会像玩家播放很低的恶魂尖叫声音。
下面是所有生物的声音。
全生物声音一览
僵尸系列:
mob.zombie.hurt(僵尸挨打)、mob.zombie.death(僵尸死亡)、mob.zombie.say(僵尸空闲)、mob.zombie.step(僵尸走路)、mob.zombie.remedy(僵尸受治疗)、mob.zombie.metal(未引进的声音)、mob.zombie.infect(村民变僵尸)、mob.zombie.unfect(僵尸变村民)、mob.zombie.wood(僵尸砸门)、mob.zombie.woodbreak(僵尸砸坏门)。
骷髅/凋零骷髅系列:
mob.skeleton.death(骷髅死亡)、mob.skeleton.say(骷髅空闲)、mob.skeleton.hurt(骷髅被打)、mob.skeleton.step(骷髅脚步)。
苦力怕系列:
mob.creeper.say(苦力怕挨打)、mob.creeper.death(苦力怕死亡)。
末影人系列:
mob.endermen.hit(末影人挨打)、mob.endermen.death(末影人死亡)、mob.endermen.idle(末影人空闲)、mob.endermen.scream(末影人激怒)、mob.endermen.portal(末影人瞬移)、mob.endermen.stare(末影人嚎叫)。
蜘蛛系列:
mob.spider.say(蜘蛛挨打、空闲)、mob.spider.death(蜘蛛死亡)、mob.spider.step(蜘蛛脚步)。
史莱姆系列:
mob.slime.attack(史莱姆攻击)、mob.slime.small(大史莱姆挨打/死亡/空闲)、mob.slime.big(小史莱姆挨打/死亡/空闲)。
蠹虫系列:
mob.silverfish.hit(蠹虫挨打)、mob.silverfish.kill(蠹虫死亡)、mob.silverfish.say(蠹虫空闲)、mob.silverfish.step(蠹虫脚步)。
僵尸猪人系列:mob.zombiepig.zpighurt(僵尸猪人挨打)、mob.zombiepig.zpigdeath(僵尸猪人死亡)、mob.zombiepig.zpig(僵尸猪人空闲)、mob.zombiepig.zpigangry(僵尸猪人激怒)。
恶魂系列:
mob.ghast.scream(恶魂挨打)、mob.ghast.death(恶魂死亡)、mob.ghast.moan(恶魂空闲)、mob.ghast.charge(恶魂扔火球之前)、mob.ghast.fireball(恶魂火球)、mob.ghast.affectionate_scream(恶魂空闲2)。
烈焰人系列:
mob.blaze.hit(烈焰人挨打)、mob.blaze.death(烈焰人死亡)、mob.blaze.breathe(烈焰人空闲)。
地狱史莱姆系列:
mob.magmacube.big(地狱大史莱姆挨打/死亡/空闲)、mob.magmacube.small(地狱小史莱姆挨打/死亡/空闲)、mob.magmacube.jump(地狱史莱姆跳跃)
守卫者系列:mob.guardian.hit(守卫者在水里挨打)、mob.guardian.land.hit(守卫者在陆地挨打)、mob.guardian.death(守卫者在水里死亡)、mob.guardian.land.death(守卫者在陆地死亡)、mob.guardian.attack(守卫者攻击)、mob.guardian.idle(守卫者空闲)、mob.guardian.land.idle(守护者在陆地空闲)mob.guardian.flop(守护者跳跃)。
远古守护者系列:
mob.guardian.elder.hit(远古守护者挨打)、mob.guardian.elder.death(远古守护者死亡)、mob.guardian.elder.idle(远古守护者空闲)。mob.guardian.curse(远古守护者加疲劳)。
狼系列:
mob.wolf.hurt(狼挨打)、mob.wolf.death(狼死亡)、mob.wolf.bark(狼空闲)、mob.wolf.panting(狼空闲2)、mob.wolf.growl(狼激怒)、mob.wolf.howl(狼嚎叫)、mob.wolf.shake(狼抖落水)、mob.wolf.whine(被驯服的狼祈求食物)、mob.wolf.step(狼走路)。
铁傀儡系列:
mob.irongolem.hit(铁傀儡挨打)、mob.irongolem.death(铁傀儡死亡)、mob.irongolem.throw(铁傀儡攻击)、mob.irongolem.walk(铁傀儡走路)
末影龙系列:
mob.enderdragon.hit(末影龙挨打)、mob.enderdragon.end(末影龙死亡)、mob.enderdragon.growl(末影龙空闲)、mob.enderdragon.wings(末影龙飞行)。
凋零系列:
mob.wither.spawn(凋零生成)、mob.wither.hurt(凋零挨打)、mob.wolf.death(凋零死亡)、mob.wither.idle(凋零空闲)、mob.wither.shoot(凋零射击)。
村民系列:
mob.villager.hit(村民挨打)、mob.villager.death(村民死亡)、mob.villager.idle(村民空闲)、mob.villager.haggle(打开交易)、mob.villager.yes(村民满意)、mob.villager.no(村民不满意)。
普通马系列:
mob.horse.death(马死亡)、mob.horse.hit(马挨打)、mob.horse.idle(马空闲)、mob.horse.breathe(马呼吸)、mob.horse.soft(马走路)、mob.horse.wood(被驯服的马走路)、mob.horse.gallop(马跑步)、mob.horse.angry(骑马/驯服马失败)、mob.horse.armor(马穿装甲)、mob.horse.leather(马穿鞍)、mob.horse.jump(马跳跃)、mob.horse.land(马落地)。
驴/骡系列:
mob.horse.donkey.hit(驴/骡挨打)、mob.horse.donkey.death(驴/骡死亡)、mob.horse.donkey.idle(驴/骡空闲)。mob.horse.donkey.angry(骑/驯服驴/骡失败)。
僵尸/骷髅马系列:
mob.horse.zombie.death(僵尸马死亡)、mob.horse.zombie.hit(僵尸马挨打)、mob.horse.zombie.idle(僵尸马空闲)、mob.horse.skeleton.death(骷髅马死亡)、mob.horse.skeleton.hit(骷髅马被打)、 mob.horse.skeleton.idle(骷髅马空闲)。
豹猫/猫系列:
mob.cat.hitt(豹猫/猫挨打/死亡)、mob.cat.meow(猫空闲)、mob.cat.purreow(猫空闲2)、mob.cat.purr(猫吃鱼)、mob.cat.hiss(猫的嘶嘶声)。
猪系列:
mob.pig.say(猪挨打/空闲)、mob.pig.death(猪死亡)、mob.pig.step(猪走路)。
羊系列:
mob.sheep.say(羊死亡/空闲)、mob.sheep.shear(羊被剪)、mob.sheep.step(羊走路)。
牛/哞菇系列:
mob.cow.hurt(牛/哞菇挨打/死亡)、mob.cow.say(牛/哞菇空闲)、mob.cow.step(牛/哞菇走路)。
鸡系列:
mob.chicken.hurt(鸡挨打/死亡)、mob.chicken.say(鸡空闲)、mob.chicken.plop(鸡下蛋)、mob.chicken.step(鸡走路)。
兔子系列:
mob.rabbit.death(兔子死亡)、mob.rabbit.hurt(兔子挨打)、mob.rabbit.idle(兔子空闲)、mob.rabbit.hop(兔子跳)
蝙蝠系列:
mob.bat.hurt(蝙蝠挨打)、mob.bat.death(蝙蝠死亡)、mob.bat.idle(蝙蝠空闲)、mob.bat.loop(蝙蝠飞行)、mob.bat.takeoff(蝙蝠收起或开始飞行)。
(声音很多,不仅仅是生物的声音,甚至还有环境等声音,在这里不一一例举了)
世界设定相关
1.time指令
用于设定玩家世界的时间。玩家世界的时间如果在不用gamerule的情况下,会不断的往下延续下去。利用time即可设定时间,基本格式为
time set 时间数/名称
时间数处填写数字,比如填写4086,时间就会自动跳到4086处(临近中午)。
而名称则是填写day和night。当填写day的时候,时间会默认为1000(早上太阳升起之后)
而填写night的时候,时间会默认为13000(晚上日落之后)
(注:激活后并不是马上会变更世界时间,而是会顿一下再变更)
也可以直接用add来加时间(就像计分板一样),基本格式为
time add 时间数
激活后会显示“将时间调快了xxx”,一般用于不确定时间后使用。
建议先用doDaylightCycle把时间延续关掉再设定时间,这样用起来比较方便。
还有一种形式,可以询问现在的时间,那需要用到query,基本格式为
time query 询问种类
询问种类共有两种,分别为gametime和daytime。如果填写daytime则会报出玩家所在世界的时间,如果填写gametime则会报出玩家在游戏待的时间。
2.toggledownfall指令
此指令用于切换世界的天气。这一点要和weather区分,weather是用来指定天气并且可以指定时间,而toggledownfall是切换到和玩家所在相反的天气。格式和help一样,只输入这个名称即可启动指令。
/toggledownfall
当玩家所在世界为晴天,便会切换到雨天或者雷暴天;当玩家所在世界为雨天或者雷暴天,玩家所在世界会切换为晴天。如果之前用weather指定过某个天气的时间,此指令无效。即使会显示“天气已切换”依然不会执行命令。
3.weather指令
这个指令用于改变玩家所在世界的天气。世界的天气一般都会随机改变,所以突然下雨或者突然打雷会非常烦人(亮度太低,影响建筑等工作),基本格式为
weather 天气指令标签 时间
天气指令标签有三种,分别是clear、rain、thunder(晴天,雨天还有雷暴天,其中雨天如果在雪原就会变为下雪),时间处填写数字,为指定天气的持续时间。这项可以不填,如果不填时间就是随机的。举个例子,
weather clear
如果填写数字的话,那么这个天气的持续时间一定按照这个数字来走,比如在上面那个指令后面填写1,那么当1秒后玩家所在世界的天气一定会改变(下雨/下雪或雷暴)。指定时间也可以让你的世界保持一个天气很久,比如填写时间数字的上限
weather clear 1000000
数字最多填写1000000,折合起来大约在这个世界玩277个小时才会下雨/下雪或者雷暴,所以不用担心。(1.6.4之前原版获得闪电苦力怕的捷径,不用再苦等雷暴,但是1.7之后可以直接用summon)
注:在沙漠生物群系用weather设定的天气也不会下雨和雷暴,只是会降低亮度而已。
4.gamerule指令
mc中最常用的指令之一,用于改变游戏规则,基本格式为
/gamerule 游戏规则数据标签 启动/禁用
举个例子,比如
/gamerule commandBlockOutput false
当直接输入/gamerule 游戏规则数据标签时,会提示此数据标签的状态。像上面那条指令,会提示commandBlockOutput=true/false
下面有各种规则详细讲解。请将前面的名称放到“游戏规则数据标签处”再根据提示输入true/false即可。
commandBlockOutput此数据标签用于区分在用命令方块时是否会给一个提示比如,已成功召唤实体“”方块已放置“等等。(不算weather、gamemode等指令的提示,这些提示会用到另一指令)默认为true,如果在启动/禁用处输入false即可禁止命令方块的提示(想弄回来就再变为true)。这个一般在做地图时会用到,因为某些高频(summon、setblock等等)会不停的提示,基本上处于刷屏的状态,所以最好把这个提示关掉。(如果用到命令方块,不关掉容易被人察觉到有命令方块的存在)要注意大小写,当C大写的时候将不会执行命令。
doDaylightCycle此数据标签用于区分玩家所在主世界(因为地狱和末地的时间基本上不会对玩家的活动造成影响)时间是否继续流动。如果启动/禁用处输入false即可将时间静止。因为到晚上会对视觉造成很大的影响(夜视药水太麻烦),所以对玩建筑的玩家会造成一些影响(也可以配合time set调到晚上,有些地图需要变为晚上)。一般的建筑地图最好都要用上这个指令。(PE创造是默认静止时间的)
doTileDrops此数据标签用于区分方块是否会掉落物品。在启动/禁用处输入false即可关闭方块被破坏时的掉落(不是实体掉落)。一般在挖掘或破坏一个方块之后,方块自身会掉下来(包括用附魔镐得到的特殊物品),使用后即可关闭。
doEntityDrops此数据标签用于区分实体方块是否会掉落物品。在启动/禁用处输入false即可关闭实体掉落物。关闭后,类似于船、矿车这样的实体方块被破坏后将不会再掉落物品本身。
doFireTick此数据标签用于区分火是否会因为某些方块的原因而蔓延或者自己熄灭。在启动/禁用处填写false即可禁止火自己熄灭并且不会蔓延。效果就像地狱岩一样,如果不是玩家的影响(比如手动熄灭或者用水桶),火不会自然熄灭(包括下雨),并且在森林之类的地方起火并不会蔓延。(比如木质房子,运用了之后就不用担心被烧光,非常实用。但是玩家需要手动灭火)
mobGriefing此数据标签用于区分怪物是否会破坏东西或者捡起东西等等。一旦把这个指令关闭将会影响许多生物。在启动/禁用处填写false即可禁止怪物破坏会捡起东西。被影响的生物有:苦力怕(关闭后爆炸不会再破坏方块,但是依然会对玩家造成伤害),末影人(关闭后不可以再搬一系列的东西,但是可以用carried标签来生成搬东西的末影人),僵尸(关闭后将不能在摧毁门,这一点也可以用CanBreakDoors标签,并且僵尸不可在主动捡起装备,但可以用Equipment),凋零(关闭后不可以再破坏方块),恶魂(关闭后不可再破坏方块),羊(关闭后吃草草皮不会消失),村民(关闭后不可以再捡起东西。这个比较推荐,因为如果你扔了像小麦、面包这样的东西给村民,他们会无情的捡起来...而不像僵尸打死后还会掉落捡起的物品...除了这个,关闭之后村民不会再收割),兔子(关闭后不可再破坏萝卜),骷髅/凋零骷髅(关闭后不可再捡起物品),僵尸猪人(关闭后不可再捡起物品)。
doMobLoot此数据标签用于区分生物是否会掉落物品。在启动/禁用处输入false即可关闭实体掉落物。开启后,当一个生物/实体被杀死后,将不会掉落任何物品。(包括玩家、经验球)需注意这个指令会影响到所有实体的掉落物,比如僵尸的腐肉,开启后僵尸将不会再掉落任何物品。一般在做RPG的时候会用到这个指令。需要区分下doMobLoot(生物)、doTileDrops(方块)、doEntityDrops(实体方块)三者的区别。
naturalRegeneration此数据标签用于区分玩家是否会自然恢复体力。当玩家的饱食度满的时候,玩家会自然恢复体力。默认为true,在启动/禁用处填写false即可禁止玩家在饱食度满的时候自然恢复体力。这个指令在生存里不推荐使用,不然就像手机版的非和平模式一样。(手机版生存可以切换模式,如果不调和平不会自然回血,但是这个数据表只影响饱食度自然恢复,不影响药水效果)
doMobSpawning此数据标签用于区分玩家所在的世界是否会刷怪。在启动/禁用处填写false即可让这个世界不再刷怪。需注意一旦关闭这个指令,不仅是攻击性生物,包括中立型和友好型在内所有的生物亦不会主动生成。所以一定要注意。此数据标签不会影响自己手动生成的效用性生物、刷怪蛋以及刷怪笼刷出的生物。一般在做地图地图的时候用到(一般闯关类地图都会有特定的怪,为了防止突然刷怪破坏游戏效果)
keepInventory此数据标签用于区分玩家死后是否会掉落物品。在启动/禁用处填写true即可让玩家死亡后不会掉落物品(默认false)。当玩家出生后物品栏的物品依然保留原样。由于很多人在刚开始玩生存的时候,一旦死亡就非常不好找掉落物品(比如挖矿突然被怪物袭击),所以最好用到这个指令。(箱子也并非百分百安全,如果是服务器的话...所以建议先开启这个数据标签)
sendCommandFeedback此数据标签用于区分玩家的对话框是否会显示一些特殊命令的提示。比如gamerule本身的游戏规则已更新,time的将时间设为xxx等等。在启动/禁用处填写false即可禁止提示这些数据标签的执行效果。不推荐直接使用,不然在游戏期间可能不太方便。禁用后像未知指令或者直接输入gamerule和对应名称时查看的启动/禁用效果的提示都会继续提示。
showDeathMessages此数据标签用于区分玩家死亡时是否会有提示。在启动/禁用处填写false即可做到当玩家死亡时不会有任何提示的效果。每当玩家死亡总会给一些提示,比如xxx因为怎么怎么被xxx杀死了(举个例子,被不同生物杀死会有不同的死亡提示)。需注意当填写false后除了玩家,玩家驯服的可控制生物(狗或猫,不包括马)也会受到影响。(当杀死玩家已有名字的狗或者猫被杀死时总会提示xxx[宠物姓名]被xxx[包括玩家]怎么怎么了,一旦关闭就不会再显示了)
randomTickSpeed此数据标签用于区分玩家所在世界一些方块的随机性的活动概率。随机性的活动类似于火蔓延、火熄灭、冰融化、水结冰、耕地干裂或者湿润、植物生长(想让小麦等农作物生长的快一点可用这个数据标签)等随机出现的活动。和其他数据标签不同的是,需要在在启动/禁用处填写数字。默认为3,也就是玩家所在的已加载区域每一个游戏刻都会有三个方块会启用这个随机性活动(每秒会有20个游戏刻,也就是每秒会有60个方块会启用这样的活动)。数字越高,几率越大。另外gamerule还可以跟stats联用来制作一种加分的方法。详请请看stats一栏。
5.difficulty指令
此指令用于改变玩家游戏时的难度。和gamemode用法非常相似。基本格式为
difficulty 难度
和gamemode一样,要输入对应的数字或者对应名称。
输入difficulty 0或者difficulty peaceful即可将游戏难度转换为和平难度;
输入difficulty 1或者difficulty easy即可将游戏难度转换为简单难度;
输入difficulty 2或者difficulty normal即可将游戏难度转换为普通难度;
输入difficulty 3或者difficulty hard即可将游戏难度转换为困难难度。
说实话,在原版这个指令有些鸡肋。因为按Esc再设置处都能自主调节游戏难度。
具体用法和gamemode相同。也可以通过选择器的方法改变某个玩家的难度。
6.seed指令
由于某些原因请看截图
/seed
(没有作弊权限的玩家也能使用)
7.help指令
此指令用于帮助玩家查看其他的指令。当玩家忘记了命令格式或者想看看没有见过的命令什么的,就需要用到help指令。help单独使用就能成功。基本格式为
help 页数
也可以不指定页数直接输入/help,默认为帮助栏的第一页。(“/”输不输都无所谓,只是很多人都习惯直接在聊天栏输入。如果聊天栏不加“/”默认为打一行字,在发送的时候会把这段话发出去而不是触发一个指令)
想看第二页的话输入
/help 2
即可。2也可以改变为其他数字,范围为1-7,每一页都有不同的指令。运用这个指令就不用再费尽心思来搜集指令了。
没有作弊权限的玩家也可以使用这个指令,只不过显示的是另一个页面。
8.spawnpoint指令
用于设置玩家出生点。具体格式为
spawnpoint 玩家名称 坐标
此方法亦可配合选择器来做到玩家想做到的效果。
如果直接在聊天框输入/spawnpoint(注意,是聊天框,不是命令方块)便会将这个发出这项指令的玩家坐标设为此玩家呆在的坐标处。
(x,y,z的数值不能为负数,也就是意味着不能出生在虚空)
9.setworldspawn指令
这个指令和spawnpoint非常相似,但是这个指令和前者区别在于这个是用来设置世界出生点/出生区块。基本格式为
setworldspawn 坐标处
因为是直接设置在某个地点,所以不用加上玩家。
当设置了世界出生点后,指南针将会指向这个地方(玩家最初始出生点)。玩家设置的出生点突然被改变(比如床被破坏或被方块挡住),那么玩家将会出生在这里。一般用于服务器,当设置世界出生点后开服,加入的玩家就会出生在这里。当然,setworldspawn更主要的用处适用于设置出生区块。玩家最初始出生的地点会被当做出生区块的中心点,也就是围绕着这个点附近都是出生区块。出生区块会一直加载,无论玩家在哪个地方。比如要激活某些命令方块,如果玩家离得太远就会导致这片区域不被加载从而激活不了命令方块。而将命令方块放在出生区块附近便可以避免这种情况。和使用spawnpoint的频率没有任何关系。
如果直接使用,便会默认为将玩家所在的坐标处设为出生区块的中心点。
地图编辑相关
1.setblock指令
比较常用的指令之一,这个指令可以用来放置方块,基本格式为
setblock x y z 方块名称 损伤值 模式
和自己手动放置方块不同的是,比如刷怪笼、蘑菇方块(不算用精准采集的),原版中无法再创造背包界面得到的物品,用setblock都能得到。比如
setblock ~ ~1 ~ minecraft:red_mushroom_block
即可在上面1格处放置一个红色巨型蘑菇方块。用setblock弄出的方块方块会被强制放置,即使有实体会强制放置(如果是手动放置有生物在你想放置的地方的话是放置不了的)。
老样子,方块名称可以用F3+h进行查看。
在这里,这个数据值我需要强调一下。这个代表方块的状态,比如方向,或者像按钮在按进去这样的状态。数据值填写0-15,如果不填即为默认一种数据值。比如按钮,不同的朝向(默认为你放置方块的正面)就会有不同的状态,按下去也会有不同的数据值,这个也可用在testforblock。甚至召唤出各种神奇的东西,比如
setblock ~ ~1 ~ vine 15
这个指令则会召唤出一种正常途径弄不出来的藤蔓方块,四面都是藤蔓而中间是空心的。
而setblock的模式则有三种,一种是destroy,在替换方块的时候会把方块破坏,而不是替换。破坏和替换的区别是,破坏会有特效声音并且会有掉落物(不开gamerule的情况下),而替换不会有特效声并且不会有任何掉落物。比如
setblock ~ ~1 ~ minecraft:redstone_block 0 destroy
这个就是利用destroy做的脉冲。它可以起到非常快速频率的效果。(使用最好用/gamerule把掉落物关了,不然还得kill @e[type=Item])
另一种是replace,这个是默认的,一般不输入任何模式都会默认为这个数据标签。意为把原来的方块替换。在数据标签处输入replace或者不填即可做到这个效果。
最后一种是keep,用来保存原有的方块。只要不是空气,如果有方块则不会放置方块。意为保留除了空气外所有的方块,在数据标签处输入keep即可。或者地形探索等。另外,使用setblock一定要算好坐标,否则替换错误可能会造成一些影响。
setblock给予玩家的方块也可以加上自身的数据标签,和give性质相同。
2.fill指令
用于填充一个区域的方块。和clone差不多,只是不用指定粘贴坐标,直接指定斜对角即可。基本格式为
fill 填充坐标斜对角 填充坐标斜对角 方块名称 损伤值 方块模式
和clone相同,哪一个斜对角都一样。方块模式有五种,三种和setblock一样,有destroy、replace和keep(详情看setblock)。另外两种为hollow与outline。
hollow:
一旦用上这个方块模式,填充的方块区域外面一圈不会受到任何影响,但是里面会变为空心的(填充空气)。
需要保证是立体的,如正方体长方体这样的,不然一条直线会和普通的fill相同(用这种方法可以做围墙等等)。
outline:和hollow基本上相同,会将填充方块区域的外围一圈填充为指定的方块。但是中间的方块不会更改,就像keep一样,但是中间无论是什么方块都会被保留(空气依然会被保留)。
fill要和setblock区分开,setblock是在单个坐标处放置方块,而fill是填充一个区域的方块。比如
fill ~ ~1 ~ ~ ~2 ~ wool 7 keep
缺点是,fill只能让一个区域填充同样的方块,而不能指定这个区域各个地方都是方块。所以如果要做到这种效果的话的话需要连续fill才可以。
3.clone指令
此指令用于复制一片方块并且粘贴到某一个地方。这个指令在做需要换地形的地图里非常实用,比如运用自由选择更换地图等等。基本格式为
clone 复制区域的一角 复制区域的另一角(两个斜对角) 粘贴区域 clone数据标签
如果是单单的复制粘贴可以不填写clone数据标签。复制区域的一角与复制区域的另一角分别是要复制的区域的斜对角。两个斜对角都可以,坐标一定要对应,否则可能会造成一些偏差。如下图↓
而粘贴区域就是想把方块复制到的地方。对角线没有前后之分,所以无论是哪个坐标效果都不会改变,而粘贴区域的坐标一定要掌握好。粘贴区域的坐标一般都是复制过来的斜对角。
当然,y坐标相同只能复制一个平面的方块,如果要复制一片立体的方块区域,像下图这样就可以了。
clone指令的数据标签就和setblock相似,可以进行不同的复制方法。
clone数据标签有两大类,分别是复制种类和复制方法。总体顺序为
clone 复制区域 复制区域 粘贴区域 复制种类 复制方法
复制种类和复制方法都是可以不填写的,或者填写一种都可以。复制种类分为filtered、masked和replace。
filtered:此指令用于区分方块的种类。在复制种类处填写filtered即可指定复制方块的种类。需要注意,这个数据标签的使用方法并不是filtere:minecraft:xxx,那样的话根本没有任何用处。详细用法请看最下方。
masked:此指令用于区分是否复制空气。在复制种类处填写masked即可在复制的时候不会复制目标区域里的空气方块。使用这个方法可以防止在错误复制一些空气方块来替换目标区域的一些方块。性质和replace稍微有些相似。
replace:此指令用于区分是否替换目标区域的方块。这是默认的复制种类,也就是说,不填写任何方式的时候会把粘贴区域的所有方块替换成复制的方块。如果不想改变克隆方块种类而必须要改变复制方法的话,那么可以填写这个数据标签。
而复制方法分为force、move以及normal。
force:此指令用于区分是否会强制复制目标方块。
move:此指令用于区分是否会将复制区域剪切到粘贴区域。也就是会把原来的区域变为空气。在复制方法处填写move即可直接粘贴方块。move只会剪切被复制的方块,也就是用filtered不会替换掉没被复制的方块。
normal:此指令用于区分复制方法是否是正常的方式。也就是普通的复制粘贴。这是默认的复制方法,在复制方法处填写normal即可指定普通的复制方式。normal一般可以用来和fitered配合。
filtered使用方式一般为
clone 复制区域 复制区域 粘贴区域 filtered normal minecraft:方块名
使用之后只会复制特定的方块。
(注意:很多人在最开始使用clone的时候总是复制不了任何方块,那是因为坐标的问题。方块对角坐标应该是玩家站在的对角坐标-1,也就是y-1)
原版服务器相关
1.op指令
此指令用于给予玩家op权限(管理员)。需注意op权限和飞行权限不同。飞行权限只是单纯的可以飞行,而op权限不单单是飞行,还可以用各种各样的指令(作弊权限+飞行权限)。基本格式为
op 玩家名称
原版是无法使用的。当开了服务器之后,服主就能使用这个指令来给予其他玩家op,不需要装任何插件即可使用。
提醒各位服主:这是服务器里最需要慎用的指令!一定要先鉴定给予op的玩家是否有能力胜任这个职位,否则,后果不堪设想!一切服务器用指令毁灭现象的源头都是出自这个指令,所以请一定小心使用(熊孩子用op秒杀一切系列)!
2.deop指令
和op指令正相反,用于取消玩家的op权限。基本格式为
deop 玩家名称
使用之后玩家将不再拥有op权限。但是建议:想制止用命令毁服的熊孩子,应该在最初要给op时就想好了,因为毁服只是一瞬间的事,给他们op后那短短的几秒,服务器都有可能会被毁掉。被毁服之后再deop已经晚了。
一般服主(腐竹)都用于惩罚那些拥有op权限的人,他们犯了错误一般要用到这个指令。
3.list指令
用于列出服务器的当前在线玩家。最初进入服务器也会提示一下当前在线玩家。当然,使用list不会显示已退出的玩家,但会显示刚进入的玩家。基本格式为
list
单独使用即可。效果为
这也会将玩家的在服务器的职业(op、接待、普通玩家等等)显示出来,可以一目了然。
4.ban指令
用于防止一个特定的玩家进入服务器。基本格式为
ban 玩家名称
无论这个玩家是否加入过服务器,以后任何人用这个名字都进入不了这个服务器。
(PS:如果ban的玩家是没有加过服务器的,那么将会显示下图的样子)
这个方法只能防止玩家用这个名称进入服务器,却不能防止玩家再用另一个名称登陆(ban-ip能有效防止,添加白名单的服务器也可以,但是玩家在申请白名单时用另一个号就不能保证了)。另外将一个玩家ban掉可以加上理由。上图显示登录失败...一串文字的原因是因为没有加上原因。基本格式为
ban 玩家名称 ban原因
原因由发起ban的玩家定即可。(最好加上,因为ban一个人其他玩家都能看到,无缘无故ban掉还是不太好,除非大家都知道了原因)
只要有op权限的玩家都能使用。所以腐竹一定要注意不要随便给不相信的人op,不然有可能op会滥用这个指令,可能会对服务器造成极大的影响。
5.ban-ip指令
这个指令比ban要上一个台阶,因为这个指令ban掉的玩家如果不恢复或者换ip就基本上进不来了。基本格式为
ban-ip 玩家名称/ip地址
如果输入的是玩家名称(在不知道ip地址的前提下),那么这个所用的ip将会被ban掉并且以后无法进入这个服务器。而ip地址直接输入即可,比如一个ip地址为123.123.123,那么我们就用
ban-ip 123.123.123
之后使用这个ip的玩家将无法进入这个服务器。
和ban一样,后面可以加上理由,因为在将玩家ban掉的时候会公布于众。
(注意:和ban不同的是,这个指令无法ban掉没有加入服务器的玩家,而ban指令却不用顾虑这一点)PS:只适用于固定宽带,路由器重启ip会变化,所以这个方法对路由器上网的无效。
6.pardon指令
用于取消对玩家或者ip的ban(不要误解任务有pardon-ip这个指令)。基本格式为
pardon 玩家名称/ip地址
必须是用于被ban过的玩家才行。如果这个玩家并没有被ban那么这个指令并不会有什么效果。被ban的列表可以使用banlist来查看。
也就是说,使用完这个指令之后,被ban的玩家或者被ban的ip可以重新回到这个服务器(谨防熊op,比如腐竹ban掉一个人之后,被ban的人找到熊op给恢复...)。
7.setidletimeout指令
用于将挂机的玩家自动踢下线。和kick要区分的是,kick是具有op权限的玩家主动将一个玩家踢下线,而setidlettimeout指令是由系统判断玩家的挂机时间并且一旦超过时间系统就会将这个玩家自动踢出服务器(被踢出的玩家依然可以回到服务器),不需要由具有op权限的玩家清理。基本格式为
setidletimeout 时间
时间处填写数字,只能填写整数和非负数,按分钟来计时(比如填写1,那么就会将挂机时间到一分钟的玩家踢下线)。另外如果填写0那么就是取消自动挂机踢人这个设置。
效果↓
对于清理一些总是没事在服务器占位置的,而腐竹和op又不能一直在线的话,这一招非常管用。