SuperAPI AI 工具集

minecraft-plugin-development

编程与开发

查看项目

更新于 10-15 12:25

技能介绍

用途

该技能用于 Paper、Spigot、Bukkit 生态下的 Minecraft 服务器插件开发,尤其适合玩法密集的插件,例如战斗系统、波次或 Boss 遭遇、战争或团队模式、竞技场、套装系统、基于冷却的技能、记分板以及配置驱动的游戏规则。

主要能力

技能覆盖的范围包括:plugin.yml、命令、Tab 补全、监听器、调度器、配置、权限、Adventure 文本、玩家状态、小游戏流程、竞技场实例、地图副本、战利品、波次、持久化档案、增益、任务、经济以及 PvP/PvE 游戏循环;还包括基于 Java 的服务器插件架构、调试、重构与功能实现。默认不覆盖 Fabric 模组、Forge 模组、客户端模组和基岩版附加包。

技能提供多份参考文档,按需加载:

  • references/project-patterns.md:真实玩法插件中的高层架构模式
  • references/bootstrap-registration.md:onEnable、命令接线、监听器注册与关闭预期
  • references/state-sessions-and-phases.md:玩家会话建模、游戏阶段、比赛状态与重连安全逻辑
  • references/config-data-and-async.md:配置管理器、数据库支持的玩家数据、异步刷新与 UI 刷新任务
  • references/maps-heroes-and-feature-modules.md:地图轮换、英雄或职业系统与模块化功能增长
  • references/minigame-instance-flow.md:竞技场实例、倒计时、战利品刷新、波次系统、可见性隔离与实体到游戏的归属
  • references/persistent-progression-and-events.md:长期运行的 PvP 服务器,包含档案、特权、增益、任务、经济、自定义领域事件与扩展注册表
  • references/build-test-and-runtime-validation.md:Maven 或 Gradle 打包、shaded 依赖、生成资源、软依赖、配置验证命令与首轮服务器测试计划

使用方式

当技能触发时,默认工作方式为:识别服务器 API 与版本目标;识别构建系统与 Java 版本;检查 plugin.yml、主插件类以及命令或监听器注册;在编辑代码前映射玩法流程,包括玩家生命周期、游戏阶段、计时器与计划任务、团队/竞技场/比赛状态、配置与持久化;做出最小的连贯变更,保持注册、配置与运行时行为一致。

如果插件玩法密集或有状态,编辑前阅读 references/project-patterns.md 和 references/state-sessions-and-phases.md。如果任务涉及竞技场隔离、地图实例、箱子或资源补充、波次生成、路线投票、旁观者可见性或游戏专用聊天,还需阅读 references/minigame-instance-flow.md。如果任务涉及持久化玩家进度、档案保存、经济奖励、特权、增益、任务、自定义战斗事件或长期共享 PvP 服务器,还需阅读 references/persistent-progression-and-events.md。如果任务涉及构建文件、plugin.yml 元数据、shaded 依赖、生成资源输出、部署到测试服务器、可选插件集成或发布验证,还需阅读 references/build-test-and-runtime-validation.md。

项目发现清单包括:plugin.yml;pom.xml、build.gradle 或 build.gradle.kts;继承 JavaPlugin 的插件主类;命令执行器与 Tab 补全器;监听器类;config.yml、messages、kits、arenas 或自定义 YAML 文件的配置引导代码;生成资源输出如 target/classes、build/resources 或复制的插件 jar;通过 Bukkit 调度器 API 的调度器使用;任何玩家数据、团队状态、竞技场状态或比赛状态容器。

核心规则包括:优先使用仓库中具体的服务器 API;如果项目已面向 Paper API,继续使用 Paper 优先 API,除非明确要求兼容性;不要假设 API 在所有版本都存在;保持注册同步,添加命令、权限或监听器时在同一变更中更新 plugin.yml、onEnable 中的插件启动注册、代码中的权限检查以及相关配置或消息键;尊重主线程边界,不要在异步任务中触碰世界状态、实体、物品栏、记分板或大多数 Bukkit API 对象,除非 API 明确允许;使用异步任务处理外部 I/O、重计算或数据库工作,然后在应用玩法变更前切回主线程;将玩法建模为状态而非分散的布尔值;对于多竞技场插件,隔离每局可见性、聊天接收者、记分板、战利品与实体归属;偏好配置驱动的值;谨慎处理重载行为。

实现模式涵盖命令、监听器、计划任务、玩家与比赛状态、文本与消息。命令方面:在 plugin.yml 中添加命令;必要时实现执行器与 Tab 补全;在转换为 Player 前验证发送者类型;分离解析、权限检查与玩法逻辑;对无效用法发送清晰的玩家反馈。监听器方面:尽早守卫并提前返回;检查当前玩家、竞技场或游戏阶段是否应处理该事件;避免在 move、damage 或 interact 等热事件中做昂贵工作;集中重复检查。计划任务方面:在取消重要时存储任务句柄;在插件禁用以及比赛或竞技场结束时取消任务;避免同一玩法关注点出现多个重叠任务;优先一个权威游戏循环;确保倒计时或补充任务在游戏离开预期状态时自行取消。玩家与比赛状态方面:明确定义归属;在退出、踢出、死亡、比赛结束与插件禁用时清理;避免以 Player 为键的陈旧 map 导致内存泄漏;持久化跟踪优先使用 UUID。文本与消息方面:遵循现有格式化方式;避免无理由混用旧版颜色代码与 Adventure 样式;面向玩法的消息模板保持可配置。

高风险区域包括:伤害处理与自定义战斗逻辑;死亡、重生、旁观与淘汰流程;竞技场加入与离开流程;记分板或 Boss 条更新;物品栏变更与套装分发;异步数据库或文件访问;经济、任务、特权与档案变更;自定义事件分发或扩展注册表;版本敏感的 API 调用;onDisable 中的关闭与清理;跨竞技场可见性、聊天与广播隔离;地图复制、卸载与文件夹删除逻辑;生物、NPC、投射物或临时实体归属;箱子或资源补充系统。

输出期望:实现或修订插件代码时,产出可运行的 Java 代码而非伪代码,除非用户仅要求设计;提及对 plugin.yml、配置文件、构建文件或资源的任何必要更新;明确说明版本假设;指出线程安全或 API 兼容性风险;保留项目现有约定与文件夹结构。当请求的变更涉及插件启动、异步数据、比赛流程、职业系统或轮换地图时,编辑前查阅匹配的参考文件。

验证清单包括:命令、监听器或功能是否正确注册;plugin.yml 是否与实现行为匹配;导入与 API 类型是否匹配目标服务器栈;调度器使用是否安全;代码引用的配置键是否存在或有默认值;比赛结束、玩家退出与插件禁用是否有状态清理路径;每竞技场聊天、可见性、记分板与广播是否隔离;临时世界、生物、任务与生成资源是否清理;是否存在明显的 null、类型转换或生命周期风险。

常见陷阱包括:未检查就将 CommandSender 转换为 Player;从异步任务更新 Bukkit 状态;忘记在 plugin.yml 中注册监听器或声明命令;在 UUID 更安全时使用 Player 对象作为长期 map 键;在回合、竞技场或插件关闭后仍保留重复任务;硬编码本应放在配置中的玩法常量;在面向 Spigot 的插件中假设仅 Paper 可用的 API;将有状态插件在重载下常出问题视为免费;跨无关游戏实例广播、显示玩家或应用记分板变更;在区块可用前加载或变更箱子/容器方块;忘记从所属游戏注销生成的生物或临时实体;编辑 target/classes 或 build/resources 下的生成文件而非 src/main/resources 下的源文件。

首选响应结构:对于大量请求,按当前插件上下文与假设、玩法或生命周期影响、代码变更、必需的注册或配置更新、验证与剩余风险来组织;对于小请求,保持简洁但仍提及任何需要的 plugin.yml、配置或生命周期更新。

适用场景

适用于 Paper、Spigot、Bukkit 服务器插件的构建与修改,尤其是玩法密集、有状态、多竞技场、持久化进度或经济系统的插件。如果用户说“Minecraft 插件”但技术栈不明确,应先确定项目是 Paper/Spigot/Bukkit 还是模组栈。

限制

默认不覆盖 Fabric 模组、Forge 模组、客户端模组和基岩版附加包。不要假设 API 在所有版本都存在,应检查现有依赖与周围代码风格。避免承诺安全热重载,除非代码已良好支持。