# 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 `:运行时切换后端 - `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//` 目录。 - 若打包时报 `paperclip` 产物文件占用,先关闭仍在运行的服务端 Java 进程再重试。 --- ## 7. 快速验收清单 - 能执行 `:luminol-server:createPaperclipJar` - `paperclip` 可启动并通过 EULA 后进入 `Done (...)` - 进服后 `/nekobackend status` 可返回当前状态 - `/nekobackend set FFM` 可执行并反馈切换结果 --- 如需,我可以在下一步补一版「面向运维发布」的精简版文档(只保留部署、参数、回滚、排障)。