#minecraft #map #viewer #renderer #tile #block #game

minedmap-resource

描述 Minecraft 生态群落和方块类型的资料

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

MIT 许可证

250KB
12K SLoC

MinedMap

  • 渲染您 Minecraft 世界的美丽地图!
  • 将它们放置在 web 服务器上,并在浏览器中查看!
  • 兼容未经修改的 Minecraft Java 版本 1.8 至 1.21(无需安装模组!)
  • 光照层:夜晚的世界
  • 快速:单线程操作下,在不到 5 分钟内为巨大的 3GB 保存游戏创建完整地图
  • 多线程支持:向渲染器传递 -j N 以使用 N 个并行线程进行生成
  • 增量更新:仅重新创建已更改区域的地图瓦片
  • 通常在单线程操作中占用小于 100MB 的 RAM(当传递 -j 时可能会更高)
  • 跨平台:在 Linux、Windows 和可能还有其他系统(如 MacOS)上运行

Screenshot

关于

MinedMap 由两个组件组成:一个地图渲染器,它从 Minecraft 保存游戏中生成地图瓦片,以及一个基于 Leaflet 的浏览器中显示和导航地图的查看器。地图渲染器深受 MapRend 的启发,但已从头开始重新实现(最初是用 C++,现在是 Rust),以实现最佳性能。

使用方法

从 GitHub 发布页面下载与您的平台匹配的二进制发布版本(或使用 cargo 从源安装),以及平台无关的查看器存档。解压查看器存档。解压的目录包含操作查看器的 HTML 和 JavaScript,并将公开托管在 Web 服务器上。MinedMap 生成的图像数据将存储在解压的查看器 data 子目录中。

Minecraft 在 Linux 系统中将其保存数据存储在目录 ~/.minecraft/saves,在 Windows 系统中存储在 C:\Users\\AppData\Roaming\.minecraft\saves。要从名为 "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 目录,因为该目录仅用于本地,以便更快地处理更新。

标牌

Sign screenshot

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