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

232 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/*``CollisionBackendSelector`、`RegionCollisionHandler`、`backend/*`
- `afktracking/AfkTrackingManager.java`
- `entitylimiter/LuminolEntityLimiter.java`
- `mobaireducer/*``MobAiReducerHandler`、`OptimizedBreedGoal`、`OptimizedTemptGoal`
- `explosion/LuminolExplosionOptimizer.java`
- `org/leavesmc/.../LeavesPluginMeta.java`
- `src/minecraft/java/...``src/minecraft/resources`
主要改动:
- 恢复并对齐 `FFM/GPU/JAVA/VANILLA` 后端选择逻辑。
- 修复若干上游 API 变化导致的编译点(实体、世界、门户位置转换、插件元数据等)。
- 调整部分优化逻辑为当前上游可编译/可运行版本。
---
## 3. 优化了什么(功能视角)
## 3.1 碰撞加速AR / Accelerated Recoiling 体系)
- 支持多后端:
- `FFM`Foreign 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已验证
在仓库根目录执行:
```bash
./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 启动
```bash
java -jar luminol-paperclip-1.21.8-R0.1-SNAPSHOT.jar --nogui
```
首次启动需同意 EULA
- 编辑 `eula.txt``eula=true`
## 4.3 游戏内后端控制AR
```text
/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.backend``AUTO/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` 可执行并反馈切换结果
---
如需,我可以在下一步补一版「面向运维发布」的精简版文档(只保留部署、参数、回滚、排障)。