[folia核心]LMili
声明:LMili与Mili为不同理念的核心,LMili不会主动修复特性,只在当前版本做稳定化和高性能
我们的性能图(LMili的spark使用的指令是:/spark profiler start --timeout 120和/spark profiler start --thread * --timeout 120,而arbor的spark使用的指令是:/spark profiler start --thread * --timeout 120)
以下的是arbor

以下的是LMili


在以后我们会做标准化的压测,当前的spark只供娱乐
LMili(米粒)— 基于 Folia 的高性能 Minecraft 服务端核心
一句话定位
LMili 是一个基于 Paper → Folia fork 链的 Minecraft 服务端核心,目标是成为一个**"纯粹的 Folia":不引入生电/红石机制修改与客户端协议魔改,专注于在 Folia 区域多线程调度模型之上提供更多 API、稳定性修复与通用性能优化**。
同时,我们LMili实现了区域使用线程组和并行tick,目前仍然处于不稳定状态,不再是folia的标准一个区域一个线程(或许在以后会是一个好的方向)
继承链
Minecraft(原版)
└── Paper(服务端框架)
└── Folia(区域多线程调度)
└── LMili(本项目)
仓库地址:https://github.com/MiliMCL/LMili
当前分支:
ver/26.2(对应 Minecraft 26.2)许可证:GPL-3.0
JDK 要求:Java 25+(注意不是 JDK 21)
包名:
fun.bm.mili.lmili
核心特性
1. Folia 稳定性修复
模块 | 作用 |
|---|---|
Region Balancer | 共享线程池 + 优先级队列替代 Folia 每区域独占线程,实现动态负载均衡 |
Region Load Monitor | 无锁滑动窗口统计区域 tick 耗时 |
Adaptive TPS Manager | 根据实时负载动态调整 TPS |
Cross-Region Helper | 类型化跨区事件队列(实体伤害、方块通知等) |
RegionTaskIdRegistry | 全局 UUID 注册中心,防止跨区块任务 ID 碰撞导致崩溃 |
全局实体计数器 | 按区域聚合 mob 数量,避免 O(entities) 扫描 |
线程安全加固 |
|
2. Bug 修复
针对 Folia 区域线程模型的大量修复,包括:玩家重生位置修正、实体传送(跨区/末影珍珠/维度切换)竞态修复、区域外寻路/拴绳/目标选择防护、POI 更新延迟、区块重载检测、龙部件同步等。
3. 通用性能优化
整合来自 Gale、Lithium、Pufferfish、SparklyPaper、Kaiiju、Petal、Krypton、Leaves 等上游的通用优化(不涉及生电行为修改),涵盖:
噪声生成、AI 属性集合、大脑映射等数据结构优化
实体移动零位移跳过、canSee 检查优化
区块加载查找削减、投射物区块加载削减
网络与协议层优化、区块增量压缩
村民 lobotomize(发呆)优化、传感器工作削减
4. API 扩展
API | 说明 |
|---|---|
Tick Regions API | 查询/操作 tick 区域( |
ReplayMod 摄影师 | 创建 ReplayMod 摄影师实体进行录像 |
Bytebuf API | 面向插件的自定义数据包读写 API |
实体传送异步事件 |
|
Waypoint API | 实体路径点追踪与恢复 |
ThreadedRegionizer | 获取全局 |
项目结构
Mili/
├── lmili-api/ # Mili API 模块(事件 API、Photographer、Bytebuf)
├── lmili-server/ # 服务端核心
│ ├── minecraft-patches/ # 97 个特征补丁
│ ├── paper-patches/ # Paper API/Server 层补丁
│ └── src/main/java/fun/bm/mili/
│ ├── bridge/ # 区块-区域桥接
│ ├── chunk/ # 区块系统
│ ├── command/ # 命令系统
│ ├── config/ # 配置模块(TOML,纯 Java 实现)
│ ├── portal/ # 传送门管理
│ ├── utils/ # 工具类(区域调度、网络优化、内存管理)
│ └── villager/ # 村民优化器
├── lmili-api/ # LMili 附加 API 源
├── folia-server/ # Folia 子模块(上游,不直接修改)
├── paper-server/ # Paper 服务器(补丁应用目标)
├── paper-api/ # Paper API(补丁应用目标)
├── docs/ # 文档
└── build.gradle.kts # 根构建脚本
配置系统
使用 TOML 格式(纯 Java 解析),主配置文件 lmili_config.toml 涵盖五大分类:
分类 | 说明 | 代表模块 |
|---|---|---|
| 游戏机制与实用功能 | LanguageConfig、TpsBarConfig、RegionBarConfig |
| 实验性性能/并发功能 | RegionBalancerConfig、CrossDimensionTeleportQueueConfig |
| 性能优化 | NetworkOptimizerConfig、MmapRegionStorageConfig、VillagerOptimizerConfig |
| 崩溃/行为修复 | PortalLinkFixConfig、CollisionBehaviorConfig |
| 杂项 | AutoUpdateConfig、BStatsConfig、ServerModNameConfig |
快速开始
# 1. 克隆仓库
git clone https://github.com/MiliMCL/LMili.git
cd LMili
# 2. Windows 需启用长路径
git config --global core.longpaths true
# 3. 应用补丁(首次构建必须执行)
./gradlew applyAllPatches --no-configuration-cache --no-build-cache
# 5. 构建 Paperclip JAR
./gradlew :mili-server:createPaperclipJar
构建产物:mili-server/build/libs/mili-26.2-paperclip.jar
API 依赖(Maven Central):
// Gradle (Kotlin DSL)
compileOnly("io.github.xucy10:lmili-api:26.2-R0.1")
与同类项目的关系
直接上游为 Folia(PaperMC 出品的区域多线程分支)
大量代码移植自 Luminol(已删库),以及 Gale、Lithium、Pufferfish 等优化项目
定位区别:LMili 不修改生电/红石行为,不做客户端协议魔改,只做 Folia 层面的稳定性增强 + 通用性能优化 + API 扩展
总结
LMili 适合那些已经在使用 Folia 或希望利用区域多线程提升服务器性能,但受困于 Folia 稳定性和 API 不足的 Minecraft 服务器运营者。它在保持 Folia 核心调度模型不变的前提下,通过线程池重构、竞态修复、上游优化整合和丰富的 API 扩展,让 Folia 从"能跑"走向"好用"。