概览
Blink —— 面向 Kotlin 的 Spigot/Paper 插件开发框架,注解驱动、编译期生成。
Blink 采用 Apache-2.0 协议开源,是 ArcartX 生态插件的开发底座。开源地址:github.com/17Artist/Blink。
推荐阅读路径
新手路线(第一次用 Blink)
按顺序读,读完即可写出并发布第一个插件:
- 介绍与设计理念 —— 建立「编译期生成 + 注解驱动」的心智模型。
- 快速开始与 blink{} 配置 —— 配环境、写两个 Gradle 脚本、逐字段读懂
blink { }。 - 生命周期 @Awake —— 四个阶段的触发时机与
priority排序。 - 事件 @AutoListener —— 把方法变成 Bukkit 监听器。
- 命令 —— 链式 DSL + 注解构建命令、子命令、Tab 补全。
- 配置 —— 用
var字段 + 注解声明 YAML 配置。 - 日志 ——
BlinkLog分级配色与品牌前缀。 - 构建与发布 —— 产出
-all.jar并理解版本号来源。
进阶路线(中间件与发布加固)
- Aria 脚本引擎 ——
enableAria与共享宿主BlinkAriaHost。 - Asteroid NMS ——
enableAsteroid跨版本 NMS 操作与共享宿主。 - Proteus 混淆 ——
obfuscate=true的一键混淆方案与定制。
完整目录
| 编号 | 篇目 | 一句话简介 |
|---|---|---|
| 01 | 介绍与设计理念 | Blink 是什么、为什么选择编译期字节码生成而非运行时反射,以及三个模块的职责划分。 |
| 02 | 快速开始与 blink 配置 | 从环境要求到两个 Gradle 脚本模板,逐字段讲解 blink { } DSL,并写出第一个能加载的插件。 |
| 03 | 生命周期 @Awake | @Awake 的函数约束、LOAD/ENABLE/ACTIVE/DISABLE 四阶段触发时机与 priority 排序。 |
| 04 | 事件 @AutoListener | 用 @AutoListener 声明监听器、签名硬约束、priority/ignoreCancelled,以及 EventManager 动态监听。 |
| 05 | 命令 | BlinkCommand 链式 DSL 与 @SubCommand 注解风格:参数声明、SenderType、CommandContext、Tab 补全、分组。 |
| 06 | 配置 | 用 BlinkConfig 子类 + @Comment/@ConfigKey/@Ignore 描述 YAML,含 Section 嵌套、动态条目与多文件目录。 |
| 07 | 日志 | BlinkLog 五个分级方法、输出拼装规则、logPrefix 自定义前缀与 ArcartX 品牌前缀规范。 |
| 08 | Aria 脚本引擎 | enableAria 在构建期/运行期做了什么、BlinkAriaHost 共享宿主流程,以及直接用 Aria.* 执行脚本。 |
| 09 | Asteroid NMS | enableAsteroid 共享宿主模型 + AsteroidAPI 完整参考:实体/坐骑、数据包、ItemTag、属性、实体 NMS、AI、序列化、头颅、发光、FakeOp、Folia 调度。 |
| 10 | Proteus 混淆 | obfuscate=true 自动配置的全部策略、入口类 keep 与运行时 exclude,以及如何在其上做定制。 |
| 11 | 构建与发布 | 产出 -all.jar 的命令与产物结构、blinkGenerate 任务依赖链、版本号来源,以及框架自身的发布流程。 |
约定速记
- 不写主类,也不写
plugin.yml:在object单例或顶层函数上打注解即可,入口类与plugin.yml编译期生成。 - 三件事由
packageName一处决定:生成入口类的包、Shadow relocate 目标、ProteusdefaultPackage,建议与group一致。 - 运行时不打包的东西:Kotlin stdlib(由
KotlinBootstrap动态加载)、Aria / Asteroid(由各自 SharedHost 部署为全 JVM 共享插件)。 - 部署产物为
build/libs/<name>-<version>-all.jar(开混淆则跑gradle obfuscate)。
