简体中文
EmakiSkills
EmakiSkills (技能模块) 覆盖这些内容: 技能怎么解锁, 怎么装进技能槽, 什么时候才放得出来, 要花哪些资源, 怎么升级, 你的数据存在哪里
技能放出来之后由谁执行效果, 取决于 script.mode 这个开关: native 用插件自带的脚本系统 (script_engine.default_mode 默认就是 native, 不需要任何外部插件), mythic 交给 MythicMobs 执行, hybrid 两者都执行
基本信息
| 项目 | 值 |
|---|---|
| 模块版本 | 2.8.8 |
| Jar 名 | EmakiSkills-2.8.8.jar |
| Maven 坐标 | emaki.jiuwu.craft:emaki-skills:2.8.8 |
| API 坐标 | emaki.jiuwu.craft:emaki-skills-api:2.8.7 |
| 平台 | Paper 26.1 (api-version: "26.1", folia-supported: true) |
| 主命令 | /emakiskills |
| 别名 | /eskills |
| 硬依赖 | EmakiCoreLib |
| 软依赖 | MythicMobs, EmakiAttribute, PlaceholderAPI, AuraSkills, MythicLib, MMOCore |
| 主要权限 | emakiskills.use, emakiskills.reload, emakiskills.admin, emakiskills.debug |
模块分工
| 模块 / 插件 | 职责 |
|---|---|
| EmakiSkills | 管技能本身, 技能定义, 技能槽, 触发器, 冷却, 资源, 升级和玩家数据都由它负责 |
| MythicMobs | 做出真正的技能效果, 例如伤害, 粒子, 召唤, 位移 |
| EmakiAttribute | 提供属性检查, 资源检查和资源消耗 |
| EmakiItem | 让物品可以带技能解锁, 触发器或套装技能 |
| PlaceholderAPI | 把技能状态, 冷却, 等级等信息展示出来 |
默认配置目录
text
plugins/EmakiSkills/
├── config.yml
├── skills/
├── resources/
├── gui/
│ ├── skills_gui.yml
│ ├── trigger_select_gui.yml
│ └── upgrade_gui.yml
├── data/
└── lang/config.yml 顶层键
你打开 config.yml 会发现顶层很短: 只有版本, 语言与默认数据释放三个开关, 外加一个 slots 块, 其余的键分散在下面几个功能页里
yaml
# version 由资源同步维护, 不是功能开关
version: "2.8.8"
# 语言文件名, 对应 lang/<language>.yml
language: "zh_CN"
# 是否在启动时释放插件内置的默认技能数据
release_default_data: true
slots:
# 默认技能槽数量; 小于 1 的值会按 1 处理
default_count: 3| 字段 | 类型 | 必填 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|---|
version | string | 否 | "2.8.8" | — | 资源版本号, 由资源同步流程维护, 不参与功能开关 |
language | string | 否 | "zh_CN" | lang/ 下的文件名 (不含 .yml) | 加载 lang/<language>.yml 作为玩家可见文案的来源 |
release_default_data | boolean | 否 | true | true / false | 启动时是否释放插件内置的默认技能数据 (示例技能等) |
slots.default_count | integer | 否 | 3 | ≥ 1, 小于 1 按 1 | 玩家默认有几个技能槽, 同时决定 ActionBar 的 %slot_1%~%slot_n% 数量和占位符 %emakiskills_slot_count% 的基准值 |
键的归属:
| 键 | 记录页面 |
|---|---|
skill_sources.*, skill_tags.equip_limits | 技能定义 |
triggers, passive_triggers, trigger_settings, passive_trigger_settings, cast_mode | 触发器 |
actionbar, cast_timing | 技能状态栏 |
script_engine | 原生脚本系统 |
配置预检
加载时会检查 config.yml, skills/, resources/, gui/ 是否存在并可解析, 并对脚本动作行做编译期校验. skill_sources 两侧都关闭, 或 require_lore_pdc_match 开启却只开启了一侧时, 会给出警告
功能页面
| 页面 | 内容 |
|---|---|
| 命令与权限 | 打开界面, 切换施法模式, 授予或收回技能, 管理等级, 清空槽位和调试用的命令 |
| 技能定义 | 主动技能与被动技能怎么写, 资源消耗, 升级规则和各项配置字段 |
| 触发器 | 主动触发器, 被动触发器, 冲突处理和连击配置 |
| 变量类型 | 变量有哪些类型, 字段怎么写, 运行时怎么解析 |
| 原生脚本系统 | 脚本模式, 阶段, 动作, 限制和目标解析 |
| 技能状态栏 | Action Bar 模板, 刷新间隔和施法模式提示 |
| 占位符 | PlaceholderAPI 能输出的占位符 |
| CoreLib 动作 | 技能释放, 等级, 槽位, 冷却和手动解锁这几类动作 |
| API | 技能 API, 外部技能来源和外部技能定义注册 |
| 事件 API | 技能流程里触发的 Bukkit 事件和拦截点 |
技能类型
主动技能
主动技能要玩家亲手放出来, 可以用技能槽, 命令, GUI 或施法模式几种方式. 你通常要配置这些:
- MythicMobs 技能 ID
- 冷却时间
- 全局冷却
- 资源消耗
- 条件检查
- 技能等级和参数
被动技能
被动技能不用玩家动手, 游戏里的事件会自动触发它, 例如攻击, 受击, 击杀, 移动, 格挡等. 你只需要配好触发器和冲突处理方式
施法模式
施法模式是一个开关: 玩家只有在特定状态下才放得出技能. 服务端看不到客户端 G 键这类纯本地按键, 所以技能触发用的都是服务端看得到的行为, 例如命令, GUI, F 键交换手, 交互事件等
资源系统
技能用到的资源有好几种, 既可以真的扣掉, 也可以只检查够不够:
ea-resource: 通过 EmakiAttribute Bridge 消耗 Attribute 资源attribute-check: 检查某个属性是否达到要求. 别名ea-attribute-checklocal-resource: 使用 EmakiSkills 本地资源定义auraskills-mana: 使用 AuraSkills 的法力值. 别名aura-skills-mana,aura-manamythiclib-mana: 使用 MythicLib / MMOCore 的法力值. 别名mmocore-mana,mythic-mana
典型释放流程
- 玩家触发主动或被动技能
- Skills 检查玩家是否拥有该技能
- 检查技能等级, 槽位, 触发器和条件
- 检查冷却和全局冷却
- 检查并消耗资源
- 按
script.mode执行内置脚本动作, MythicMobs 技能, 或两者 - 写入冷却, 统计或升级进度
- 向玩家发送反馈
放技能失败时, 玩家看到的提示取自 lang/<language>.yml 里的 cast.* 等文案键; 插件不会把内部的 reasonKey 原样丢给玩家