登陆注册
66052300000157

第157章 箭共通标签

我们都知道实体有实体共通标签,实体中的弹射物有弹射物共通标签。箭属于弹射物,它像矿车一样,拥有许多种类(额......实际上,除了光灵箭以外,其他的箭只是药水效果不同而已)。既然矿车拥有自己的共通标签,那箭呢?

Let us open Minecraft and have a look.

我们打开1.12.2版本,一进游戏就先往天空射一发,然后在箭落地之前快速敲下“/entitydata @e[type=arrow]{have_a_look:1b}”,然后这支箭的NBT标签就多了一个:

have_a_look:1b

的标签,同时我们也获得了这支箭的NBT标签:

{Motion:[-0.017573624569493466d,1.2870474554049782d,-0.01 7998429037403802d],damage:2.0d,shake:0b,xTile:-1,UUIDLeast:-85 75954613148320732L,inGround:0b,pickup:2b,Invulnerable:0b,Air:300s,OnGround:0b,Dimension:0,PortalCooldown:0,Rotation:[-135.68414f,89.041885f],life:0s,FallDistance:0.0f,inTile:“minecraft:air“,UUIDMost:-2256734521454604841L,inData:0b,crit:1b,Pos:[651.21191092562d,57.02173662322392d,41.009244940034264d],have _a_ look:1b,zTile:-1,Fire:0s,yTile:-1}

看着有点晕是吧?好,那我们归纳一下。

在这串NBT内,除了我们的have_a_look标签,其他的标签一共有24个。分类一下,可以得到:

Tags common to all entities={Motion,UUIDLeast,Invulnerable,Air,OnGround,Dimension,PortalCooldown,Rotation,FallDistance,UUIDMost,inData,crit,Pos,Fire}

Unknow tags={damage,shake,inGround,pickup,inTile,inData,crit,yTile,zTile,xTile}

这些标签中一共有10个我们还不知道是个啥,那今天我们就来仔细研究研究。

“damage”这个单词是“损坏”的意思,可作为名词或动词。但实际上按照这个标签的用途来说,它在这应该是个使动用法的谓语动词(????):使......损坏。再看看上面这串NBT,它的值是“2.0d”,最后的这个“d”,说明damage的值是双精度浮点数。

这标签的用途到底是什么?我们来个反向思维,damage的主语在这边应该是箭,即:

Arrows damage ......(箭使.......损坏了)

箭会使什么东西损坏?肯定是射中的实体啦!所以damage的作用就是:

设定箭将造成的伤害。

上面NBT中damage的值是2.0d,就代表着这个箭射中实体将造成2滴血(1颗心)的伤害。由于是双精度浮点数的值,所以这不一定是个整数。这个值会随着发射该箭的武器所有的力量附魔等级而变化,具体是力量附魔每高一级,就会增加0.5的值。假设你用一个附魔了144514级力量的弓发射这支箭,那么该值将会是:

57259.0d(114514×0.5+2.0)

等等,实际上还要再加一个0.5,因为只要一把弓附魔了力量,不管是多少级,都会额外加上0.5,然后再加上(0.5×力量等级)。所以,实际上的值应该是:

57259.5d

实际上箭造成的伤害不会那么低。箭的伤害还有被箭的速度影响,具体公式如下:

V箭×damage+暴击伤害=真实伤害

但还有一些情况伤害是个定值,如发射器射出的箭伤害一定是3滴血。

damage是这样,那接下来的shake又是何物?

shake的意思是“摇”,这个比较难猜,就直接上答案:

当箭击中方块时,shake将会设定为7(单位为游戏刻)。在shake还未降为0时,就是箭的“抖动状态”,玩家此时不能捡起箭,需待shake为0时,方可捡起。

上面NBT中的shake值为0b,b就说明这是字节型数值。这个0,说明这支箭可能还在飞行,也可能已经落地超过0.35秒了。

那该如何判断一支箭是否落地了呢?

ground的意思是“地面”,作为动词时有“着陆”的意思。上面,我们归纳出的第三个我们还不知道是干啥的NBT标签是“inGround”。in the ground是一个短语,和on the ground意思差不多,都是“在地面”的意思,只不过前者更注重于强调“接触”。

那“inGround”的作用大家应该猜到了吧?即:

箭是否接触地面。

上面的NBT标签中,inGround的值是:

0b

说明inGround的数值类型为Byte(字节型),同时这个0(false)也说明了这支箭还在飞。如果这里的值不是0,而是1(true),那就是接触地面了。

当一支箭接触到地面,就代表玩家可以捡起它。但,众所周知,小白射出的箭玩家是不能白嫖的,你知道这是为什么吗?

你肯定不知道,但看完下面这一段,你就知道了。

实际上,不光是小白的箭无法捡起。当你开启创造模式用弓射一发再调成生存时,你会发现你照样无法捡起创造模式射出来的箭。

为啥?

pickup这个单词的意思是“皮卡”,但这边应该把它拆分成pick up(捡起)。

既然pick up的意思是捡起,那么就是对捡起的设置咯?

对!

在上面的NBT中,pickup的值是2b,b说明这也是一个byte字节型标签。那这个2说明了什么?

pickup的值你翻遍整个Minecraft之后会发现只有三种:

小白射出的箭——0

你在非创造模式射出的箭——1

你在创造模式射出的箭——2

结合你玩Minecraft的经验和作者上面分享的发现,可以得出:

非玩家生物射出的箭:0——不可被玩家捡起

非创造模式玩家射出的箭(发射器也算):1——可被除旁观者模式外其他模式玩家捡起(注:Wiki上言“可以被玩家在生存或创造模式中捡起”,未提冒险模式,但作者实测冒险模式也可以捡起)

创造模式玩家射出的箭:2——只可被创造模式玩家捡起

现在我们可以回答上面的问题了:

这个2说明了这是一个创造模式玩家射出的箭

(注:用指令生成的箭pickup值也是0,即不可被捡起。推测是游戏本身产生的箭都不可以被玩家捡起)

........

在之前,我们遇见过两个在1.13扁平化中被合并的NBT标签,这两个标签相信大家还记得,它们是:

DisplayTile+DisplayData=DisplayState(矿车共通标签)

Block+Data=BlockState(下落的方块)

现在,我们在1.12.2版本的箭共通标签遇见了:

inTile和inData

这两个NBT标签和我们之前遇见的那两个标签在未合并之前的构造非常相似,那么它们是否在1.13版本中被合并了?

DisplayState和BlockState有个共同点,就在于他们都是与方块有关系。合并之前,它们都分别有一个用来表示数据值的标签:DisplayData和Data。数据值在1.13版本中被删除,所以这种类型的标签也就合并了。

inData和DisplayData、Data一样,末尾都有一个“Data”,那inData是否就是表示方块数据值所用呢?

inData如果真是表示数据值,那inTile呢?是不是用来表示方块id?

您别说,还真是。

在上面的NBT中,这两个标签的值分别是:

inTile:“minecraft:air“

inData:0b

你看,这minecraft:air不就是空气方块吗?这“0”不就是方块数据值吗?

这两个标签存的是啥我们知道了,但用处呢?

我们已经知道这支箭是飞在空中的,既然这里是空气方块,那么这两个的作用难道是.......

这支箭所处的方块?

您别说,您又对了。这两个标签的作用还真是这样的。

但我们还没有回答上面的问题呢。实际上的确是被合并了。至于合并成了什么东西.......

已知Block+Data=BlockState,Block=Tile,求单词式inTile+inData的单词值。

解:

inTile+inData=in(Tile+Data)①

将Block=Tile代入①,得

inTile+inData=in(Block+Data)②

将Block+Data=BlockState代入②,得

inTile+inData=inBlockState

∴inTile+inData=inBlockState

1.13版本扁平化过后,inTile和inData被合并成inBlockState(值类型:复合标签),内含两个NBT标签:

Name(字符串)——该方块的ID

Propertie(复合标签)——该方块的命名空间

——方块状态名称:值(类型:字符串)

......

crit这个单词的意思是“暴击”。在上面的NBT中,crit标签的值是:

1b

说明crit标签的值类型是Byte字节型。既然值类型是字节型,那就说明这个标签的作用不是确定这支箭暴击的伤害,而是这支箭是否会造成暴击。

所以,这支箭会造成暴击,因为它的crit值是1。

crit标签在1.11版本才被添加,1.11版本前没有这个标签,这需要注意一下。

最后,我们还剩下三个我们还未曾见过的标签:

xTile,yTile,zTile

这三个标签在上面的NBT中值都为-1,且没有类型字母,应该是Long长整型。并且它们三看起来跟坐标有关,而且坐标的三个值也是长整型......

首先,我这边说一点,这三个标签不是箭共通标签内的,它们还出现在1.11以前的鱼竿浮标和火球类实体(如火焰弹,凋零之首)中。至于它们三有什么用,作者猜测估计是跟实体下一格的方块坐标有关。

现在我们知道箭共通标签内有这些东西:

damage、shake、inGround、pickup、inTile和inData(inBlockState)、crit,那这就是全部了吗?

不,在更新的版本中,还有一些更新的标签:

PierceLevel(Byte:字节型)——中文Wiki介绍是“箭能射穿实体的时间长度”,但这好像并不是这个用途

ShotFromCrossbow(Byte:字节型[true|false])(1.14+)——表示这支箭是否来自于一把弩

SoundEvent——击中东西时触发的声音事件

SoundEvent我们先不用管。这个PierceLevel我本人也搞不懂,返回的值一直是0b,这可能是在击中实体的那一瞬间才可能会变化。剩下的这个,就是ShotFromCrossbow。

ShotFromCrossbow很简单,上面都介绍过了,相信只要是看得懂的都能懂吧?

总之,只要ShotFromCrossbow的值为1b,那么这箭就来自一把弩,0b则来自其他的东东。

这就是“箭共通标签”。

同类推荐
  • 我的NPC活了

    我的NPC活了

    有一天,张铭意外发现自己玩的一款单机即时战略游戏的NPC居然开口说话了,他还以为自己遇到彩蛋。可是玩着玩着,他就感觉不对劲,“怎么这些NPC的智能感觉这么高?”这时,他才发现,原来这不是游戏彩蛋,而是NPC真的活过来了。可是已经晚了,所有的NPC早已经化身为网络界的第五天灾,把被称为第四天灾的玩家杀得哭爹喊娘。先知爱丽丝:“冲啊,为了神明而战。”本书的主要玩法就是张铭为辅,NPC为主,从一款单机即时战略游戏开始,把网络中一个个游戏当做异界来进行攻略。PS:书中游戏全都经过作者的添油加醋,如有雷同,你来打我啊。
  • 投影游戏在异界

    投影游戏在异界

    来到异界梦想很丰满,现实很骨感。怒了,我要发奋图强,站在世界的巅峰。看我投影出神装,圣剑,龙心,红杖,蓝杖,蝴蝶。我要不同游戏中的装备。系统:对不起,你的能量不足。——!
  • 我靠算命当BOSS

    我靠算命当BOSS

    于山,《魔法联盟》传奇级职(fei)业(qiu)选手,不幸穿越成游戏世界,在开金手指的时候,似乎有点点误会......“SSS级难度剧本?我选的不是SSS级金手指么!”“宿主实力过强,系统自动平衡?”“系统你说我帅我就认了,我怎么就强了!”“系统!你不给我开挂就算了,凭什么还要削我?!”“补偿隐藏职业......算......算命师?”“主线任务维护系统剧情?”“你玩儿我呐!!!”拖家带口的于山,为了嗷嗷待哺的大小BOSS们,只能流落街头算命养家,再偶尔解决个世界危机赚点零花钱......原以为生活会这么下去,直到5个版本后,于山解开了系统封印......?养最凶的BOSS,带最疯的玩家,高呼“余半仙”之名,开始反攻吧!!!
  • 最强幸运主播

    最强幸运主播

    我能从游戏里抽取一切事物,带进现实!吃鸡里的轰炸区,王者里的泉水,火线里的神器,星战里的飞船,萌萌经里的鲲,修仙游戏里的仙魔神佛……只有你想不到,没有我抽不到的!异界入侵?怪物横行?没关系,看我凭借各种神级游戏道具,花样拯救世界!群号:579406705
  • 网游之矿工传奇

    网游之矿工传奇

    前两年的网游出了许多很好的书!大部分都看了!我的第一本书就从网游开始吧!因为我在起点看的第一本书就是网游呵呵!《猛龙过江》。书的总体框架已经想好了!主要就是看文笔功力了!希望大大们多多砸番茄呵呵!这本书主要是说一个生活在社会底层的人!通过网游崛起的故事!开始的时候会比较心酸!当然,主人翁通过自己的努力和超强的运气。最后会风升水起!
热门推荐
  • 大公报人张高峰(第三部)

    大公报人张高峰(第三部)

    中学起,立志文章报国;“一二九”,誓言献身抗日。七七事变,阻断了求学之路;带笔从戎,起步于台儿庄战场通讯。在邹韬奋、范长江引领下踏上新闻之路,做国新社记者、为“青记”早期会员。就读武汉大学,加盟大公报社,以战地通讯员入职。一篇《豫灾实录》,触怒当局,酿成大公报停刊事件;亲历中原会战,目击国军惨败;几遭逮捕,笔耕不辍。深入西康、岷江流域,采写鲜为人知的大后方彝族地区、战时工业,留下宝贵历史记录。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 腐心蚀骨

    腐心蚀骨

    13岁,她初遇他,被他凶狠的眼神所吓到;15岁,她满心欢喜的嫁给他;18岁,她被他害得家破人亡;20岁,逃离了他,他却后悔了...
  • 古国奇缘(下)

    古国奇缘(下)

    童谣跟随宇君去了遥远的菊凉国,却迎头赶上了菊凉国史上残酷的瘟疫。洪玉国乘菊凉危难之际,骤然发兵攻打诸良国。对润玉的思念几乎冲垮了童谣心里所有的防线,终于,在宇君的帮助下,两人共同带领菊凉的精锐部队暗中打入了已经沦陷的诸良国。在水牢之中,童谣和润玉再次相遇。想爱又不能爱,矛盾占据着彼此的心,所有言语也无法说出各自心中的痛楚……为掩护润玉脱逃,童谣最终落入了洪玉国之手……
  • 全职业剑神

    全职业剑神

    网瘾少年带着顶级游戏装备穿越修行世界。人挡杀人,佛挡杀佛。能动手就不废话!爽到不能呼吸!
  • 圣徽星辰帝

    圣徽星辰帝

    浩瀚宇宙,星球林立。一位位来自各个星球的强者在宇宙中演绎着自己的传奇。端木玄天,一个有些懒散而又认真的少年。拥着自己的双手重新开辟了自己家族的荣耀
  • 吃下这个果实我们就是兄弟

    吃下这个果实我们就是兄弟

    祈海!海贼迷穿越到了火影世界!自然系海海果实能力者!恶魔果实制作大师!五代目风影!山清水秀之砂隐村开创村长!繁华の风之国国主!全忍界最伟大的“慈善家”!此时的他正站上山坡上:“斑!吃下这颗恶魔果实!我们就是兄弟!”斑吃下,良久,没事发生,大喝道:“兄弟!你果然没有害我,我愿尊你为仁义无双!”祈海:“我创造一片海,我们愉快地携手游泳吧!”斑允诺。斑卒......群号:752215461,大家伙可以集结了!
  • 斗罗之我为金龙王

    斗罗之我为金龙王

    逸轩在一场事故之中失去了意识,醒来竟发现自己变成了金龙王,和妹妹古月娜逃往下界后,降临斗罗大陆,在这片神奇的大陆上,他又会书写出怎样的传奇。本书并非单女主,比比东会救,不会按原书的剧情来,会有很大改动。保证绝不太监,设定上可能不够严谨,不喜勿喷
  • 还债道

    还债道

    我踏在云端,俯视着灰色的大地。“还没决定好吗?”一个苍凉的声音,化作飓风,在我耳边呼啸而过。“等一下。”昂首是一片引得古今英雄着迷的星空,“只要再一下。”对于“他们”来说,百年千年都只是一下。可是我的一下,却要在下一个刹那了结。而这一个刹那,我的心神只为那双单纯而又迷茫的眼神所吸引。“所有的因或果,都将在这刻结束。”
  • 异能超级磁王

    异能超级磁王

    秦风偶然救下老人,得到了天使药剂恩惠觉醒异能开启了不一样的人生巅峰