公开 API
编译依赖
<repositories><repository><id>jiuwu-releases</id><url>https://repo.crypticlib.com/repository/maven-public/</url></repository></repositories>
<dependency><groupId>emaki.jiuwu.craft</groupId><artifactId>emaki-skills-api</artifactId><version>2.7.11</version><scope>provided</scope></dependency>repositories { maven("https://repo.crypticlib.com/repository/maven-public/") }
dependencies { compileOnly("emaki.jiuwu.craft:emaki-skills-api:2.7.11") }仅编译依赖
runtime 已内嵌未 relocate 的 facade、模型和事件类。不要安装、bundle、shade 或 relocate API Jar;PDC codec 可独立调用也不改变此规则。
门面与分层
检查 EmakiSkillsApi.status().usable()。catalog()、operations()、extensions() 永不为 null;install、uninstall、Bridge 为 runtime 内部契约。
catalog() 提供技能定义、玩家技能视图、等级、已学习状态、cast mode 与最大等级判断。定义查询可任意线程;实时玩家读取需 owner thread。
Operations
当前异步施法方法名是 cast(Player,String) 与 castByTrigger(Player,String),均返回 CompletableFuture<EmakiResult<SkillCastOutcome>>。它们可从任意线程提交,runtime 会切到玩家 owner thread 执行 Bukkit、pre/post event、资源和冷却阶段;future callback 不保证仍在 owner thread。
learn、forget、forgetAll、equip、unequip、bindTrigger、upgrade、setLevel、addLevel、setCastMode 均为同步玩家 owner-thread 操作。升级摇点失败是成功完成的流程,由 SkillUpgradeOutcome.successfulRoll()==false 表示,而非外层 Failure。
Extensions
extensions().scriptActions()返回SkillScriptActionRegistry。registerScriptAction(Plugin,SkillScriptAction)返回SkillActionResult;unregisterScriptActions(owner)清理 owner 的动作。registerSkillSource(Plugin,SkillSourceProvider)返回SkillSourceRegistration;同 owner/provider id 的新注册替换旧注册,关闭陈旧 handle 不会删掉替代项,并在 owner disable 时自动清理。
SkillScriptAction 描述 id、参数、校验、执行模式、timeout 与可取消执行阶段;异步 I/O 模式不得直接触碰 Bukkit 状态。EquipmentSkillPdcCodec 提供底层 payload read/write/copy/clear,实时装备仍受 owner-thread 约束。
结果语义
无负载成功使用 EmakiResult<Unit>;可选负载使用 optionalValue()。FailureKind 精确为 UNAVAILABLE、NOT_FOUND、INVALID_INPUT、REJECTED、CANCELLED、TARGET_OFFLINE、WRONG_THREAD、INTERNAL_ERROR。SkillActionResult 是独立动作结果,不等同 EmakiResult。