#map #minecraft #viewer #component #maps #renderer #mined-map

minedmap-types

几个MinedMap包共同使用的通用类型

4个版本

0.1.3 2024年6月23日
0.1.2 2024年1月7日
0.1.1 2023年11月18日
0.1.0 2023年9月30日

#430游戏


2 crates 中使用

MIT 许可证

14KB
155

MinedMap

  • 渲染你的Minecraft世界的美丽地图!
  • 将它们放在web服务器上,并在浏览器中查看!
  • 与未经修改的Minecraft Java Edition 1.8至1.21版本兼容(无需安装mod!)
  • 照明层:夜晚的世界
  • 快速:在单线程操作中,在不到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 子目录中。

我的世界将保存数据存储在Linux上的目录 ~/.minecraft/saves,以及在Windows上的目录 C:\Users\<username>\AppData\Roaming\.minecraft\saves。要从名为“World”的保存游戏中生成MinedMap瓦片数据,可以使用以下命令(将第一个参数替换为您保存数据的路径;<viewer> 指的是您解压MinedMap查看器的目录)

minedmap ~/.minecraft/saves/World <viewer>/data

对于大型世界,第一次地图生成可能需要一些时间,但随后的调用只会重建已更改的区域文件瓦片,很少需要超过一秒钟或两秒钟。这使得频繁更新地图变得可行,例如,每分钟运行一次MinedMap作为Cron作业。

请注意,没有Web服务器无法打开查看器 index.html,因为它无法从 file:// URI加载生成的地图信息。出于测试目的,您可以使用最小化的HTTP服务器,例如,如果您已安装Python,只需在查看器目录中运行以下命令

python3 -m http.server

此测试服务器非常慢,无法处理并发请求,因此请使用合适的Web服务器,如 nginx,或将查看器与生成的地图文件一起上传到公共空间,以便其他人可以访问地图。

如果您将目录上传到远程Web服务器,您不需要上传 <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'

此外,还需要CMake来构建zlib-ng库。如果您没有安装CMake,可以通过将--no-default-features传递给cargo来禁用zlib-ng功能。将使用纯Rust的zlib实现,这更便携,但比zlib-ng慢。

如果您正在寻找MinedMap瓦片渲染器的旧版C++实现,请参阅v1.19.1标签。

依赖项

~0.8–1.4MB
~31K SLoC