Luminol-Core/NEKO_CORE_改动与使用说明.md
2026-06-30 18:32:29 +08:00

6.4 KiB
Raw Permalink Blame History

Neko Core 改动与使用说明

本文档基于当前工作区变更状态整理,目标是说明:

  • 这个服务端改了什么
  • 如何构建与使用
  • 做了哪些优化
  • 当前已知限制与建议

1. 项目定位与结果

当前分支是在 Luminol 1.21.8 基础上,完成了 Neko Core 定制化改造,已实现:

  • 构建链路可用(applyAllPatches 可通过)
  • luminol-server 可编译
  • 可产出并启动可运行包(paperclip/bundler
  • 新增后端切换命令,可在游戏内切换碰撞加速后端(含 FFM

2. 本次主要改动(按模块)

2.1 构建与打包链路

涉及文件:

  • build.gradle.kts
  • luminol-server/build.gradle.kts
  • luminol-server/build.gradle.kts.patch

主要改动:

  • 锁定/适配 hyacinthusweight 构建链路,保证 patch + mache 流程可运行。
  • 修复 macheRemapJar 参数链路(显式 remapper、mappings、params 的可用输入)。
  • 修复打包任务名与类型适配:
    • 使用 createBundlerJar / createPaperclipJar(替代旧命名)。
  • 统一到 Java 25 构建运行方案,确保插件与打包任务兼容。

2.2 补丁与上游对齐

涉及目录:

  • luminol-api/paper-patches/features/*.patch
  • luminol-server/paper-patches/features/*.patch
  • folia-api(工作区变更)
  • folia-server(工作区变更)

主要改动:

  • 对漂移的 feature patch 做了重建与兼容修复,恢复补丁应用链路。
  • 修复了因补丁上下文漂移导致的 apply...FeaturePatches 失败问题。
  • 保留了当前能通过构建的 patch 状态。

2.3 品牌与命令

涉及文件:

  • luminol-server/src/main/java/me/earthme/luminol/config/modules/misc/ServerModNameConfig.java
  • luminol-server/src/main/java/me/earthme/luminol/commands/CommandRegister.java
  • luminol-server/src/main/java/me/earthme/luminol/commands/backend/NekoBackendCommand.java(新增目录/文件)

主要改动:

  • 默认服务端名改为 Neko Core
  • 注册并启用 /nekobackend 命令。

/nekobackend 子命令:

  • status:查看当前生效后端和关键配置
  • set <AUTO|GPU|FFM|JAVA|VANILLA>:运行时切换后端
  • reload:重载后端选择器

2.4 配置系统重构(优化模块)

涉及文件:

  • luminol-server/src/main/java/me/earthme/luminol/config/modules/optimizations/AcceleratedCollisionConfig.java
  • AfkEntityTrackingConfig.java
  • EntityLimiterConfig.java
  • ExplosionOptimizerConfig.java
  • MobAiReducerConfig.java
  • SkipZeroDeltaPacketsConfig.java
  • VehicleMotionConfig.java

主要改动:

  • 统一到 Luminol 现行配置风格(IConfigModule + 注解字段)。
  • 修复历史“伪 API”配置写法导致的编译与运行不一致问题。

2.5 优化逻辑实现与兼容修复

涉及文件:

  • collision/*CollisionBackendSelectorRegionCollisionHandlerbackend/*
  • afktracking/AfkTrackingManager.java
  • entitylimiter/LuminolEntityLimiter.java
  • mobaireducer/*MobAiReducerHandlerOptimizedBreedGoalOptimizedTemptGoal
  • explosion/LuminolExplosionOptimizer.java
  • org/leavesmc/.../LeavesPluginMeta.java
  • src/minecraft/java/...src/minecraft/resources

主要改动:

  • 恢复并对齐 FFM/GPU/JAVA/VANILLA 后端选择逻辑。
  • 修复若干上游 API 变化导致的编译点(实体、世界、门户位置转换、插件元数据等)。
  • 调整部分优化逻辑为当前上游可编译/可运行版本。

3. 优化了什么(功能视角)

3.1 碰撞加速AR / Accelerated Recoiling 体系)

  • 支持多后端:
    • FFMForeign Function & Memory
    • GPU
    • JAVA
    • VANILLA(回退)
    • AUTO(自动选择)
  • 可通过游戏内命令热切换后端(/nekobackend set ...)。

3.2 AFK 追踪优化

  • 保留 AFK 追踪入口与配置化能力。
  • 对不兼容的底层字段访问做了兼容处理,避免构建失败。

3.3 实体限制与 AI 优化

  • 实体上限限制器、溢出清理、AI 目标逻辑等可配置能力保留。
  • 对上游访问权限/签名变化做了兼容调整。

3.4 爆炸与网络细节优化

  • 包含爆炸优化、零位移包处理、载具运动相关优化配置入口。

4. 使用方法

4.1 构建

建议环境:

  • JDK: Java 25当前链路已按此验证
  • OS: Windows已验证

在仓库根目录执行:

./gradlew applyAllPatches
./gradlew :luminol-server:createPaperclipJar

产物路径:

  • luminol-server/build/libs/luminol-paperclip-1.21.8-R0.1-SNAPSHOT.jar
  • luminol-server/build/libs/luminol-bundler-1.21.8-R0.1-SNAPSHOT.jar
  • luminol-server/build/libs/luminol-server-1.21.8-R0.1-SNAPSHOT.jar

4.2 启动

java -jar luminol-paperclip-1.21.8-R0.1-SNAPSHOT.jar --nogui

首次启动需同意 EULA

  • 编辑 eula.txteula=true

4.3 游戏内后端控制AR

/nekobackend status
/nekobackend set FFM
/nekobackend set GPU
/nekobackend set JAVA
/nekobackend set VANILLA
/nekobackend set AUTO
/nekobackend reload

说明:

  • set 会立即切换并更新运行态配置字段。
  • 如果某后端初始化失败,会自动回退(可用 status 确认当前实际后端)。

5. 关键配置项(示例)

路径:luminol_config 下对应优化配置(按模块名)。

重点建议关注:

  • accelerated_collision.enabled
  • accelerated_collision.backendAUTO/GPU/FFM/JAVA/VANILLA
  • accelerated_collision.max_collision
  • accelerated_collision.grid_size
  • accelerated_collision.density_threshold
  • accelerated_collision.max_threads

6. 已知注意事项

  • 本次改造包含大量上游漂移兼容修复,后续升级 Minecraft/Folia 版本时,建议优先重跑 patch 重建流程再改业务逻辑。
  • FFM 后端依赖 native 库资源加载,若切到 FFM 失败,请先检查平台库文件是否打入最终 jar 的 natives/<platform>/ 目录。
  • 若打包时报 paperclip 产物文件占用,先关闭仍在运行的服务端 Java 进程再重试。

7. 快速验收清单

  • 能执行 :luminol-server:createPaperclipJar
  • paperclip 可启动并通过 EULA 后进入 Done (...)
  • 进服后 /nekobackend status 可返回当前状态
  • /nekobackend set FFM 可执行并反馈切换结果

如需,我可以在下一步补一版「面向运维发布」的精简版文档(只保留部署、参数、回滚、排障)。