Minecraft指令手册

你好MC

首页 >> Minecraft指令手册 >> Minecraft指令手册最新章节(目录)
大家在看暴君的炮灰男后 永不解密 都市之神医下山 挑肥拣瘦 海贼之开局夺取飘飘果实 北马秘闻 斗破苍穹之至高真神 洪荒:我夺舍了葫芦娃 爱你比喜欢多一些 万古龙帝 
Minecraft指令手册 你好MC - Minecraft指令手册全文阅读 - Minecraft指令手册txt下载 - Minecraft指令手册最新章节 - 好看的玄幻魔法小说

第一百一十二章 实体的通用标签 上

上一章书 页下一章阅读记录

看,这是一头有胡子的粉红羊!

(在哪?我怎么没看到?)

它作为一个实体,肯定也有自己的Nbt标签。

在这些Nbt标签中,有很大一部分是大部分实体通用的。

具体是哪些呢?

首先,和物品一样,游戏也会通过实体的Nbt来识别该实体到底是什么实体,这就需要用到id这个标签。id标签的数据类型是文本(String字符串),它存储着这个实体的命名空间Id。比如这只羊的id标签就是:

{id:“minecraft:sheep“}

需要注意,id标签由于是用来判断实体类型的,十分重要,所以我们在游戏中无法通过指令来获取并修改它,也就是说你并不能把这只羊变成一只猪。另外,玩家虽然也是实体,但没有id标签。

id可以判断实体的类型,但如果游戏还想更精确地判断这个实体到底是哪个个体,就需要使用到UUId。实体的UUId数据也存储在自身的Nbt中,也就是说我们可以通过Nbt来获取到实体甚至玩家的UUId。

UUId的Nbt存储方式在Java1.16版本中迎来了巨大改变,这件事我们已经在第一百一十章了解过了。在Java1.16之前,实体的UUId在Nbt中是以『高低位』的方式存储,也就是像下面这样子:

{UUIdmost:L,UUIdLeast:-L}

其中,值后面的大写字符『L』代表这两个标签的数据类型都是Long长整型。目前你只需要知道这种整型能够存储很大的数字即可。需要注意的是由于计分板数据类型是Int整型,所以你并不能直接将实体的UUId高低位存进计分板中。

在Java1.16更新后,实体的UUId改成了用Int整形数组来存储:

{UUId:[I;-,-,-,]}

由于改成了Int整型数组的存储方式,所以在Java1.16版本更新后,你就可以直接将实体的UUId存入计分板。

一个实体除了自身的类型和UUId,还有许许多多的数据。让我们仔细思考一下,可能还会有哪些数据。

一个实体肯定会有位置,所以Nbt中自然也要存储实体的位置数据。pos标签就是干这个的。

pos的数据类型是『double双精度浮点数列表』,列表内的三个元素从左到右分别存储着该实体的x、Y、Z坐标数据。比如:

{pos:[14.d,72.0d,133.d]}

这代表着该实体处于(14.,72,133.)这个位置。

和pos作用类似的标签还有Rotation。Rotation标签的数据类型是『Float单精度浮点数列表』,列表内的两个元素分别记录着这个实体的水平旋转和垂直旋转角度。比如:

{Rotation:[322.f,0.0f]}

这代表着该实体正水平地朝向南偏东37.°的方向。等等!『322.』?!

还记得本书在第二十六章曾经写过这么几句话吗:

『等等,我们在讲tp时,不是说水平旋转角度是:「以实体为中心,以正南(z轴正方向)为0°,顺时针下来,实体朝向和正南方向的夹角(也或者说实体在真南方位角体系中朝向的角度),就是该实体的水平旋转角度。」

那这怎么跑出来负数了?

其实在minecraft中,水平旋转角度虽然可以像我们之前在第九章讲tp时那么用,但大多数时候,你都得这么用:

以正南(z轴正方向)为0°,顺时针旋转180°通过正西至正北,用正数,逆时针旋转180°通过正东至正北,用负数。比如-45°,就代表以正南为基准,逆时针旋转45°的方向;30°,就代表以正南为基准,顺时针旋转30°的方向。

也就是说,在minecraft中,水平旋转角度的正确范围是-180°~180°,而不是0°~360°。至于为什么我要在第九章那么讲,只是怕一下子就把负数搬出来会吓你们一跳。』

现在,我们要纠正这里的一个疏漏之处:在minecraft中,水平旋转角度其实有两套标准——一个就是我们在第九章讲到的『真南方位角』,也就是0°~360°这个标准;另外一个就是第二十六章讲到的-180~180°这套标准。

你可能已经有些晕了——两套标准,怎么判断什么时候要用什么标准?

其实很简单,我们只需要记住三个关键点就行:

1在目标选择器中,必须采用『-180~180°』这套标准。

2在指令中,除了目标选择器和Nbt外,其他地方基本上两个标准都能用。

3在实体Nbt中,玩家采用的是『-180~180°』这套标准,而非玩家实体采用的是类似『真南方位角』的0°~360°标准。

其中的第三点,这边得好好讲一下。回去看看上面那个Rotation标签,你会发现那里采用的是『真南方位角』的标准,这说明了什么?

这说明,这个实体,不是一个玩家。

没错,上面那个Rotation标签,是作者从Java1.12.2版本中的一只猪上扒下来的。(不用担心,即使在目前最新的Java1.19.1版本中,这个特性也没有被mojang改变)

那玩家的呢?让我们使用\/data指令获取一下:

\/data get entity @s Rotation

\\\\适用于Java1.13及以上版本\\\\

data指令本书还没讲到,如果你感兴趣的话可以去minecraft wiki上了解了解。在这边你只需要知道,上面那条指令可以获取到你自己(执行者)的Rotation标签数据。

运行一下,游戏返回了以下数据:

→xxxxxx拥有以下实体数据:[-71.f,29.f]

不难注意到,上面的数据中,水平旋转角度是『-71.f』,采用的是与非玩家实体不一样的标准。

So,你学会了吗?Rotation标签就这样子,如果能的话你可以探究一下把实体的水平旋转角度设成负数会发生什么。接下来让我们继续了解更多的实体Nbt标签。

实体肯定能够运动,因此必然具有速度属性。那游戏是怎样存储实体速度的呢?

我们在小学二年级就学过:一个物体的速度,可以被分解为该物体在x、Y、Z三个轴上的速度。minecraft中存储实体速度的方式就和这差不多。在实体Nbt中,用来存储实体速度的标签是motion标签,它的数据类型是『double双精度浮点数列表』,列表内的三个元素从左到右分别是该实体在x、Y、Z三个轴上的速度向量,单位是『米\/秒』。举个简单的例子:

{motion:[1.d,-0.75d,0.0d]}

这代表着该实体正朝着正东、水平向下约30°的方向以约1.5米每秒的速度前进。需要注意的是,motion的值并不会固定不变,而是会受到游戏模拟的阻力的影响。

(注:0.75倍根号3就约为1.,因此你可以把1.看作0.75√3)

由于本书并不是一个物理教材,所以关于motion我们就不继续深入,你大概知道是这么一回事就行。如果你没有看懂,可以去求助你的物理老师。

或者你可以去找一下那位屎尿屁专家?帮他完成屎尿屁大统一理论?

实体的Nbt还有许多标签,好消息是这些标签相对上面的内容来说很简单。

air标签用于储存实体的『空气值』,它的数据类型为Short短整型,允许的最高值为300,实体在水中每刻都会减去1,小于等于0时(对于大多数生物来说)会开始扣血。

Falldistance标签很有趣。如果你玩过JAVA版的老版本,那你可能知道在旧版本中,从高空落下而不被摔死的方法,除了落地水,还可以挑战手速按ESc暂停游戏,然后再继续游戏。这个时候你的再掉下去就只会或几乎没有伤害。这个bUG的核心就在于实体的Falldistance标签。

Falldistance标签的数据类型是单精度浮点型,它用来记录实体已经掉了多远的距离,然后在实体落地时计算会扣多少滴血。老版本暂停游戏的话,这个值就会清零,所以才会导致这个bUG(于是mojang修复了)。

passengers标签是一个比较常用的标签,它的数据类型是『复合标签列表』,作用是记录骑着该实体的其他实体的Nbt数据。没错,这东西可以用来套娃!ooc也就是用这个标签来制作的。

需要注意,在Java1.9版本之前,实体并没有『passengers标签』,而是有『Riding标签』。它的用法和新版本的『passengers标签』一模一样。

Fire标签的数据类型是Short短整型,它的作用是决定实体着火或不会着火的时长。如果它的值是正数,就是决定实体身上的火距离熄灭还有多少游戏刻,如果它的值是一个负数,则代表着该实体在接触到火后,不会着火的刻数。比如:

{Fire:-40s}

这代表着当该实体接触到火时,需要两秒才会燃起来。

portalcooldown标签的数据类型是Int整型,作用是记录这个实体还有多长时间(单位为游戏刻)才可以再次穿越下界传送门。比如这只粉红羊刚刚穿过下界传送门,它就需要等至少300刻(15秒)才能再次传送,因为它的portalcooldow标签被设定为了300。

dimension标签的数据类型是Int整型[Java1.16以下]或文本(String字符串)[Java1.16更新后],它的作用是记录该实体所处的维度。

举个例子:

{dimension:“minecraft:overworld“}

\\\\Java1.16更新后\\\\

{dimension:0}

\\\\Java1.16更新前\\\\

这代表着该实体所处的维度为『主世界』。对了,『下界』的维度数字Id为-1,『末地』为1。

需要注意,似乎自从Java1.16版本开始,dimension就不再是实体的通用标签之一,而是变成仅玩家拥有该标签。所以对于Java1.16及以上版本的实体来说,并没有dimension这个标签。

这一章到此为止。

附录:实体通用标签的部分历史

Java

1.9——Riding标签改为passengers标签

1.16——dimension标签不再是实体通用标签,数据类型从Int整型改为String字符串。

1.17——实体数据的储存位置被改变

上一章目 录下一章存书签
站内强推一胎三宝:妈咪你别跑 绿龙博士 钓鱼万倍返还,开局钓起国民女神 乾坤剑神 混沌天行 鬼眼话事人 靠属性变强,我在镇守司吃软饭 修仙小书生 从现在开始当男神 同桌凶猛 穿越七九,我要娶祖孙三代的女神 鬼族修仙传 近战狂兵 性转贤者,从灵气复苏开始 修仙:从掌握变身开始 女修穿年代捡到一条龙脉 小饭馆 朦胧月下藏不住的爱意 男穿女:男主们都爱来偷听爷心声 穿越年代之我变成了女人 
经典收藏踏天境 开局被逐出圣地,觉醒满级悟性 木叶:从被纲手领养开始 随身带了个仙府 打不过?那等我换个号! 穿越到术士世界随身附带科技芯片 儒道至上?我在异界背唐诗! 幽冥仙途 玄幻之神级修炼系统 西游:贫僧不想取西经 镇守禁地的我,原来早就无敌了 凡人修仙传之真灵空间 本是剑术庸才,那想我的剑会说话 我靠系统斩妖除魔 洪荒之最强天帝 开局金风细雨楼主,一刀惊天下 十方乱世,人间武圣! 九阳踏天 长生:养只蚁后加点修仙 从骷髅苦工开始 
最近更新从种田养蜂开始长生修仙 我在冰封监狱建立万族圣地 九霄道主! 明明是人渣,女帝非说我深情! 西游:我成大圣胞弟! 凡根逆袭:青云仙途 凡间签到十年,养的宠物都已成仙 万界:我的观众是奥特曼 盗墓:我在潘家园签到成祖 综武:师傅,你别这样,怪难为情 综武:我在武当吃瓜看戏 从面板开始的异世界生存实录 红楼:开局金钱系统我成贾府首富 洪荒笔祖:我写爆三界 他即是帝国 开局获得系统,只要喝酒就能变强 轮回百亿年,我成了异界魔王 埋尸百年,我吞噬了万古神魔 执掌诸天:从反派逆袭开始 综武:我以太玄经,镇压神魔牧场 
Minecraft指令手册 你好MC - Minecraft指令手册txt下载 - Minecraft指令手册最新章节 - Minecraft指令手册全文阅读 - 好看的玄幻魔法小说