RPG 战斗型女仆伙伴插件 · 作者 LuMicZi
LuMaid 是一款面向 Minecraft 服务端的深度 RPG 战斗女仆插件骨架。玩家可以召唤女仆作为可作战的伙伴, 女仆拥有等级、职业、技能、行为模式(跟随 / 待命 / 巡逻 / 进攻)与仇恨系统,并支持自适应的自定义模型渲染。
- 支持核心:Spigot / Paper / Purpur / Mohist(仅依赖 Bukkit 公共 API)
- 目标版本:主攻 1.21+(Java 21)
- 构建工具:Gradle(Kotlin DSL)
本仓库是一个能编译、能加载、能运行的完整骨架,核心系统均已打通,业务细节留有明确扩展点。
已实现:
| 模块 | 说明 |
|---|---|
| 插件生命周期 | LuMaidPlugin 有序初始化 / 卸载各子系统 |
| 配置与消息 | config.yml / messages.yml,热重载,颜色代码,占位符,统一去斜体文本 |
| 软依赖探测 | HookManager 探测 PlaceholderAPI / ModelEngine / CraftEngine |
| 数据层 | StorageProvider 抽象 + SQLite / YAML 实现;异步读写;预留 MySQL 接口 |
| 自适应渲染 | RenderManager 按优先级探测渲染器;Native / ModelEngine / CraftEngine,缺失自动回退原生实体 |
| RPG 战斗 | MaidEntity(等级/职业/派生属性/经验曲线)、CombatManager(AI 行为模式 + 仇恨 + 寻路攻击)、技能框架与示例技能 |
| 命令 | /maid summon|dismiss|list|info|mode|reload + Tab 补全 + 权限 |
| GUI | AbstractGui + MaidInfoGui(信息展示 + 行为模式切换按钮),点击路由统一 |
- JDK 21(本插件使用 Java 21 工具链)
./gradlew shadowJar # Linux / macOS
gradlew.bat shadowJar # Windows产物:build/libs/LuMaid-<version>.jar,将其放入服务端 plugins/ 目录即可。
本开发机的环境变量 JAVA_HOME 指向了一个不可用的 JDK(jdk-21.0.9)。
仓库内提供了辅助脚本 _gw.ps1,它会临时将 JAVA_HOME 指向可用的
C:\Program Files\Eclipse Adoptium\jdk-21 再调用 wrapper:
powershell -NoProfile -ExecutionPolicy Bypass -File .\_gw.ps1 clean shadowJargradle.properties 中也通过 org.gradle.java.installations.paths 指定了该 JDK 供工具链解析。
若你的机器 JAVA_HOME 正常,可直接使用 gradlew.bat,并删除该临时脚本与该配置项。
| 命令 | 说明 | 权限 |
|---|---|---|
/maid summon [职业] |
在当前位置召唤一名女仆 | lumaid.summon |
/maid dismiss <名称|near> |
收回女仆(保留数据) | lumaid.use |
/maid list |
查看自己的女仆列表 | lumaid.use |
/maid info <名称|near> |
打开女仆信息 GUI | lumaid.use |
/maid mode <名称|near> <模式> |
切换行为模式 | lumaid.use |
/maid reload |
重载配置 | lumaid.admin |
行为模式:FOLLOW(跟随自卫)/ STAND(原地待命)/ PATROL(巡逻)/ AGGRESSIVE(主动索敌)。
别名:/lumaid、/nv。
cn.lumiczi.lumaid
├── LuMaidPlugin # 主类:子系统装配与生命周期
├── config/ # ConfigManager / MessageManager
├── hook/ # HookManager 软依赖探测
├── storage/ # StorageProvider 抽象 + SQLite / YAML(+ 预留 MySQL) + StorageManager 异步门面
├── render/ # MaidRenderer 抽象 + Native / ModelEngine / CraftEngine + RenderManager 自适应
├── maid/ # MaidData 领域模型 / MaidMode / MaidManager 聚合
├── combat/ # MaidEntity 战斗单位 / CombatManager 调度 / Profession / MaidCombatListener
│ └── skill/ # Skill 抽象 + SkillRegistry + 示例技能
├── command/ # MaidCommand 命令树 + Tab 补全
└── gui/ # AbstractGui / GuiListener / MaidInfoGui
跨核心兼容策略:整个战斗/寻路逻辑仅使用 Bukkit 公共 API(如 Mob#getPathfinder()、
LivingEntity#getAttribute()),不触碰 NMS,从而在 Spigot / Paper / Purpur / Mohist 上一致运行。
自定义模型通过软依赖 + 反射探测的方式接入,缺失时自动回退。
代码中以 TODO(扩展点) / Javadoc 标注了以下待填充方向:
- 模型绑定:在
ModelEngineRenderer/CraftEngineRenderer引入对应编译依赖后, 完成 blueprint / 自定义实体的真实绑定。 - MySQL / 跨服:新增一个
StorageProvider实现(HikariCP 已在依赖中预留,届时需在shadowJar.minimize中排除,避免被裁剪),StorageManager的MYSQL分支即可切换。 - 技能树 / 被动 / 连招:扩展
Skill与SkillRegistry,接入职业分支成长。 - 好感度 / 养成 / 换装:
MaidData.affinity已预留字段,可接入对话、赠礼、装备栏。 - 复活系统:
combat.recover-on-death已预留,可实现死亡后待复活状态与复活道具。 - PlaceholderAPI 变量:
HookManager已探测,可注册%lumaid_...%占位符。
见 config.yml 内的中文注释,主要分区:
settings / storage / render / combat / professions。
所有玩家可见文本集中在 messages.yml,并统一以 RESET 起头以保证非斜体渲染。