命令/setblock & 方块状态 & 方块NBT

您所在的位置:网站首页 我的世界实体复制指令 命令/setblock & 方块状态 & 方块NBT

命令/setblock & 方块状态 & 方块NBT

2024-07-12 02:33| 来源: 网络整理| 查看: 265

    本系列所有教程仅面向最新Java版原版Minecraft,不涉及旧版本与插件、模组的命令、方块、实体和特性。

    随时欢迎以评论区留言、加入粉丝群或B站私信等方式进行提问。

    本期开始的指令教程会同步更新视频与专栏两个版本,内容完全相同,请依据自身喜好择一观看即可。

        这是本期将要讲到的内容。我将循序渐进,为大家逐渐拆分讲解这条指令。

        在学习新内容之前,首先复习一下 上一期的内容。

局部坐标:基于玩家的视角朝向,向左右、上下、前后进行偏移。不可与绝对坐标或相对坐标混用。在命令中通过^来使用局部坐标。

    向前方传送2格

        /tp ^ ^ ^2

    在右后方2格生成Creeper

        /summon creeper ^-2 ^ ^-2

Attributes:此NBT控制生物属性的基础值。

AttributeModifiers:为物品添加属性修饰符,修饰符会对属性基础值做出计算,从而改变生物属性的数值。

        除此之外,需要特别注意攻击速度这个属性。我们知道剑的攻速是1.6,那如果生成一把attack_speed是1.6的剑,会怎么样?

你会发现她的攻击速度非常快,就像空手一样。为什么呢?

        仔细观察 原版的剑 和 生成的剑 的属性,你会发现原版的描述是“1.6 攻击速度”,而生成的剑是“+1.6 攻击速度”。

        也就是说,原版显示的是“修饰符”计算后的结果。玩家的攻速基础值是4.0,想做一把1.6攻速的剑,需要的修饰符是攻击速度-2.4。

        如果还想还原原版的绿字描述,你还得用HideFlags隐藏掉实际的修饰符,再用display来模拟。

        攻击力也有类似的情况:空手有1点攻击力,所以铁剑显示的6 攻击伤害,实际上是+5 攻击伤害。

        知道了这些,再看上期的题目就很明显了,钠镓剑的2 攻击速度,是用display模拟的,她实际上是一个-2 攻击速度的修饰符。

        另外,有经验的话你可能会记得,锋利魔咒提供的伤害加成会显示到绿字上,例如钻石剑的7 攻击伤害,附上锋利 II后显示为8.5。

        所以钠镓剑的11.5伤害,减去锋利 X提供的5.5伤害,可以算出原本的攻击力是6.0。再减掉空手的1点攻击力,得到实际的修饰符是+5 攻击力。

        知道了属性修饰符,剩下的Enchantments和display就好办了。另外,魔咒列表我也是用display模拟的,因为她实际显示的排序比较奇怪,所以我改成了display这个可控的显示。

这就是上期的题目了,还有问题可以在评论区留言。

        那么接下来就是本期的内容了。原计划讲完三个建筑系的指令:放置/setblock、填充/fill和复制/clone。但发现篇幅太长,所以分两期来。这一期只讲一个/setblock,她是在1.7加入的指令,作用是放置1个方块,来看一条实例:

        这个^ ^ ^1我们认识,是上一期讲到的局部坐标。她当然也可以是绝对坐标或相对坐标。chest是箱子的方块ID,所以这条指令是在自己的前方1格放置箱子。

        那么我们就整理出了/setblock的基本格式:

        方块ID一般和物品ID相同,有小部分例外,举两个例子:

        红石的物品ID是redstone,红石线的方块ID是redstone_wire

        橡木告示牌的物品ID是oak_sign,在墙上的橡木告示牌是oak_wall_sign

        方块ID也可以在游戏内查到:把准星指向方块,在F3界面的右侧就是了。

        这条指令只展示了/setblock的必填参数,我们来看一条更加完整的例子:

        这里多了一个destroy是什么意思呢?她会先破坏掉原有的方块,然后才放置指定的方块空气。这条指令的实际效果是破坏掉了脚下的方块。

        这个destroy叫做操作方式,除destroy以外,还有keep和replace。

keep:只替换空气。如果指定的坐标不是空气,就不会放置这个方块。

replace:默认模式,直接替换原有方块。

    以上就是/setblock的完整格式了。

        说了这么多,在哪里写方块的NBT呢?在讲这个之前,首先要知道2点:

    第一,方块除了NBT以外,还有一个东西叫做方块状态。

        方块状态记录了一些简单的数据,例如:

                · 箱子的面朝方向

                · 台阶的上下半

                · 红石线的能量

        方块的NBT记录了一些复杂的数据,例如:

                · 熔炉已烧炼的配方(用于记录烧炼经验。经验熔炉原理)

                · 容器内装着的物品。

    第二,不是所有方块都有方块状态。例如石头和泥土没有任何值得记录的数据。有NBT的方块更少,例如楼梯只有方块状态而没有NBT。

    大部分的方块状态和NBT还是某一类方块特有的,例如:

            · power:只存在于红石线的方块状态,记录红石能量强度

            · charges:只存在于重生锚的方块状态,记录剩余能量

            · BurnTime:只存在于熔炉的NBT,记录剩余燃烧时间

            · CookTime:只存在于熔炉的NBT,记录此配方已烧炼时间

    基于这些原因,在教程内只能提及一些相对常见的内容。更多的、方块独有的、零零散散的内容,还得依靠大家自己查阅wiki。

        首先介绍一个最常见的方块状态

            facing:记录此方块的朝向。

        Java版总共有约150个方块有方块状态,其中有近三分之一的方块都拥有facing这个状态。先展示一个实例。

        这条指令是放置一个面朝东方的箱子。facing的可用值包括east、south、west和north。少部分方块还有up和down,例如按钮和拉杆。

            告示牌没有facing,她使用rotation记录16个面朝方向

            在墙上的告示牌仍使用facing

        注意方块状态和NBT有两点不同:

            一、方块状态使用等号而不是冒号

            二、方块状态使用方括号而不是花括号

                [ facing = west ]

        这里的方括号不代表她是一个列表型数据,只是为了和NBT的花括号区分。多个方块状态仍用逗号分隔,例如:

        这条指令是放置一个放在地上,面朝南方并且已经拉下的拉杆。

        了解完了方块状态,接下来是NBT。这一期讲3个相对常见的方块NBT,分别是Lock、CustomName和Items。

Lock:存在于容器类方块。仅当玩家的手持物品名称与Lock完全相同时才能打开此容器。例:

        只有手持名称为na的物品才能打开这个箱子。所有的容器方块都有Lock标签,包括熔炉和漏斗等等。通过这条指令我们也知道了如何给方块指定NBT,那要怎样同时指定方块状态呢?还是看实例,这是面朝西方且上锁的箱子

        方块状态和NBT的顺序不能调换,且之间没有空格。

CustomName:存在于容器类方块。修改方块的名称。

        她和生物的那个CustomName完全相同,不过方块没有CustomNameVisible。方块的名称会显示在容器的GUI界面上。

        在不作弊的情况下,你也可以通过铁砧修改容器方块的物品名称,使其放置后带有CustomName。

Items:存在于容器类方块。记录容器内包含的所有物品。

        很显然,一个容器可以装很多个物品,所以Items是一个列表,里面的每一项都是容器内的一个物品。

        一个物品包含四组数据,分别是物品ID、数量、NBT和所在槽位,所以每一项都应该是一个集合。那么我们就整理出了Items的格式:

        我们来分析一个实例:

            id: "stick",代表这个物品是木棍

            Count: 16,代表堆叠了16个

            Slot: 0,是0号槽位,箱子的左上角

            tag,代表这个物品的NBT

        这一项代表箱子的左上角有16个名称为Ga的木棍。

        在Items的格式中,Slot和tag是选填项。

            Slot的默认值是0,若0号位已经有物品,则会覆盖掉原有物品

            tag,不填就不填吧

        另外,id、Count和tag这三个合起来叫做“物品通用标签”,所以Items的格式还能简写成这样:

    最后是槽位的编号规则:左上角是0,然后从左到右,从上到下。

        比较特殊的是熔炉,原料槽是0,燃料槽是1,输出槽是2。

        好啦,这期的内容就是这些啦。来复习一下

命令 /setblock

    操作方式包括destroy、keep和默认的replace

方块状态

    facing:记录方块的朝向。

NBT

    Lock:存在于容器类方块。仅当玩家的手持物品名称与Lock完全相同时才能打开此容器。

    CustomName:存在于容器类方块。修改方块的名称。

    Items:存在于容器类方块。记录容器内包含的所有物品。

        虽然本期内容不多,但介绍的都是新概念,因此花费了较多的篇幅。

本期题目

 放置一个熔炉,要求放置后的效果如图。

    视频+专栏总点赞过500出下一期,介绍一个利用/clone实现的黑科技。

好,晚安~



【本文地址】


今日新闻


推荐新闻


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