Sobre o projeto

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获取协议信息,并建议使用搜索引擎获取其他信息。