登陆注册
66052300000154

第154章 真正深入了解NBT-6和2020年大事件表

(真正深入了解NBT-6)

在前五章,我们仔细地了解了一下NBT的数据类型。现在,我们已经了解得差不多了,那么还剩下什么呢?

NBT的版本

——第三节:NBT的版本

NBT最早在Indev版本就出现了,但是当时只有0到10这11个标签可用。

后来,到了Minecraft Beta1.3,NBT正式有了第一个格式版本:19132

Minecraft 1.2版本时,Notch引入了Anvil[.mca]文件格式来存储区块,在此之前存储区块的文件格式为Region[.mcr](Minecraft Beta1.3时为存储区块引入的)。而随着Anvil的引入,NBT的版本正式由19132升级到了19133,虽然只是新加入了一个整形数组(Int Array:[I])。

神奇的是,1.12版本时加入Long长整型时并没有更新NBT格式版本号。

NBT的版本就是这样,但它对我们有啥影响呢?

目前,如果我们要编辑NBT文件,我们除了使用Java版1.13及之后Minecraft内置的SNBT和压缩后(GZIP压缩)的NBT文件的转换器来编辑NBT文件,还可以使用第三方软件编辑NBT的文件。如果我们使用第三方软件NBT编辑文件的话,NBT的格式版本此时就有些影响了:

NBTEdit——19132——Windows

NBTExplorer——19133——Windows/Mac/Liunx

NEINedit——19132——Mac

MineBack Ultimate——19133——Windows

NBT2YAML——19133——Windows

webNBT——19133——浏览器

NBT grammar for Synalyze It——19132——Mac

如上,每个软件所支持的NBT格式是不同的。只不过,对我们的影响似乎也就这一点。

——第四节:SNBT

上面我有提到一个东西:SNBT,那么SNBT是个什么鬼东西呢?

其实它并不是一个鬼,而且它并不陌生,我们已经见过它很多很多次了。

它的全称就是:String Named Binary Tags(字符串化的二进制命名标签)

似乎这么说来还有点陌生。那么就直白点说吧,SNBT就是纯文本形式的NBT,且通常用于指令!我们所见到的所有文本形式的NBT都是SNBT!

——第五节:NBT?SNBT

我们现在知道了NBT文件它其实是二进制的,且不同于我们平常所见到的SNBT。那么,我们该怎样转化NBT和SNBT呢?

其实很简单,上面提到MC社区里有许多第三方软件,随便下一个基本上就可以了。

但第三方软件毕竟不是Mojang开发的。那么Mojang这个官方有开发吗?

答案是肯定的。

Java版1.13之后,MC服务端就有自带的数据生成器。这个数据生成器有这么几个功能:

①实现NBT(.nbt)?SNBT(.snbt)

②生成原版数据包的全部内容

③生成一个列出了所有方块状态、注册名和完整的原版命令树的JSON文件

那么我们该如何启动它呢?

很不简单。首先,我们需要一个Minecraft 1.13版本及以上的服务端,你可以在MCBBS或者是官方启动器上下载,只不过官方的下载.......你需要一个迅雷。

下载完后,你可以直接粗暴地双击server.jar(服务端),你也可以按照作品相关里的教程自己创建一个.bat文件方便打开:

@echo off

color 0

title A Minecraft Server

java -Xms2g -Xmx2g -jar server.jar pause

如果你打开不了,那有3种可能:

1.你抄错了上面的指令(方法:细心检查)

2.你未安装JAVA(方法:安装一个JAVA 8)

3.你安了个32位的JAVA(方法:卸了,重新装一个64位的JAVA 8,或把-Xms2g -Xmx2g调成-Xms1g -Xmx1g)

(会不会有人打开不了,发现没安JAVA,于是下了个32位的JAVA 10,只不过不是脱机的,然后嫌下载慢随便在网上找了一个。结果JAVA安好了,捆绑软件也一大堆,浏览器主页还被改了。再次打开仍然打开不了,于是删了Java 10,去下了个64位的Java 10,这次聪明用脱机。结果发现系统是32位,不知道怎么弄,弄来弄去还差点把Windows换成了Mac。最后重新买了一台装了64位的Windows系统电脑,花了998$。安了64bit JAVA 10,再次打开,发现还是打开不了。然后才了解到MC是JAVA8的,于是下了Java 8 64bit脱机,结果仍然打不开。最后终于发现原来打成了:

@echo off

color 0

title A Minecraft Server

java -Xms2g -Xmx2g -jar server pause)

回到正题。

按照作品相关里的教程,我们配置好服务器后(实际上不用配置也可以),这样子做:

首先,打开命令提示符(Windows)或终端(Mac)

打开方法这里就不多叙述了。

然后复制这一串代码:

java -cp server.jar net.minecraft.data.Main

复制粘贴进去不要立刻执行,因为这毛用都没有,还会显示:

(Windows)

错误:找不到或无法加载主类 net.minecraft.data.Main

(Mac)

错误:找不到或无法加载主类 net.minecraft.data.Main

原因: java.lang.ClassNotFoundException: net.minecraft.data.Main

那么该怎么办呢?

其实很简单,你直接输入进去这系统压根就找不到server.jar这个文件,所以,这里你就要这样子:

打开你的server.jar所在的文件位置,然后直接把整个server.jar文件拖进去,你就会发现系统自动给你输入了server.jar的路径。

现在好了,你只需要用这段路径替换原来的server.jar,比如你的server.jar路径是:

D:\Minecraft\Minecraft Server\1.13.2\我的世界1.13.2官方服务端.jar(Windows)

/Users/block/Desktop/桌面文件/Server/server.jar(Mac)

那么你替换之后,就会变成这个样子:

java -cp D:\Minecraft\Minecraft Server\1.13.2\我的世界1.13.2官方服务端.jar net.minecraft.data.Main(Windows)

java -cp /Users/block/Desktop/桌面文件/Server/server.jar net.minecraft.data.Main(Mac)

现在,执行,你就成功——走出了第一步。系统找到了这个server.jar,并执行了指令,只要你这个server.jar是1.13版本及以上的,那么就会跳出:

Option Description

-----------------

--all Include all generators

--client Include client generators

--dev Include development tools

--help Show the help menu

--input<String> Input folder

--output<String> Output folder (default: generated)

--reports Include data reports

--server Include server generators

这是啥意思呢?我们把这一大串放到生草机里去搅拌一下,就会得到:

选项说明

-----------------

--全部

包括所有发电机

--客户

包括客户端生成器

--开发

包括开发工具

--救命

显示帮助菜单

--输入

输入文件夹

--输出

输出文件夹(默认:生成)

--报告

包括数据报告

--服务器

包括服务器生成器

差不多可以看出一些端倪,只不过这仍然太生草了。所以我们需要上一下Minecraft Wiki,得出这些东西的具体用途是:

--all 生成原版数据包

--client 生成assets/minecraft文件夹,包含blockstates和models文件夹

--dev 用于NBT文件和SNBT文件的相互转换[需要验证]

--help 显示选项和描述列表

--input 输入含有nbt或snbt文件的文件夹

--output 规定输出的目标文件夹,若目标文件夹不存在则自动新建该文件夹(默认为generated)

--reports 生成reports文件夹,包含biomes文件夹和blocks、commands、registries三个JSON文件

--server 生成data/minecraft文件夹,包含advancements、loot_tables、recipes、tags四个文件夹

--validate [需要更多信息]

现在我们可以尝试生成一个原版的数据包,这就需要在控制台上输入:

java -cp D:\Minecraft\Minecraft Server\1.13.2\我的世界1.13.2官方服务端.jar net.minecraft.data.Main --all(没错,只需要在原本的后面加上你要执行的指令就可以了),回车运行。

然后你就会发现出现了一大串的信息。

接着,到目录去查看......

反正作者这边什么东西也没有生成。Minecraft Wiki上还写着:

原版数据包(pack.mcmeta文件除外)将生成在当前文件夹的generated目录中。

难不成是打开方式不对?

来试试其他的功能吧,比如这个--help,看一下会有什么帮助:

java -cp D:\Minecraft\Minecraft Server\1.13.2\我的世界1.13.2官方服务端.jar net.minecraft.data.Main --help

结果......还是这个界面:

Option Description

-----------------

--all Include all generators

--client Include client generators

--dev Include development tools

--help Show the help menu

--input Input folder

--output Output folder (default: generated)

--reports Include data reports

--server Include server generators

就很离谱。

对了,我们最开始不是要转换文件的吗?咋弄成这个了?

好,那现在我们就开始尝试一下--dev:

java -cp D:\Minecraft\Minecraft Server\1.13.2\我的世界1.13.2官方服务端.jar net.minecraft.data.Main --dev --input“D:\Minecraft\Minecraft Server\1.13.2\world“

然后......

实际上这是一个错误的做法。正确的做法应该这样子:

在服务端这个目录创建一个新的文件夹(实际上也不用创建,创建只是为了更好的把要转换的文件集中起来),并将其取名为:input

然后,找到实际上是以NBT存储的.dat的文件(比如world下的level.dat),将它们丢进去。

接下来,改这些文件的后缀.dat为.nbt。

最后,最重要的一点,执行:

java -cp D:\Minecraft\Minecraft Server\1.13.2\我的世界1.13.2官方服务端.jar net.minecraft.data.Main --dev --input “D:\Minecraft\Minecraft Server\1.13.2\input“

(注意,空格一定要空,作者最开始时就是少了一个空格,然后就是一堆问题!特别是--input和后面的文件夹路径中间一定要空!这是个坑!)

然后,当出现:

[xx:xx:xx][main/INFO]: Starting provider: NBT to SNBT

[xx:xx:xx][main/INFO]: Converted level from NBT to SNBT

[xx:xx:xx][main/INFO]: NBT to SNBT finished after xxx ms

恭喜你!你成功了!

但转换后的文件去哪了呢?

答案很简单:

C:\Users\XXXXX\generated(Windows)

/Users/XXXXXX/generated(Mac)

找到这个目录,你就会发现了自己期待已久的:

.snbt!

这个文件你现在可以用记事本来打开并修改了。

但现在问题又来了,我们现在可以使用dev来进行.nbt→.snbt,那该怎么.nbt←.snbt呢?

很简单。我们把刚才弄出来的.snbt文件再放进input文件夹,顺便删掉那个.nbt。再度执行:

java -cp D:\Minecraft\Minecraft Server\1.13.2\我的世界1.13.2官方服务端.jar net.minecraft.data.Main --dev --input “D:\Minecraft\Minecraft Server\1.13.2\input“

然后你就会发现这不行。

为啥呢?Minecraft Wiki上说:

用于NBT文件和SNBT文件的相互转换[需要验证]

很明显这里错了,--dev只能是.nbt→.snbt,并不能.nbt←.snbt。

那该怎么办呢?

使用--client:

java -cp D:\Minecraft\Minecraft Server\1.13.2\我的世界1.13.2官方服务端.jar net.minecraft.data.Main --client --input “D:\Minecraft\Minecraft Server\1.13.2\input“

然后:

[xx:xx:xx][main/INFO]: Starting provider: SNBT -> NBT

[xx:xx:xx][main/INFO]: SNBT -> NBT finished after xxx ms

Minecraft Wiki上这样介绍--client:

生成assets/minecraft文件夹,包含blockstates和models文件夹

很明显这句话完全错误。实际上,--client的作用就是.nbt←.snbt。现在你打开generated,你就会发现.snbt重新被转换成了.nbt。

现在我们知道了--dev是.nbt→.snbt,--client是.nbt←.snbt,也发现了Minecraft Wiki中的错误。剩下的内容,我们就以后再研究了,毕竟剩下的不是本章的重点。

OK那么NBT就讲到这了。我们下一章再见。

(2020年大事件表)

2021了!

时间真的过得好快啊,本书于2020年1月4日上架,这么算来也快1周年了。

话说2020年真的是多灾多难的一年,在这一年里:

一月

1日——武汉华南海鲜市场休市;荷兰更改国家徽标

8日——1·8乌克兰客机坠毁事故

9日——武汉出现首例COVID-19死亡病例

13日——泰国发现一例COVID-19病例

20日——钟南山明确表示COVID-19会“人传人”

23日——因COVID-19,武汉封城;火神山医院开建

24日——全国COVID-19累计确诊超1000人

25日——雷神山医院开建

26日——科比坠机、国家卫健委称COVID-19潜伏最长14天且具有传染性;全国COVID-19累计确诊超2000人

28日——中国医学科学院称蝙蝠是病毒起源

二月——澳洲大火终于熄灭;非洲蝗灾

2日——火神山医院正式交付

3日——武汉建“方舱医院”

7日——李文亮医生经抢救无效去世

8日——雷神山医院正式交付

11日——世卫组织将新型冠状病毒肺炎命名为“COVID-19”

14日——全国除湖北省以外其他省份新增确诊病例数实现“十连降”。

22日——中国-世卫组织****疫情联合专家考察组前往湖北省开展现场调研

三月

1日——武汉产生首家“休舱”方舱医院

4日——武汉健康码在微信、支付宝平台上线运行

6日——武汉方舱医院全部休舱

9日-18日——美股4次熔断

19日——武汉新增确诊、新增疑似、现有疑似第一次全部归零;美国COVID-19累计确诊超10000

23日——美国单日新增COVID-19确诊病例首次达到10000

四月

4日——全国性哀悼活动

8日——武汉解封

20日——史上首次出现“负油价”

五月

25日——美国非洲裔男子乔治·弗洛伊德在遭遇警方暴力执法后身亡,引发抗议浪潮

六月

16日——因自6月11日以来,北京连续报告新发地批发市场相关的****病例,报告病例以每日两位数增加,形势严峻,故宣布自6月16日起北京市应急响应级别由三级调至二级

21日——中国可观测到的日环食

23日——墨西哥发生7.4级地震,震源深度10千米

29日——印度电子信息技术部宣布禁止59款中国手机应用软件

七月——1949年以来首现“7月空台”

7日-8日——高考

8日——中央人民政府驻香港特别行政区维护国家安全公署在香港正式揭牌,宣告驻香港国家安全公署正式成立并运行

20日——美国众议院已经以336票对71票通过该法案,禁止联邦雇员在政府设备上下载TikTok

23日——长征五号遥四运载火箭搭载我国自主研发的“天问一号”火星探测器在中国文昌航天发射场顺利升空,成功将探测器送入预定轨道

31日——北斗三号全球卫星导航系统建成暨开通仪式在北京举行

九月

8日——全国抗击****疫情表彰大会在北京人民大会堂隆重举行

13日——微软发布声明表示,字节跳动告知他们,他们不会把TikTok的美国业务卖给微软

15日——我国首个由互联网公司(哔哩哔哩)定制、用于科普传播的视频遥感卫星“哔哩哔哩视频卫星”由中国长征十一号运载火箭在黄海海域发射,并顺利进入预定轨道

23日——美国累计COVID-19死亡人数破200000

十月

20日——阿联酋2020年迪拜世界博览会开幕

10月26日-29日——中国共产党第十九届中央委员会第五次全体会议在北京召开

十一月

7日——拜登获得270张选举人票

15日——区域全面经济伙伴关系协定(RCEP)签署仪式以视频方式进行,15个RCEP成员国经贸部长将在仪式上正式签署该协定

19日——蛋壳公司暴雷

21日——中国最后一位“流氓罪”获罪者牛玉强将服刑至2020年。1997年7月1日,经过第四次修改之后的新刑法正式实施,1984年被用来判决牛玉强的流氓罪被从刑法中永久地删除

24日——11月24日4时30分,我国在中国文昌航天发射场,用长征五号遥五运载火箭成功发射探月工程嫦娥五号探测器,火箭飞行约2200秒后,顺利将探测器送入预定轨道,开启我国首次地外天体采样返回之旅

十二月

8日——中尼两国联合对外宣布,经过两国团队的扎实工作,珠穆朗玛峰的最新高程为8848.86米

12日——美国累计COVID-19死亡人数超过二战美国死亡人数

14日——美国选举人团共538位选举人按照各州选举结果投下选举人票,确认民主党人拜登赢得美国大选,成为下届美国总统

24日——华盛顿哥伦比亚特区市长穆里尔·鲍泽宣布2020年12月24日为华盛顿特区的“安东尼·福奇日”;阿里巴巴涉嫌垄断被立案调查

31日——法院判决《迷你世界》《奶块》侵权,网易将获赔超四千万元;《英欧贸易与合作协议》于当地晚11时正式生效。这意味着英国脱欧过渡期结束,英国正式离开欧盟单一市场和关税同盟,彻底脱欧;中国COVID-19疫苗上市

同类推荐
  • 稔稔初醒

    稔稔初醒

    温稔18岁那年第一次见到周醒他只有17岁,是他成为电竞选手的第二年。那年,她在Kpl现场里看到周醒,手指纤细修长,他专注认真,抿了抿唇,两旁有浅浅的酒窝,内双的桃花眼勾人心魂,她被他迷的不行。比赛结束后,周醒取下耳机,抬头正好撞上温稔正看他看得发呆的双眸。超人气网络画手xKPL神颜乖崽.
  • 诸星之再生

    诸星之再生

    游戏这东西从来就没有简单的,所谓的虚拟游戏更是如此。要穿越的话这本书有,不过和你想的不太一样;要升级要修仙这本书里也有,不过和你想的依旧不太一样;要种地要战争要争霸,这本书同样有,但是依旧和你想的不太一样。感觉会被骗的就进来看看吧,坚持百章你会发现这本书确实有点意思。
  • 阿拉德之大暗黑天

    阿拉德之大暗黑天

    身患绝症的楚易被“意外”召唤至阿拉德大陆后,成为了召唤师海蒂名义上的召唤兽。几经波折后拜入GSD门下,成为一名“阿修罗”,为寻求康复的希望开始走上修行之路。从阿拉德到天界,再到魔界,一路上他经历了什么?仿佛冥冥中有一只手,在操纵着楚易的命运,他最终的归宿如何?“阿修罗”这个职业的尽头,又会在哪里?
  • 神兵天下之天下公敌

    神兵天下之天下公敌

    财富,名声,势力,拥有企鹅帝国一切的男人游戏王-小马·D华腾,他在游戏发布会上的一句话让人们趋之若鹜奔向新的游戏时代——神兵天下。“想要我的企鹅币吗?想要的话可以全部都给你,去寻找吧,我把财富全放在那里!”于是,所有的玩家都奔向“神兵天下”追求梦想,这是属于神兵天下的伟大游戏时代。
  • 三国杀之传奇

    三国杀之传奇

    一位热爱三国的屌丝一次无意的醉酒后一个神秘的黑衣人一场奇妙的旅行一切……从这里开始!
热门推荐
  • 冤家路宰:暖心上司拐回家

    冤家路宰:暖心上司拐回家

    安怡怎么想也没想到,自己会被上司大人壁咚在总裁办公室内。“不要。”安怡弱弱地说。“不要什么?”他邪魅一笑,低头就吻了上来。安怡还没说出口,就被吻的天昏地暗。那一刻,她便知道自己再也逃不出他的魔爪了。
  • 杀手修真录

    杀手修真录

    身怀绝技冷酷无情游刃于各色美女之间从都市到异世他还是那个血气方刚的无人阻挡的江宇吗
  • 天行

    天行

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

    尊主降临

    终于回来了,我再也不是那个任人宰割的孩子了,属于我的东西我一定会拿回来的。“恭送尊主回家,大漠永远会是您的后盾”一万精兵齐声道浪迹15年,我贺新再不是你们能够欺负的,当年从我手里拿走的东西都要你们还给我。
  • 当偏执遇到陆先生

    当偏执遇到陆先生

    顾伽茵在婚礼上公布了未婚夫陆景修的一段视频,让他形象尽毁,名声扫地。本以为情爱两清,可以就此别过,相忘于江湖,陆景修却不肯放过她。他说,“你把我搞的声名狼藉,我凭什么放过你?”一纸婚约,让两个人的命运再次牵连到了一起。顾伽茵恨陆景修,凭什么要用她的人生,去洗白他的人设?可是当她以一个局外人的角度去看待他们的感情,才发现陆景修是真的很爱她,只是她一直不信。--情节虚构,请勿模仿
  • 血族萌女恋爱记

    血族萌女恋爱记

    尹血翎一个容易犯二但也是一个可爱的女生。她是血族的唯一继承者,在她出生时她的母后把自己所有的法术传给了她,然后把她送到了人类世界并把她的法术给封印。在人类世界她是全球首富的女儿,只因在学校里举办的校园宫廷舞会再一次回到了自己生活的地方,在那里她认识了狼族继承者安洛熙和沐成月,也爱上了魔族继承者绯羽轩。在得知父王母后是被狼族的王给杀死后与狼族继承者开始敌对,与此同时自己与绯羽轩的感情遭到了破裂…在一次聚会中尹血翎终于意识到绯羽轩并非真心爱自己,而是为了利用自己来杀死狼族继承者,当她知道这件事后会继续跟绯羽轩在一起还是另有所选呢?欢迎大家阅读《血族萌女恋爱记》。
  • 若繁星再无归期

    若繁星再无归期

    他们说,“相遇总是猝不及防,而离别多是蓄谋已久。”我原来是不信的,直到我遇见了你,我才知道,我再努力地抓紧你,也抵不过你的一句就此别过。
  • 救赎你的堕落天使

    救赎你的堕落天使

    Aiaiz回到中国后遇到了李明洋,是位新生代电竞选手,她也因为男孩渐渐喜欢上了游戏,拿着爷爷给的“保命钱”,组建了战队,踏上逐梦旅程,在这期间Aiaiz和李明洋相互吸引,互相扶持,成为了男女朋友。Mastema一直在暗中关注着Aiaiz,知道她爱上了别的男人,特地去了中国将她“带”回了法国……
  • 吸血鬼小妹:末世探险记

    吸血鬼小妹:末世探险记

    吸血鬼家族千百年来出了一个奇葩小妹,这只不知天高地厚的小小吸血鬼在这人心裹测的末世里会发生什么更加奇葩的事情呢?敬请期待!
  • 余光翼是理

    余光翼是理

    趁着风华,赶着正茂,将一生谱写成一篇故事,在合适的年龄遇见一个一生所爱的人。死亡.抛弃.献祭.离别.相见.阴谋背后的人到底是谁?"阿理,我爱你!你快醒醒""阿翼,我错了,我真的错了,你快好过来""我不想每天只和一个尸体说话了,求求你了,你快醒醒,我不能没有你""阿理说过她最喜欢百合花了,我就将整个翼理国种满百合花"一个个阴谋的揭穿,一个个死亡的危机,背后的人到底是谁?