测试版公告 欢迎来到 NexusMC 站点!当前站点正在公测中,遇到站点问题请及时前往 “站点 - 建议反馈” 反馈您遇到的问题! 查看公告
Folia

[folia核心]LMili

作者:xucy10 发布于 2026/8/15 更新于 2026/8/16 258 浏览 2 回复

声明: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
kimi-1786807699198.jpg
以下的是LMili
kimi-1786807779890.jpg
kimi-1786808322328.jpg
在以后我们会做标准化的压测,当前的spark只供娱乐

LMili(米粒)— 基于 Folia 的高性能 Minecraft 服务端核心

一句话定位

LMili 是一个基于 Paper → Folia fork 链的 Minecraft 服务端核心,目标是成为一个**"纯粹的 Folia":不引入生电/红石机制修改与客户端协议魔改,专注于在 Folia 区域多线程调度模型之上提供更多 API、稳定性修复与通用性能优化**。

同时,我们LMili实现了区域使用线程组和并行tick,目前仍然处于不稳定状态,不再是folia的标准一个区域一个线程(或许在以后会是一个好的方向)

继承链

Plain Text
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) 扫描

线程安全加固

catch(Exception)catch(Throwable) 修复,防止 OOM/StackOverflow 导致调度器线程静默死亡

2. Bug 修复

针对 Folia 区域线程模型的大量修复,包括:玩家重生位置修正、实体传送(跨区/末影珍珠/维度切换)竞态修复、区域外寻路/拴绳/目标选择防护、POI 更新延迟、区块重载检测、龙部件同步等。

3. 通用性能优化

整合来自 Gale、Lithium、Pufferfish、SparklyPaper、Kaiiju、Petal、Krypton、Leaves 等上游的通用优化(不涉及生电行为修改),涵盖:

  • 噪声生成、AI 属性集合、大脑映射等数据结构优化

  • 实体移动零位移跳过、canSee 检查优化

  • 区块加载查找削减、投射物区块加载削减

  • 网络与协议层优化、区块增量压缩

  • 村民 lobotomize(发呆)优化、传感器工作削减

4. API 扩展

API

说明

Tick Regions API

查询/操作 tick 区域(ThreadedRegionRegionStats 等)

ReplayMod 摄影师

创建 ReplayMod 摄影师实体进行录像

Bytebuf API

面向插件的自定义数据包读写 API

实体传送异步事件

EntityTeleportAsyncEventPreEntityPortalEventPostEntityPortalEvent

Waypoint API

实体路径点追踪与恢复

ThreadedRegionizer

获取全局 ThreadedRegionizer 实例


项目结构

Bash
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 涵盖五大分类:

分类

说明

代表模块

function

游戏机制与实用功能

LanguageConfig、TpsBarConfig、RegionBarConfig

experiment

实验性性能/并发功能

RegionBalancerConfig、CrossDimensionTeleportQueueConfig

optimizations

性能优化

NetworkOptimizerConfig、MmapRegionStorageConfig、VillagerOptimizerConfig

fixes

崩溃/行为修复

PortalLinkFixConfig、CollisionBehaviorConfig

misc

杂项

AutoUpdateConfig、BStatsConfig、ServerModNameConfig


快速开始

Bash
# 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):

Kotlin
// 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 从"能跑"走向"好用"。

[folia核心]LMili

https://www.nexusmc.cn/forum/post/folia-lmili
著者
xucy10
公开日
2026-08-15
许可证
保留所有权利

评论和回复

还没有评论和回复