Arnis 是一个用 Rust 编写的开源项目,旨在将真实世界的地理和建筑精确地再现于《我的世界 Java 版》中。通过利用 OpenStreetMap (OSM) 的地理空间数据,Arnis 提供了一个高效且稳健的解决方案,帮助用户创建复杂而逼真的《我的世界》世界。无论你是想复制自己的家乡、探索城市环境,还是构建独特的场景,Arnis 都能将你的愿景变为现实。
主要功能
- 高细节生成:Arnis 能够生成逼真的建筑、道路、自然景观等元素,确保每个细节都尽可能接近真实世界。
- 可扩展性:支持处理大规模数据,适用于创建大型、沉浸式的《我的世界》世界。
- 跨平台支持:兼容 Windows、macOS 和 Linux,方便不同操作系统的用户使用。
- 开源与模块化:代码库文档齐全,社区驱动,用户可以根据需求进行定制和扩展。
如何使用 Arnis
1. 下载或编译
你可以直接从 GitHub 发布页面 下载最新版本的 Arnis,或者如果你熟悉 Rust,也可以通过源码自行编译项目。
2. 选择区域
- 使用 Arnis 提供的 矩形工具 选择你想要生成的区域。
- 指定一个《我的世界》世界(建议使用新的平坦世界以避免冲突)。
- 点击 “开始生成”,世界将从坐标
0, 0, 0
开始生成。
工作原理
Arnis 的生成过程分为几个步骤,确保生成的世界既准确又高效:
- 获取地理空间数据:Arnis 通过 Overpass API 从 OpenStreetMap 获取所选区域的地理空间数据。
- 解析原始数据:提取节点、路径和关系,并将其转换为《我的世界》的坐标系统。
- 优先级排序:确保建筑物、道路等元素按照正确的层次结构生成,避免冲突。
- 生成《我的世界》世界:使用不同的元素处理器(如
generate_buildings
、generate_highways
)根据数据放置方块。 - 创建地面层:为世界添加基础地形(如草地、泥土等)。
- 保存世界:修改后的区块将保存回《我的世界》的区域文件中。
常见问题
之前不是用 Python 写的吗?
是的,Arnis 最初是用 Python 开发的,但为了提升性能和效率,项目被移植到了 Rust。旧的 Python 实现可以在 python-legacy
分支 中找到。
数据来源是什么?
Arnis 使用 OpenStreetMap (OSM) 提供的免费地理空间数据。这些数据通过 Overpass API 获取,确保了数据的实时性和准确性。
《我的世界》世界生成是如何实现的?
Arnis 使用 Rust 的 fastnbt
库与《我的世界》的世界格式交互,从而能够读取和修改区域文件,实现高效的方块生成。
名字的由来?
该项目以德国最小的城市 Arnis 命名,该城市因其规模适中且地理特征丰富,成为开发和调试算法的理想测试案例。
待办事项和已知问题
以下是一些计划中的改进和已知问题:
- 坐标映射:将真实世界坐标更精确地映射到《我的世界》坐标系中(#29)。
- 高程支持:实现对地形高程的处理,使生成的世界更加逼真(#66)。
- 屋顶类型:添加更多样化的房屋屋顶设计。
- 图形用户界面 (GUI):设计并实现一个更友好的用户界面,简化操作流程。
- 空区块问题:已找到临时解决方案,但仍需进一步优化。
- 内存优化:提高程序的内存使用效率,特别是在处理大规模数据时。
为什么选择 Arnis?
Arnis 将 真实世界的准确性 与 《我的世界》的创意潜力 完美结合,为建筑者、教育者和爱好者提供了一个强大的工具。其模块化设计、性能优化以及社区驱动的发展模式,使其在《我的世界》模组领域中独树一帜。无论是用于个人创作还是教学演示,Arnis 都能为你带来前所未有的体验。
评论