[Minecraft]命令方块从入门到精通教学EP.5:方块、实体与物品

您所在的位置:网站首页 我的世界命令方块附魔书英文怎么写 [Minecraft]命令方块从入门到精通教学EP.5:方块、实体与物品

[Minecraft]命令方块从入门到精通教学EP.5:方块、实体与物品

2024-07-06 22:36| 来源: 网络整理| 查看: 265

注意:专栏撰写自1.19版本,后续版本可能会对命令的相关细节进行修改,如后续版本与专栏内容有所出入,请关注Minecraft wiki上的版本更新内容和历史更改,专栏不会对此进行修改。 

好的,到了第五期,终于可以开始讲大家熟悉的/give了!这期视频主要讲解两个方面:

一,方块、实体与物品的命名形式,以及代表性的命令;

二,命令方块的获取与使用。

这也是我虽然在讲命令方块,但是拖到第五期才开始使用命令方块的原因。所以,让我们开始吧!

物品、/give与/clear

在minecraft的命令中,物品都以特定的英文单词命名,由于空格键在命令中有特殊作用,因此单词之间的空格以下划线代替。例如命令方块的英文为"command block",因此在命令中就命名为"command_block"。

由于minecraft极高的自由度和海量的模组,不同的模组可能会出现同一命名的方块,这时候如果还这么做的话,就有可能导致混乱,因此为了区分物品的来历,玩家可以添加一个前缀,例如原版物品前面可以加上"minecraft:"。因此,命令方块的全名应该是"minecraft:command_block"。

那么,结合我们耳熟能详的命令:/give,我想给自己一个命令方块,就可以输入"/give @s minecraft:command_block",但是通常情况下,玩命令的场合都是在原版,所以也可以把前缀略去(但是按下tab还是会自动补充),因此我输入"/give @s command_block"也是可以的。

如果你在游戏中按下F3+H,你可以查阅物品的详细信息,这样你就能看到物品的命名是什么了。注意有些物品的命名和其英文名并不一致,例如附魔之瓶的英文原文为"bottle o' enchanting",但是命名为"experience_bottle"(经验之瓶)。

当然,/give的命令肯定不止这么一点,你可以在后面加数字,表示你想要给予的数量,例如"/give @s command_block 64"会直接给你一组命令方块。

物品的后面可以加入和原始JSON文本类似的内容以修饰此物品,例如给予自己一把锋利V、击退II,且无法破坏的钻石剑的命令为"/give @s diamond_sword{Enchantments:[{id:"minecraft:sharpness",lvl:5},{id:"minecraft:knockback",lvl:2}],Unbreakable:1}"。至于这些词条从何处得知,将会在后面讲到。

除了给予物品,玩家还可以移除物品,用到的就是/clear这个命令。如果直接输入"/clear"的话,会将命令执行者的物品栏直接清空。如果跟上目标选择器,例如"/clear @a",则会把所有玩家的物品栏清空。还可以像/give一样移除指定物品,例如"/clear @a command_block"会把所有玩家物品栏的所有命令方块移除。但如果你只想移除一个物品,那可以输入"/clear @a command_block 3",这条命令只会移除三个命令方块,如果不足三个,则会全部清除。

方块与/setblock

方块和物品有很多相似之处,因为许多方块都有其物品形式,这是为了方便创造模式玩家进行放置,并且由于精准采集的存在,许多物品在生存模式中也有办法放置。但是有些方块例外,例如水、空气。

方块的命名模式和物品基本相同。咱们通过一个新命令来了解:/setblock。

这条命令可以在一个具体坐标放置一个指定的方块。如果我想在(0,64,0)放置一个基岩,我就可以输入"/setblock 0 64 0 minecraft:bedrock",当然,其中的"minecraft:"也是可以省略的。

但是,方块的设置与物品的添加有所不同:物品是直接塞进物品栏的,而游戏中能够放置方块的地方,原本就已经有方块了(空气也算方块的话),这就需要对原方块进行处理,因此这条命令后面还有一个词条。

我们就拿上面的命令为例,输入之后,无论(0,64,0)是何种方块,它都会被强制替换为基岩。这就是替换(replace)模式。相应地还有保留(keep)模式与破坏(destroy)模式。如果我希望(0,64,0)有非空气方块时无事发生,那么可以输入"/setblock 0 64 0 minecraft:bedrock keep"。如果这个坐标上已经有非空气方块占据,那么就不会替换成基岩。如果我输入的是"/setblock 0 64 0 minecraft:bedrock destroy",那么原先的方块会被破坏掉,并根据破坏的方块产生掉落物。如果原先(0,64,0)的位置是一个末影箱,那么命令执行后,末影箱会被破坏,并掉落八颗黑曜石(就和你用镐破坏它的效果一样)。

和物品一样,方块也可以进行修饰。例如"/setblock 0 64 0 chest{Items:[{Slot:0,id:"minecraft:water_bucket",Count:1},{Slot:1,id:"minecraft:lava_bucket",Count:1}]}"会放置一个箱子,它的第一个位置有一个水桶,第二个位置有一个岩浆桶。同样也会在后面讲解得知手段。

实体与/summon

在minecraft中,方块和实体是两个相对的概念。方块通常有整数的坐标,且一个坐标上只能有一个方块。但实体没有这个限制,并且绝大多数实体可以进行移动。生物(包括玩家)就是实体的一种。有些物品看起来像方块,但实际上是实体,例如物品展示框看起来一动不动,其实是一个实体(可以在一格内堆叠,且没有方块那样的破坏特效)。

这类实体也是一个运作模式的。例如苦力怕的命名为"minecraft:creeper"。因此,我们就可以用"/summon"命令生成实体。

当你输入"/summon creeper ~ ~ ~"的时候,你就可以在当前坐标生成一只苦力怕。

与前两者不同的是,这条命令遵循的是之前版本的模式,你不能在"creeper"后面直接开始修饰,而是输入完坐标之后空一格,然后再开始修饰。例如20秒后爆炸的TNT的生成命令为"/summon tnt ~ ~ ~ {Fuse:400}"。

是的,和前两者一样,得知方式……看后面。

数据标签与/data

前面设置了三次铺垫,就是为了引出这一个知识点了。数据标签其实就是用来修饰物品/方块/实体的内容。这种数据标签和原始JSON文本很像,但是原本的 "变量":"值" 变成了 变量:值 ,只有文本内容会加上引号。

要想知道一个物品/方块/实体有哪些数据标签,就可以用到/data这个命令了。输入/data之后有四个选项,分别是get(获取)、merge(合并)、modify(修改)与remove(删除)。后面三个选项难度较高,高到连作者都看不懂,所以我们只需要学习get就行。

我们可以获取的数据标签有三种类型:block(方块类)、entity(实体类)与storage(存储类)。我们将对前两者进行举例。

当你想要获取一个方块的数据标签时,你可以输入"/data get block x y z",其中xyz是方块的坐标。例如我在箱子的正中央放了一把锋利I的钻石剑,然后我获得这个箱子的数据标签,我就能看到这个:

这里对文本进行了染色,让我们可以更容易辨别上面的内容:白色为特殊字符,比如中括号、冒号、引号。蓝色是变量名称,绿色为文本,橙色为数值,红色为单位(且可以省略)。

那么,这个方块有什么数据标签呢?我们从头到尾看起:

x:26,意味着这个方块的x坐标为+26。

y:4,意味着这个方块的y坐标为+4。

Items:[{......}],意味着这个方块内存放着物品,只有部分方块有这个特性(箱子、漏斗、投掷器等)。

Slot:13b,id:"minecraft:diamond_sword",Count:1b,tag:{......},意味着这个方块的第14个栏位(第一个栏位是0)存放着一把钻石剑,并且这把钻石剑也有数据标签。

Damage:0,Enchantments:[{lvl:1s,id:"minecraft:sharpness"}],意味着这把钻石剑的数据标签有:伤害修正值为0(即钻石剑原本的伤害),且拥有1级的锋利附魔。

z:-45,意味着这个方块的z坐标为-45。

id:"minecraft_chest",意味着这个方块是一个箱子。

这些数据标签都是英语,需要有一定功底才能明白其中构造,因此学好英语是学会命令的关键。

那么,你就可以根据这个,来让你的/setblock更加高端了。比如我想设置一个箱子,里面前四格放着一套皮革装备,那么我会先输入"/setblock ~ ~ ~ minecraft:chest replace",然后我通过前面学到的数据标签,开始对其进行编辑。

首先,数据标签需要有大括号,因此编辑为{}。

其次,描述箱子内物品的变量为Items:[],因此编辑为{Items:[]}。

中括号是集合的意思,我这个集合里面显然要有四个元素,那么就要上四对大括号并用逗号隔开,因此编辑为{Items:[{},{},{},{}]}。(注意:括号的种类和数量不要看错!先打括号后填内容可以有效防止出错!)

然后,对第一个物品进行编辑:第一个物品是一个皮革帽子,栏位是0b,b可以省略;名称为"minecraft:leather_helmet",但是我可以省略前缀;数量为1b,但是b也可以省略。因此编辑为{Items:[{Slot:0,id:"leather_helmet",Count:1},{},{},{}]}。

同理,把剩下三个物品补充上,然后放入/setblock命令的正确位置,就得到了最终成果:

/setblock ~ ~ ~ minecraft:chest{Items:[{Slot:0,id:"leather_helmet",Count:1},{Slot:1,id:"leather_chestplate",Count:1},{Slot:2,id:"leather_leggings",Count:1},{Slot:3,id:"leather_boots",Count:1}]} replace

最后,系统会在你腿部这一格生成一个箱子,当你打开箱子时,你就能看到:

如果你一步步跟上来,而且成功了,那么恭喜!你已经学会这一章的内容了!

不知不觉中,我们在学习了方块数据标签后,还学习了物品的数据标签,但别忘了,还有实体的数据标签。

还记得获取数据标签的三个类型吗?刚才我们讲完了方块类,现在进入到实体类。很简单,输入"/data get entity A"即可,其中A为玩家名称、或目标选择器。

我们现在来对一只苦力怕获取数据。输入"/data get entity @e[type=creeper]"之后,我们……什么都得不到,因为它提示你只能选取一个实体。那么这种事情就交给目标选择器了!

在目标选择器中,limit可以限制选择的实体数量,因此只要修改为"/data get entity @e[type=creeper,limit=1]"就可以了。执行后,我们会得到以下内容:

你先别急,我也很急,这么多让我怎么教学????

不过你还是可以从中挑出你想要的东西。例如倒数第七行有一个 Fuse:30s 。fuse翻译成中文是引信的意思,那么这一定和苦力怕的爆炸时间有关。众所周知,苦力怕在引燃后,会闪烁1.5秒然后爆炸。30跟1.5刚好相差20倍,那么说明这个30其实是游戏刻。我们之前说过,红色的文字都是可以省略的,这也印证了后面的s并不是“秒”的意思。

那么如何生成一只瞬爆苦力怕呢?很简单对吧!输入"/summon creeper ~ ~ ~ {Fuse:0}"。没有引信不就能瞬爆了吗?于是,在你召唤出来的瞬间,它立马爆炸了(即使是在创造模式中)。但如果我们需要的是那种点燃了才会立马爆炸的苦力怕,我们只要加1就行了。如果你输入的是"/summon creeper ~ ~ ~ {Fuse:1}",那么生成出来的苦力怕和正常的没什么区别,但是一旦接近生存/冒险模式的玩家,或者是用打火石点燃,它就会立刻爆炸,不给任何反应时间。

这里列举一些比较常见的数据标签供大家查阅。

NoAI:1。完全剥夺生物的AI(这会使其不能移动,不受击退,不会下坠,不会主动行动等)

Invulnerable:1。使实体无敌(生物不会受到伤害,物品展示框中的物品无法被取出,船、矿车、物品展示框无法拆除等),对创造模式的玩家无效。

PickupDelay:32767。使物品无法被捡起,设置为负值同理。设置为0则可立即被捡起,你可以设置一个值,让其在固定时间后可以被捡起,单位为游戏刻数。

Age:-32768。使物品不消失。如果设置为X,则会在(6000-X)个游戏刻后消失,例如:如果设置Age:600,由于6000-600=5400,因此该物品会在5400游戏刻(4分钟30秒)后消失。与上面不同的是,超过6000时,物品依然会立即消失。

CustomName:'{"text":"名称"}'。将实体命名为"名称"。注意这里的单引号不能省略,且需要遵循原始JSON文本格式。

CustomNameVisible:true。无论何时都显示实体名称,而不是将准星瞄准实体时才显示。

终于写完了!这期应该是字数最多的一期了,因为难度较大,信息量也很多,即使是省略了一部分内容,也依然要讲解很久。不懂的没关系,多打开Minecraft自己捣鼓一下就好了。

哦对了,还有一个忘了,还没有说命令方块怎么使用呢!

我们之前说过,输入"/give @s command_block"可以给予自己一个命令方块。它长这样:

命令方块的正面命令方块的侧面(正面在右边)命令方块的背面

处于创造模式的作弊玩家(或服务器管理员)可以打开命令方块。它的界面是这样的。

最上面的一栏是给你输入命令的,不过这里的命令可以不用加"/",因为这里输入的内容很明确,就是命令。

右边的“O”按钮是切换命令方块输出内容的按钮,它会记录命令方块上一次输出的反馈,点击后就可以关闭输出反馈。

三个按钮分别是:脉冲/连锁/循环,不受制约/条件制约,红石控制/保持开启,我们可以先不管中间那个选项。

脉冲+红石控制:命令方块会在接收到红石信号时运行一次命令。

脉冲+保持开启:命令方块会在编辑完成后立即开启,但之后不修改模式的话,这个命令方块将永久不可使用。

连锁:启用时,命令方块会在指向它的命令方块执行命令后执行命令。

下图中,黄色的命令方块为脉冲+红石控制,剩下的绿色命令方块为连锁+保持开启。(顺带说一句,循环型命令方块显示为紫色)

命令方块从头到尾输入了"say 1" "say 2" "say 3"等命令。当按下按钮时,获得了如下输出:

我们之前说过,带"@"的是命令方块输出的命令,因此我们可以得知:

当一个指着连锁型命令方块的命令方块成功执行命令时,这个连锁型命令方块也会执行一次命令,而不需要在正后方。

因此,运用连锁型命令方块可以一次触发多个命令,但触发的次数是有上限的,可以通过"/gamerule maxCommandChainLength x"修改一次最多能够触发几个连锁,默认为65536。

循环+红石控制:当有红石信号输入时,命令方块会在每一个游戏刻都执行一次命令。

循环+保持开启:命令方块会不停执行命令(慎用!尤其是里面输入了/kill这样的命令时)。

那么最后说一说不受制约/条件制约的效果。

当打开条件制约时,命令方块的侧面会变成这样:

条件制约命令方块和不受制约命令方块的区别在于:前者需要自己后面的命令方块成功执行命令,才可以执行命令。

如图,这是两个脉冲式命令方块,被两个按钮控制着。

左边的命令方块输入了"say 1",右边输入了"say 2"。

当我先按右边的按钮时,无事发生,因为左边的命令方块还没被执行过,何谈执行成功?右边的命令方块就受到了条件制约(注意:这里和连锁型命令方块不同,不是指着自己的命令方块,而是自己身后的命令方块)

当我按左边的按钮后,得到了"[@] 1"的输出。

当我再按右边的按钮后,终于得到了"[@] 2"的输出。

但是,如果我把左边的命令方块输入改成"day 1",这明显是一个错误的命令,系统无法识别它。于是我再按左边的按钮,自然什么事都不会发生,但是右边的按钮按下后,依然无事发生,这说明错误的命令让左边命令方块执行失败了,右边的命令方块就受到了条件制约。

命令方块和红石比较器有联动效果。当命令方块成功执行命令后,红石比较器会输出大小为1的信号。这也可以用来直观判断相邻的命令方块是否被条件制约影响。等到后面几期讲到/execute这个比拧麻花还复杂的命令后,红石比较器就能输出比1大的信号了。

好了,这下是真的结束了,这一期算是超大量更新了,所以我打算中间休息一周,况且这么大体量的内容也需要多多消化才能理解。那么之后就可以加入一些硬核命令了,我们下期专栏再见!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3