我的世界服务器地图缓存位置,地图(物品)是怎么存储的?以及提取地图数据的方法...

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x

本帖最后由 时之虫 于 2020-3-18 23:02 编辑

大家好,我又来了。

上次在旷工茶馆水了一个帖子,简单说了说自己编写了一个简单的地图结构生成器,当时说后面会放出具体的教程和生成器。但是由于实在太懒以及太忙一直没有发,考虑到地图这里比较复杂(其实还是懒),先发一些前置的、需要了解的东西。

一.地图是怎么被存储的?

地图的文件存储在.minecraft文件夹下的\saves\存档名称\data\map_i.dat中,其中i为大于等于0的整数,这个数字就是地图的id,游戏中玩家手中的地图物品(filled_map)本身只存储了它对应的地图id,而更多的更全面的信息都在map_i.dat中。我称之为地图文件。

那么我们来剖析一下,地图文件里都有什么呢?

这里以我自己生存存档里的第一个地图文件map_0.dat为例。

地图的样子如图所示

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

00地图的内容.png (124.69 KB, 下载次数: 0)

2020-3-18 19:41 上传

我们用NBT Explorer打开这个地图文件,其所有NBT标签是这样的:

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

01map_i.dat文件的nbt结构.png (80.53 KB, 下载次数: 0)

2020-3-18 19:41 上传

下面稍微介绍一下各个nbt的用处:

banners列表:存储地图上旗帜标志的信息;

frames列表:加入了地图的地图标记者(被地图标记的玩家,这里没用);

dimension整数/byte值:存储地图区域所在的维度,0为主世界,-1为下界,1为末地;

locked byte值:地图是否被锁定。如果被锁定则为1,否则为0;

scale byte值:地图被缩放的程度(0~3),无缩小则为0;

trackingPosition byte值:是否在地图上显示玩家的位置;

unlimitedTracking byte值:玩家距离地图中心过远时是否以边界上的小圆点显示;

xCenter整数:地图绘制区域的中心位置x坐标;

zCenter整数:地图绘制区域的中心位置z坐标;

colors数组:存储地图颜色的阵列。(这个就是我这篇帖子的主角)

DataVersion整数:地图创建时的版本。

二.地图内容的提取

我们打开colors,看到它的内容是这样的:

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

02colors数组的内容(十六进制).png (93.34 KB, 下载次数: 0)

2020-3-18 19:41 上传

这是以16进制显示的数组内容,不是我们想要的,所以我们点击左上角的Text View,查看十进制的信息:

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

03colors数组的内容(十进制).png (72.7 KB, 下载次数: 0)

2020-3-18 19:41 上传

如图,它是一个显示的很不对齐的矩阵。不要紧,我们把ctrl+A再ctrl+C,再把它粘贴到word文档里:

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

04将十进制内容粘贴到word文档后.png (162.9 KB, 下载次数: 0)

2020-3-18 19:41 上传

然后连续应用两个替换,把所有的双空格和换行都换成英文逗号(注意是英文逗号,不要中文逗号!)

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

05将换行替换为逗号(1024).png (25.88 KB, 下载次数: 0)

2020-3-18 19:41 上传

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

06将双空格替换为逗号(15360).png (21.54 KB, 下载次数: 0)

2020-3-18 19:41 上传

完成替换之后,它变成了这个样子:

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

07完成替换处理后.png (190.1 KB, 下载次数: 0)

2020-3-18 19:41 上传

如果你的处理正确,那么它应该替换了1024个换行和15360个双空格,这会让电脑稍微卡一会。

接下来把这些数据复制,导入到matlab里:

cc3f09d759d2cdb5ff85a1c6397f2a55.gif

09输入以下内容.png (183.53 KB, 下载次数: 0)

2020-3-18 19:41 上传

先打开matlab,输入如下代码:

Raw=[复制代码然后按下ctrl+V粘贴;

不要按回车,再继续输入

];复制代码按下回车,我们成功创建了一个叫Raw的行向量,它存储了colors列表中所有的信息。

实际上你相当于输入了这样一条超级长的命令:

Raw=[30,30,29,29,6,30,5,5,6,29,29,29,4,5,5,5,5,5,5,5,5,5,5,5,5,4,4,29,5,30,29,29,30,29,29,30,30,6,6,4,5,4,5,30,5,30,5,5,29,30,30,4,6,30,6,30,30,30,4,30,62,5,5,5,29,29,29,29,50,29,29,29,29,5,5,5,5,4,5,5,4,5,5,5,30,5,5,5,5,5,5,5,5,5,5,5,4,4,5,4,4,5,5,5,5,29,4,30,5,30,5,4,29,30,5,5,5,9,30,50,50,50,50,50,50,50,50,49,29,29,29,29,29,4,5,5,30,29,4,4,5,5,5,5,5,5,5,5,5,5,30,30,30,30,30,29,5,29,29,30,29,30,29,29,4,30,6,6,6,6,5,5,6,5,30,30,30,29,5,6,30,5,5,5,29,29,30,4,4,5,5,5,29,29,29,29,30,29,29,29,29,5,5,5,4,5,44,44,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,4,5,4,5,5,5,5,5,5,29,5,4,30,29,30,30,29,29,30,30,30,9,8,9,50,50,50,50,50,50,50,50,4,4,4,29,29,30,5,5,4,29,5,5,30,5,5,5,5,5,5,5,5,30,29,29,30,29,29,30,5,29,30,29,29,29,30,29,6,5,5,6,6,6,6,5,6,6,30,5,5,5,6,30,5,30,6,5,30,29,4,5,5,5,5,5,29,29,29,29,29,29,29,29,29,5,5,4,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,30,4,30,5,29,29,4,4,29,4,29,29,8,9,9,9,9,9,50,50,50,50,50,50,5,30,30,29,4,4,5,5,30,29,30,30,29,5,5,5,5,5,5,5,5,29,29,30,29,30,29,29,5,29,28,29,29,29,28,29,5,5,6,6,30,6,6,30,6,30,30,30,5,6,5,29,6,5,30,30,4,30,5,5,5,5,5,5,29,29,29,29,29,29,29,29,29,45,4,5,4,5,5,6,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,6,6,6,5,5,30,29,30,4,30,29,29,5,30,29,5,4,29,5,9,9,9,9,9,9,9,50,50,50,50,5,29,29,4,30,5,5,30,29,29,29,29,4,5,5,5,5,5,5,5,5,29,30,29,29,29,30,29,5,29,29,28,29,28,29,29,5,6,5,30,5,30,6,4,5,4,5,5,6,5,30,5,5,6,5,29,30,29,6,5,5,5,5,5,29,29,29,29,29,29,29,29,29,45,5,5,6,6,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,5,5,29,4,4,5,28,30,29,30,29,4,30,30,29,30,9,9,9,9,30,9,9,9,9,9,9,6,4,29,30,4,5,5,4,28,29,29,4,5,5,5,5,5,5,5,5,5,29,28,29,29,29,28,29,5,28,29,29,28,29,29,28,5,5,30,4,6,30,6,6,6,6,30,6,6,6,5,30,6,5,6,5,30,30,30,30,5,5,5,5,4,4,4,4,4,4,4,4,44,45,5,5,5,5,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,30,5,5,4,4,29,29,29,30,29,4,4,4,9,9,9,9,8,9,9,9,9,9,9,30,30,29,4,5,5,30,30,29,4,4,5,5,5,5,5,5,5,5,5,5,29,29,28,29,28,29,29,30,5,4,4,4,4,4,29,30,5,4,30,30,29,6,6,30,6,30,6,30,6,6,5,5,6,5,30,5,5,5,29,6,5,5,5,5,5,5,5,5,5,5,4,4,45,5,5,5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,30,4,5,5,5,5,30,29,4,29,29,30,5,30,30,30,30,9,9,9,9,9,9,9,30,4,4,4,30,30,30,29,4,29,5,5,5,5,5,5,5,5,5,5,5,5,4,29,29,28,29,29,28,29,30,30,30,6,6,6,29,29,5,5,5,29,30,30,30,30,6,5,30,6,6,6,6,6,6,6,4,30,30,30,30,30,6,30,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,30,30,30,30,5,5,5,5,4,4,5,4,29,29,30,29,30,29,30,9,9,9,9,9,9,30,29,30,30,30,29,4,4,29,29,29,30,5,5,5,5,5,5,5,5,5,5,5,5,4,28,28,4,28,29,29,4,4,4,5,5,30,30,30,30,30,5,5,29,30,30,6,30,30,30,6,6,6,6,5,5,6,6,4,30,4,5,5,30,29,30,5,5,5,5,5,30,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,30,30,30,30,30,30,5,5,5,5,5,5,5,29,29,29,30,29,30,29,5,5,9,5,30,30,4,4,30,30,30,28,5,30,28,4,29,29,30,5,5,5,5,5,5,5,5,5,5,5,30,4,29,30,29,29,4,30,30,5,5,5,4,29,4,29,29,5,5,30,29,29,30,30,5,30,30,6,6,6,6,6,6,6,30,6,6,6,6,30,5,29,30,5,5,5,30,4,30,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,5,5,5,5,5,5,5,5,5,5,5,5,30,29,29,29,29,29,5,5,5,5,5,5,30,4,4,29,28,29,28,29,30,5,30,30,29,4,5,30,30,29,29,30,4,4,4,30,29,29,29,30,5,5,5,5,5,5,5,5,5,5,29,5,29,29,29,29,30,4,29,5,5,5,5,4,30,30,29,5,5,4,29,5,30,30,6,5,30,30,6,6,30,30,30,6,5,6,6,30,30,5,6,5,5,30,5,30,4,5,4,30,5,5,30,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,30,30,30,30,30,29,29,29,29,29,5,5,5,5,5,5,4,30,5,28,28,28,28,4,30,6,30,5,5,30,6,5,29,30,29,29,5,5,5,29,29,29,29,4,30,5,5,5,5,5,5,5,30,5,29,30,29,29,29,29,29,30,29,30,5,5,5,30,29,4,5,30,30,5,5,30,30,5,30,30,30,30,6,30,30,30,6,6,30,6,6,5,4,30,30,6,5,4,30,28,30,30,30,29,5,30,29,30,5,5,5,5,5,5,5,5,5,5,5,30,30,30,30,30,30,5,5,30,29,29,30,29,29,30,29,29,28,29,30,30,5,5,5,5,5,4,5,4,4,4,4,5,29,5,4,5,30,29,5,5,29,29,30,29,5,30,30,29,29,29,29,30,29,30,5,5,5,5,5,5,29,30,29,29,4,29,29,29,29,29,4,4,30,5,30,29,4,5,30,5,29,30,5,5,29,6,5,30,6,30,6,30,30,5,6,6,5,6,6,6,30,5,30,5,6,5,5,30,4,29,28,29,5,29,29,29,5,5,5,5,5,5,5,5,5,5,30,50,50,50,50,50,50,30,5,29,29,30,29,30,29,29,29,29,30,29,29,29,30,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,29,4,30,5,29,29,28,29,4,4,4,4,4,4,4,4,4,30,30,5,5,5,30,5,29,29,4,29,30,29,4,29,29,29,30,5,4,30,29,29,30,5,4,30,5,29,30,5,5,30,30,4,6,30,30,30,30,30,6,6,30,6,6,6,6,6,30,6,6,6,5,5,6,29,29,4,30,29,29,29,30,30,5,5,5,5,5,5,5,5,29,50,50,50,50,50,50,29,5,29,30,29,29,29,30,29,29,29,28,29,30,29,29,5,5,5,5,5,5,5,5,5,5,5,30,30,5,30,4,30,29,30,29,28,29,29,30,29,4,29,29,29,5,30,30,28,29,30,5,5,29,30,29,29,30,29,4,4,5,29,4,29,4,30,30,29,4,4,29,30,30,30,5,29,29,30,5,5,29,6,6,5,30,30,6,30,6,5,5,6,6,6,6,6,5,30,5,5,4,4,5,5,4,5,4,30,5,29,29,29,5,5,5,5,5,5,5,5,29,50,50,50,50,50,50,29,5,29,28,29,29,29,28,29,29,28,29,29,29,30,29,5,5,5,5,5,5,5,5,5,5,5,29,4,30,4,5,4,4,4,28,29,29,4,4,4,4,4,29,4,29,28,28,4,28,28,4,30,29,29,4,4,29,29,30,5,30,4,30,29,5,29,29,29,30,30,29,29,29,4,5,30,29,4,5,30,5,6,5,6,30,30,6,30,30,6,30,30,30,30,30,6,30,30,6,46,45,45,5,5,6,30,30,4,5,30,29,29,5,5,5,5,5,5,5,5,29,50,50,50,50,50,50,29,30,29,29,28,29,28,29,29,28,29,29,29,29,28,29,5,5,5,5,5,5,5,5,5,5,5,29,5,29,5,30,5,5,30,4,4,4,4,4,28,4,29,28,4,28,4,29,5,30,29,5,4,28,28,29,30,29,29,4,30,4,5,29,29,5,4,4,29,4,29,4,29,4,5,5,29,5,6,30,29,5,5,6,5,5,30,6,30,5,30,30,4,30,5,5,6,6,30,5,46,45,45,45,5,5,5,29,30,5,29,5,4,5,5,5,5,5,5,5,5,4,30,50,50,50,50,50,29,4,4,29,29,28,29,29,28,28,28,28,29,28,29,29,5,5,5,5,5,5,5,5,5,5,5,29,30,29,5,4,30,5,4,4,30,29,29,4,4,29,4,4,4,28,30,28,4,4,28,30,30,29,29,29,4,4,4,5,4,5,5,4,29,5,5,5,29,5,4,5,29,30,30,5,4,5,30,30,29,5,5,30,6,6,29,6,5,30,6,6,6,5,6,6,6,6,30,30,54,6,46,45,45,6,6,5,29,30,4,30,30,30,5,5,5,5,5,30,30,30,30,30,50,50,50,50,50,30,5,28,4,28,4,4,4,4,29,29,28,29,29,4,5,5,5,5,5,5,5,5,5,5,5,4,29,29,30,30,29,30,5,4,4,4,4,30,4,28,4,29,4,4,28,4,4,29,4,28,28,28,4,29,5,5,30,29,29,5,30,5,4,30,30,5,29,30,5,5,29,4,4,5,30,5,4,29,5,5,5,4,30,30,5,5,6,30,6,30,6,6,6,6,6,6,30,6,6,30,6,45,46,6,6,6,5,30,5,4,29,29,6,5,5,5,3

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: tianditu.js是一款用于地图应用开发的JavaScript API库,它可以方便地获取天地图的各类地图数据和服务,包括卫星影像、地形图、路网数据等等。天地图本地缓存4.0是这个API库的一个重要更新,它主要提供了离线地图的功能。 通过天地图本地缓存4.0,我们可以将天地图地图数据缓存到本地,然后在没有网络连接的情况下,仍然可以使用这些数据进行地图展示和操作。这对于一些需要在偏远地区或无网络环境下使用地图的应用非常有用,可以大大提高地图的使用效率和稳定性。 为了使用天地图本地缓存4.0,我们需要下载对应的API库,并按照API文档中的要求进行相应的配置和使用。具体来说,我们需要选择合适的离线地图存储方式(如PBF、PNG等),并在代码中调用相关的API函数实现数据下载和缓存。在实际使用中,我们还可以通过设置缓存的有效期、更新策略等控制离线地图的更新和管理。 总之,天地图本地缓存4.0是一款非常实用的地图开发工具,它可以帮助我们实现高效的离线地图展示和操作,适用于各种场景和需求。但是在使用时需要注意数据存储和更新,以保证地图的正确性和完整性。 ### 回答2: tianditu.js 是一种用于实现天地图地图功能的 JavaScript 库,提供了丰富的地图显示和交互控制的 API 接口,包括地图缩放、地图切换、地图标注和地图搜索等功能,广泛应用于各种地图相关的 Web 应用中。 在天地图 JS API 的 4.0 版本中,加入了本地缓存功能,可以在用户设备上缓存各种地图数据,提高地图加载速度和用户体验,同时减少了对天地图服务器的请求,降低了网络负载和服务器压力。本地缓存功能主要分为两种类型:切片缓存和矢量数据缓存。 切片缓存是指将地图切片数据(包括底图和标注等)缓存到本地,缓存策略可通过 API 接口进行设置,可以配置缓存的最大容量和删减频率等参数。矢量数据缓存则是将一些常用的矢量数据(如 POI 数据缓存到本地,以便离线查看和使用。 使用 tianditu.js 的本地缓存功能,可以在很大程度上提高地图加载速度和用户体验,特别是在网络环境较差的情况下,具有显著的优势。同时,本地缓存功能也可以为一些需要离线使用的应用提供便利,增强了用户使用体验和可靠性。 ### 回答3: tianditu.js是一款用于在网页上显示地图的JavaScript库,它的最新版本为天地图本地缓存4.0。这个版本的主要特点是支持将地图数据缓存到本地,这样用户在没有网络连接或者网络信号不好的情况下也可以使用地图。 为了下载tianditu.js天地图本地缓存4.0,用户需要先到天地图官网上注册账号并申请开发者密钥。然后根据官方文档的指引,按照步骤下载tianditu.js并进行相关配置。用户还需要熟悉地图的API界面,掌握如何使用API进行地图的相关操作。 天地图本地缓存4.0适用于很多场景,比如在移动设备中,通过该版本可以缓存地图数据和离线地图,用户就不需要担心没有网络信号或者流量消耗的问题了。同时,在一些偏远地区或者网络信号不好的景区中,用户也可以通过该版本的离线地图进行地图导览,避免迷路。 总之,tianditu.js天地图本地缓存4.0是一款非常实用的地图开发工具,它可以解决很多地图使用中的问题,用户可以根据需要进行下载和使用。但是在使用过程中要注意合理使用和保护地图资源的知识产权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值