4 个版本 (重大更新)
0.4.0 | 2024年6月23日 |
---|---|
0.3.0 | 2024年1月27日 |
0.2.0 | 2024年1月7日 |
0.1.0 | 2023年9月30日 |
#324 in 游戏
用于 minedmap
250KB
12K SLoC
MinedMap
- 渲染您 Minecraft 世界的美丽地图!
- 将它们放置在 web 服务器上,并在浏览器中查看!
- 兼容未经修改的 Minecraft Java 版本 1.8 至 1.21(无需安装模组!)
- 光照层:夜晚的世界
- 快速:单线程操作下,在不到 5 分钟内为巨大的 3GB 保存游戏创建完整地图
- 多线程支持:向渲染器传递
-j N
以使用N
个并行线程进行生成 - 增量更新:仅重新创建已更改区域的地图瓦片
- 通常在单线程操作中占用小于 100MB 的 RAM(当传递
-j
时可能会更高) - 跨平台:在 Linux、Windows 和可能还有其他系统(如 MacOS)上运行
关于
MinedMap 由两个组件组成:一个地图渲染器,它从 Minecraft 保存游戏中生成地图瓦片,以及一个基于 Leaflet 的浏览器中显示和导航地图的查看器。地图渲染器深受 MapRend 的启发,但已从头开始重新实现(最初是用 C++,现在是 Rust),以实现最佳性能。
使用方法
从 GitHub 发布页面下载与您的平台匹配的二进制发布版本(或使用 cargo
从源安装),以及平台无关的查看器存档。解压查看器存档。解压的目录包含操作查看器的 HTML 和 JavaScript,并将公开托管在 Web 服务器上。MinedMap 生成的图像数据将存储在解压的查看器 data
子目录中。
Minecraft 在 Linux 系统中将其保存数据存储在目录 ~/.minecraft/saves
,在 Windows 系统中存储在 C:\Users\
。要从名为 "World" 的保存游戏中生成 MinedMap 地图块数据,可以使用以下命令(将第一个参数替换为您的保存数据路径;<viewer>
指的是您解压 MinedMap 查看器所在的目录)
minedmap ~/.minecraft/saves/World <viewer>/data
对于大世界,第一次地图生成可能需要一些时间,但后续调用将仅重建已更改的区域文件中的地图块,很少需要超过一两秒。这使得非常频繁地更新地图变得可行,例如,每分钟运行一次 MinedMap 作为 Cron 作业。
请注意,没有网络服务器无法打开查看器 index.html,因为它无法从 file://
URI 加载生成的地图信息。出于测试目的,您可以使用最小化的 HTTP 服务器,例如,如果您已安装 Python,请在查看器目录中运行以下命令
python3 -m http.server
此测试服务器非常慢,无法同时处理多个请求,因此请使用适当的网络服务器,如 nginx,或将查看器和生成的地图文件一起上传到公共空间,以便他人可以查看地图。
如果您将目录上传到远程网络服务器,您不需要上传 <viewer>/data/processed
目录,因为该目录仅用于本地,以便更快地处理更新。
标牌
MinedMap 可以在地图上显示标牌标记,点击时会弹出显示标牌文本。
默认情况下禁用标牌层的生成。可以通过将 --sign-prefix
或 --sign-filter
选项传递给 MinedMap 来启用它。这些选项允许配置应显示哪些标牌,并且可以多次传递以显示至少匹配一个前缀或过滤器的每个标牌。
--sign-prefix
将使所有文本以给定前缀开始的标牌可见,因此像 --sign-prefix '[Map]'
这样的命令将允许在 Minecraft 中放置以 "[Map]" 开头的标牌以在地图上添加标记。可以使用空前缀(--sign-prefix ''
)使地图上显示所有标牌。
--sign-filter
可以用于基于正则表达式的更高级过滤器。--sign-filter '\[Map\]'
将显示包含 "[Map]" 的所有标牌,而 --sign-filter '.'
将使所有非空标牌(至少包含一个字符的标牌)可见。有关支持的语法的更多信息,请参阅 regex crate 的文档。
所有前缀和过滤器都分别应用于前文本和后文本,但当一个匹配时,前后文本都将显示在弹出窗口中。
最后,--sign-transform
允许指定 sed 风格的替换模式以修改地图上显示的文本。如果通过 --sign-prefix
或 --sign-filter
匹配的文本不应显示,则可以使用此功能:--sign-filter 's/\[Map\]//'
将将 "[Map]" 的每个出现替换为空字符串。
注意:在Windows上,必须使用双引号("
)作为参数,而不是单引号('
),并且参数中所有的反斜杠都必须通过加倍来转义。这可能会使正则表达式的编写和阅读变得有些困难。
安装
Linux和Windows的地图生成器的二进制构建,以及包含查看器的存档,可以在GitHub发布页面上找到。
从源代码构建生成器需要最新的Rust工具链(1.72.0或更高版本)。以下命令可以用于构建当前的开发版本
cargo install --git 'https://github.com/neocturne/MinedMap.git'
此外,构建zlib-ng库需要CMake。如果您没有安装CMake,可以通过传递--no-default-features
给cargo来禁用zlib-ng功能。将使用纯Rust的zlib实现,这更易于移植,但比zlib-ng慢。
如果您正在寻找MinedMap瓦片渲染器的旧版C++实现,请参阅v1.19.1标签。
依赖项
约4.5MB
约126K SLoC