Skip to content

Repository files navigation

LuMaid

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/ 目录即可。

本机注意事项(Windows)

本开发机的环境变量 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 shadowJar

gradle.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)

代码中以 TODO(扩展点) / Javadoc 标注了以下待填充方向:

  1. 模型绑定:在 ModelEngineRenderer / CraftEngineRenderer 引入对应编译依赖后, 完成 blueprint / 自定义实体的真实绑定。
  2. MySQL / 跨服:新增一个 StorageProvider 实现(HikariCP 已在依赖中预留,届时需在 shadowJar.minimize 中排除,避免被裁剪),StorageManagerMYSQL 分支即可切换。
  3. 技能树 / 被动 / 连招:扩展 SkillSkillRegistry,接入职业分支成长。
  4. 好感度 / 养成 / 换装MaidData.affinity 已预留字段,可接入对话、赠礼、装备栏。
  5. 复活系统combat.recover-on-death 已预留,可实现死亡后待复活状态与复活道具。
  6. PlaceholderAPI 变量HookManager 已探测,可注册 %lumaid_...% 占位符。

六、配置说明

config.yml 内的中文注释,主要分区: settings / storage / render / combat / professions。 所有玩家可见文本集中在 messages.yml,并统一以 RESET 起头以保证非斜体渲染。

About

互动的女仆插件

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages