我的世界jar文件是什么?
从概念上讲,游戏下载下来后解压后应该包含两个目录(或者多个),一个是名为“.minecraft”的目录,另一个就是玩家进入游戏后看到的目录了。其中“.minecraft”这个目录是游戏的根目录,里面放的都是游戏运行所需要的资源;而玩家进入游戏之后看到的那个目录就是一个游戏世界了,可以理解为该游戏中所有资源的集合体。 在我的世界中,每个游戏世界都是自成一个独立的世界,它们共享一些资源(如生物群系、地形地貌等),但不可能说是同一个世界(虽然有时候会看到有人提出这样的疑问:“我上次离开的时候森林还只有这么高,怎么这次回来就长得这么高了?!”)。也就是说在游戏中看到的是某个玩家自行构建的游戏世界,jar就是对这些游戏世界的压缩与打包。
当然,对于某些地图来说可能只有一个很小的压缩包,而对于其它一些大型地图来说可能就是几十个甚至上百个的压缩包,这是因为我在自己搭建服务器的时候把地图分割成了很多小块,每次加载地图只加载需要加载的部分。
目前我的世界中支持的两大加载模式为:Lua文件和jar文件。 Lua文件是利用Lua脚本语言来实现地图的加载和生成,由于Lua文件的读写都非常方便,所以这种加载模式被广泛使用。 但Lua文件有一个致命的缺点那就是无法实现多世界同时加载,这意味着当我的世界遇到了复杂的地形情况比如岩浆池的时候,就只能一个个地填充,效率非常低。而且如果地图比较大,Lua的文件管理也非常麻烦。 为了克服上述问题,我现在都自己实现了对jar文件的读取,这是一种基于二进制流的加载方式,它不需要像Lua那样做文本的解释,也不需要像forge那样需要修改资源文件的加载路径,只需要将需要加载的资源直接放到对应文件夹中即可,无论是对于新添加的资源还是修改的资源都能很好地支持。