Public API
Compile-time dependency
<repositories><repository><id>emaki-public</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") }Compile only — never install, shade, or relocate this jar
EmakiSkills embeds this un-relocated API. A duplicate copy prevents Bukkit listeners and bridge types from matching.
Use EmakiSkillsApi.status().usable(), catalog(), operations(), and extensions(). install, uninstall, and Bridge are internal.
operations().cast and castByTrigger return genuine CompletableFuture<EmakiResult<SkillCastOutcome>>; scripts/integrations may complete later, while Bukkit work and pre/post cast events run on the player's owner thread. Other operations are synchronous owner-thread calls: learn/forget, slots/triggers, upgrade, levels, and cast mode. A failed upgrade roll is a successful SkillUpgradeOutcome with successfulRoll()==false.
extensions().scriptActions() returns a non-null registry (empty when unavailable). Use registerScriptAction/unregisterScriptActions, or registry register, unregister, unregisterAll, lookup, ownership, and listings. registerSkillSource(owner, SkillSourceProvider) adds owner-cleaned external unlocks; collect(Player) executes synchronously on the player owner thread and must be fast.
Use Success, Partial, Failure, and optionalValue(). Failure kinds are UNAVAILABLE, NOT_FOUND, INVALID_INPUT, REJECTED, CANCELLED, TARGET_OFFLINE, WRONG_THREAD, INTERNAL_ERROR.