mirai/mirai-console/docs/plugin/Plugins.md
Him188 7a6c7a89c0
Update docs for console plugin (#1995)
* Update docs for console plugin

* Update [skip ci]

* Update docs

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2022-05-01 18:03:10 +01:00

113 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Mirai Console Backend - Plugins
[`Plugin`]: ../../backend/mirai-console/src/plugin/Plugin.kt
[`PluginDescription`]: ../../backend/mirai-console/src/plugin/description/PluginDescription.kt
[`PluginLoader`]: ../../backend/mirai-console/src/plugin/loader/PluginLoader.kt
[`PluginManager`]: ../../backend/mirai-console/src/plugin/PluginManager.kt
[`JvmPluginLoader`]: ../../backend/mirai-console/src/plugin/jvm/JvmPluginLoader.kt
[`JvmPlugin`]: ../../backend/mirai-console/src/plugin/jvm/JvmPlugin.kt
[`JvmPluginDescription`]: ../../backend/mirai-console/src/plugin/jvm/JvmPluginDescription.kt
[`AbstractJvmPlugin`]: ../../backend/mirai-console/src/plugin/jvm/AbstractJvmPlugin.kt
[`KotlinPlugin`]: ../../backend/mirai-console/src/plugin/jvm/KotlinPlugin.kt
[`JavaPlugin`]: ../../backend/mirai-console/src/plugin/jvm/JavaPlugin.kt
[`PluginData`]: ../../backend/mirai-console/src/data/PluginData.kt
[`PluginConfig`]: ../../backend/mirai-console/src/data/PluginConfig.kt
[`PluginDataStorage`]: ../../backend/mirai-console/src/data/PluginDataStorage.kt
[`ExportManager`]: ../../backend/mirai-console/src/plugin/jvm/ExportManager.kt
[`MiraiConsole`]: ../../backend/mirai-console/src/MiraiConsole.kt
[`MiraiConsoleImplementation`]: ../../backend/mirai-console/src/MiraiConsoleImplementation.kt
[`Command`]: ../../backend/mirai-console/src/command/Command.kt
[`CompositeCommand`]: ../../backend/mirai-console/src/command/CompositeCommand.kt
[`SimpleCommand`]: ../../backend/mirai-console/src/command/SimpleCommand.kt
[`RawCommand`]: ../../backend/mirai-console/src/command/RawCommand.kt
[`CommandManager`]: ../../backend/mirai-console/src/command/CommandManager.kt
[`Annotations`]: ../../backend/mirai-console/src/util/Annotations.kt
[`ConsoleInput`]: ../../backend/mirai-console/src/util/ConsoleInput.kt
[`JavaPluginScheduler`]: ../../backend/mirai-console/src/plugin/jvm/JavaPluginScheduler.kt
[`ResourceContainer`]: ../../backend/mirai-console/src/plugin/ResourceContainer.kt
[`PluginFileExtensions`]: ../../backend/mirai-console/src/plugin/PluginFileExtensions.kt
[`AutoSavePluginDataHolder`]: ../../backend/mirai-console/src/data/PluginDataHolder.kt#L45
[Kotlin]: https://www.kotlincn.net/
[Java]: https://www.java.com/zh_CN/
[JVM]: https://zh.wikipedia.org/zh-cn/Java%E8%99%9A%E6%8B%9F%E6%9C%BA
[JAR]: https://zh.wikipedia.org/zh-cn/JAR_(%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F)
[使用 AutoService]: ../QA.md#使用-autoservice
[JVMPlugin]: ./JVMPlugin.md
Mirai Console (简称 Console 运行在 [JVM],支持使用 [Kotlin] 或 [Java] 等 JVM
语言编写的插件。
本章节简要介绍 Console 插件架构(与平台无关的基础架构)。
## 通用的插件接口 - [`Plugin`]
所有 Console 插件都必须直接或间接地实现 [`Plugin`] 接口。
> **解释 *插件***:只要实现了 [`Plugin`] 接口的对象都可以叫做「Mirai Console 插件」,简称 「插件」。
> 为了便捷,内含 [`Plugin`] 实现的一个 [JAR] 文件也可以被称为「插件」。
基础的 [`Plugin`] 很通用,它只拥有很少的成员:
```kotlin
interface Plugin : CommandOwner { // CommandOwner 表示该对象可以创建指令
val isEnabled: Boolean // 当插件已开启时返回 true
val loader: PluginLoader<*, *> // 能处理这个 Plugin 实例的 PluginLoader
}
```
[`Plugin`] 接口拥有强扩展性,以支持 Mirai Console 统一管理使用其他编程语言编写的插件
(详见进阶章节 [扩展 - PluginLoader](../Extensions.md))。
> 除非你是在实现新种类插件,否则不要直接实现 `Plugin` 接口。
## 插件加载器 - [`PluginLoader`]
Mirai Console 支持使用多个插件加载器来加载多种类型插件。每个插件加载器都支持一种类型的插件。
Mirai Console 内置 [`JvmPluginLoader`] 以加载 JVM
平台插件(见下文),并允许这些插件注册扩展的插件加载器(见章节 [扩展](../Extensions.md))
,以支持读取其他语言编写的插件并接入
Console 插件管理系统。
## 总结
Mirai Console 提供抽象的插件及其加载器接口,支持扩展。各类插件行为由其加载器确定。插件作者需要基于特定的插件平台实现,如
Console 内置的 [JVM 平台][JVMPlugin]。
## 继续阅读
- [JVM 平台插件详情][JVMPlugin]
- [编写插件加载器](../Extensions.md)