这个项目能做什么
bareiron 是一个旨在内存受限嵌入式系统上运行的极简 Minecraft 服务器实现。其明确目标是让在 ESP32 等性能较弱的设备上托管 Minecraft 服务器成为可能。项目明确将优先级排序为:内存使用第一,性能第二,功能第三,并指出与原版 Minecraft 的兼容性既无保证也非目标。
目标兼容版本为 Minecraft 1.21.8,协议版本 772。README 警告称仅官方支持原版客户端,并指出使用 Fabric 或类似客户端时已报告存在问题。
在 PC x86_64 平台上入门的方法是下载最新构建的二进制文件并运行。该文件被描述为 Cosmopolitan 多语言可执行文件,意味着尽管其扩展名如此,它可以在 Windows、Linux 以及可能的 Mac 上运行。README 指出,服务器的默认设置无法在不从源代码编译的情况下重新配置。
对于微控制器,则需要编译。编译前,必须从原版 Minecraft 服务器转储注册表数据。在 Linux 上,这可以通过附带的 extract_registries.sh 脚本自动完成;否则,过程涉及将 Minecraft 服务器 JAR 文件放入 notchian 文件夹,按照 Minecraft Wiki 的数据生成器指南转储所有注册表,然后使用 bun、node 或 deno 运行 build_registries.js。
编译说明涵盖多种环境:Linux 使用 gcc 和 ./build.sh;Windows 通过 MSYS2 MINGW64 生成原生二进制文件,通过 --9x 标志生成兼容 Windows 95/98 的 32 位变体,或生成 MSYS2 链接的二进制文件,也可使用 WSL 构建和运行 Linux 二进制文件。对于 ESP 变体,README 指示使用 ESP-IDF 框架(明确非 Arduino)设置 PlatformIO 项目,并在其上克隆仓库,同时建议调整时钟速度并启用编译器优化以获得更好性能。
配置同样需要从源代码编译。大多数用户友好的选项位于 include/globals.h 中,包括嵌入式设置的 WiFi 凭据,而 MOTD 或一天中的起始时间等细节则在 src/globals.c 中。README 强调了几个与真实微控制器部署相关的选项:移动广播可能会根据玩家数量、MCU 性能和网络带宽限制连接,可以通过注释掉 BROADCAST_ALL_MOVEMENT 和 SCALE_MOVEMENT_UPDATES_TO_PLAYER_COUNT 或降低 TIME_BETWEEN_TICKS(以增加计算量为代价)来调整。如果箱子或流体流动导致崩溃或不稳定,可以通过 ALLOW_CHESTS 和 DO_FLUID_FLOW 禁用。增加 VISITED_HISTORY 可能有助于频繁重复的区块生成,但说明称当提高到 64 时,每个已分配玩家大约会增加 240 字节的内存成本。
可选部分涵盖 ESP 目标的非易失性存储,以便在关机后持久化世界数据。在 PC 平台上这并非必需,因为世界和玩家数据默认写入 world.bin。最简单的方法是在 PlatformIO 中设置 LittleFS,并注释掉 globals.h 中围绕 SYNC_WORLD_TO_DISK 的 #ifndef;由于闪存写入通常较慢且阻塞,建议取消注释 DISK_SYNC_BLOCKS_ON_INTERVAL,并且可能需要减少 MAX_BLOCK_CHANGES 以适应 LittleFS 分区。对于 SD 卡模块或其他虚拟文件系统,文件系统设置例程必须由用户实现,但内置序列化器应该仍然有效,因为它使用 POSIX 文件系统调用。作为替代方案,可以通过取消注释 DEV_ENABLE_BEEF_DUMPS 通过 TCP 转储和上传世界数据,但明确说明该系统不实现任何安全性或认证,任何能访问服务器的人都可以上传任意世界数据。
贡献指南要求贡献者在提交拉取请求前(即使是小改动)先创建问题并与维护者讨论;遵循现有代码风格;在请求审查前测试代码;并指出除非贡献者已足够熟悉代码库以发现实际缺陷,否则不欢迎开发工具和编译方面的改进。README 指向 Minecraft Wiki 获取协议信息,并建议使用搜索引擎获取其他所有信息。
评论
0 评分人数达到10人后显示
登录后参与讨论。