2020-02-29 00:31:36 +08:00
# 如何开发Mirai-console插件
2020-02-29 00:18:44 +08:00
####
首先, 你需要一些基础的编程知识<br>
开发插件的下限很低, 仅仅了解开发用的语言即可<br>
当然, 插件开发的上限也很高, Mirai-Console的插件的控制层下至简单的回复逻辑, 上至修改与QQ通讯的协议<br>
目前, Java与Kotlin均可用来开发, 仅需了解任意一门语言, 都可以进行插件开发<br>
2020-02-29 00:31:36 +08:00
### 我没有学习过任何与编程相关的知识或我没有学过这两种语言
2020-02-29 00:18:44 +08:00
你有两个选择, 学习Java或者Kotlin<br>
2020-02-29 13:23:56 +08:00
学习Java/Kotlin的好处: 学习速度相对较快, 学习资料多<br>
2020-02-29 00:31:36 +08:00
学习Kotlin的好处: mirai源开发语言为kotlin, 学习了kotlin可以顺便读懂mirai及其分支项目, 更容易写出更高质量的插件<br>
2020-02-29 00:18:44 +08:00
2020-02-29 00:31:36 +08:00
方法1: 认真读书<br>
[30分钟精通JAVA](https://www.runoob.com/java/java-tutorial.html) 最低只需要学完Java 教程, Java 面向对象两章<br>
[30分钟精通Kotlin](https://www.kotlincn.net/docs/reference/) 最低只需要学完类与对象<br>
2020-02-29 00:18:44 +08:00
2020-02-29 00:31:36 +08:00
方法2: 通过例子边学插件边学语言<br>
需要较高悟性, 不推荐完全没有接触编程的人尝试<br>
## 我需要什么?
### Java环境
2020-02-29 00:36:43 +08:00
JDK是Java语言的软件开发工具包, 开发Java软件时必须安装jdk。<br>
推荐安装JDK 11, 最低推荐使用JDK 8来开发Mirai-Console插件。<br>
2020-02-29 00:31:36 +08:00
打开控制台( windows按徽标键+R, 在弹出的窗口输入cmd然后回车; linux直接打开控制台) , 输入以下代码并回车:
```$xslt
javac -version
```
返回的应该类似于以下的结果:
```$xslt
javac 1.8.0_60-ea
```
2020-02-29 00:36:43 +08:00
如果类似于以上的结果, 恭喜你已经成功的安装了jdk 8并且不希望更新版本可以跳过这个步骤的教程。<br>
2020-02-29 00:31:36 +08:00
如果返回的版本是1.7.0或者更旧的版本,或者返回的类似于“'javac' 不是内部或外部命令, 也不是可运行的程序或批处理文件”, 说明你还没有安装最新版本的jdk。<br>
2020-02-29 00:36:43 +08:00
#### 安装最新版JDK
请打开以下链接下载JDK, 推荐使用稳定的11: https://www.oracle.com/java/technologies/javase-downloads.html<br>
2020-02-29 00:31:36 +08:00
安装过程因系统而异,这里就不详细讲解了。<br>
另外, jdk安装包也包含相应版本的jre, 所以你无需在java官网上再下载安装一次jre。<br>
在windows系统安装jdk后, 你需要配置jdk来保证命令行正常使用。<br>
2020-02-29 00:36:43 +08:00
#### windows系统中旧版JDK的配置
大部分JDK在安装时已经可以自己配置, 请直接检查是否成功, 如不成功在阅读本块<br>
2020-02-29 00:37:48 +08:00
检查是否配置成功: 点击windows徽标键+R, 输入cmd并回车, 在打开的控制台输入“javac -version”和“java -version”, 如果都能正确的返回版本信息, 说明配置环境变量成功了。至此, 你的jdk已经安装并配置完成<br>
2020-02-29 00:38:23 +08:00
如果没有, 以下只写了简单流程, 如需要图文帮助可以搜索"windows系统中JDK的配置"<br>
2020-02-29 00:31:36 +08:00
- 右键“计算机”,点击“属性”,<br>
- 在弹出的窗口中点击“高级系统设置”,“环境变量”,<br>
- 点击“系统变量”下面的“新建”, 在弹出的窗口的“变量名”输入“JAVA_HOME”( 不带引号) , “变量值”输入你之前安装jdk的安装路径, 我的是“C:\Program Files\Java\jdk1.8.0_60”( 不带引号) , 这里根据你安装jdk的路径来输入。然后点击确定<br>
- 在“系统变量”中寻找“Path”( 不带引号) 变量, 选中后点击“编辑”, 在“变量值”的最后面( 注意不是把整个替换, 是添加在最后面) 输入:
```$xslt
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
```
这里要注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码。<br>
点击“系统变量”下面的“新建”, 在弹出的窗口的“变量名”输入“CLASSPATH”( 不带引号) , “变量值”输入以下的字符串( 注意, 最前面有一个点“.”不要忘了):
```$xslt
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
```
2020-02-29 00:36:43 +08:00
- 检查是否配置成功。
2020-02-29 00:31:36 +08:00
#### IDE
2020-03-08 23:40:28 +08:00
IDE, 即集成开发环境, 是辅助编程开发的软件。使用合适的IDE能有效地减少代码语法错误、编译麻烦等问题, 加大开发效率。目前java开发者常用的IDE有Eclipse, NetBeans, IntelliJ IDEA等软件。我这里使用IntelliJ IDEA 14.1( 以下简称“IDEA”) 与windows 7系统为例子, 来讲IDE的安装和配置。<br>
强烈推荐IDEA, IDEA可以使用idea插件[mirai-console-intellij](https://github.com/mamoe/mirai-console-intellij)快速进行插件开发
2020-02-29 00:36:43 +08:00
<br>
2020-02-29 00:39:24 +08:00
打开[IntelliJ IDEA的官方网站]( http://www.jetbrains.com/idea/), 点击“Get IntelliJ IDEA now”
<br>
IDEA分付费的Ultimate版和免费的Community版, 选择自己的系统后, 根据自己的需求点击下载使用, 一般的使用免费的Community版就足够了。
<br>
2020-02-29 00:41:13 +08:00
2020-02-29 00:18:44 +08:00
### 我要如何开始
2020-03-08 23:40:28 +08:00
**此处使用IDEA作为演示IDE**<br>
新手只推荐使用IDEA, 如执着于不使用idea, 可以阅读[PluginStructure](PluginStructure.MD)手动构建插件环境<br>
2020-02-29 00:18:44 +08:00
2020-03-08 23:40:28 +08:00
#### IDE准备
安装idea插件[mirai-console-intellij](https://github.com/mamoe/mirai-console-intellij), 这是一个用于快速创建Mirai Console插件的IDE插件 <br>
1: 自动安装<br>
2020-03-08 23:48:45 +08:00
打开IDEA, 点击Preferences或按[Ctrl+Alt+Shift+S]/[Cmd+Alt+Shift+S], 点击插件[Plugins], 市场[Market place], 搜索Mirai, 安装Mirai-Console<br>
2020-03-08 23:40:28 +08:00
预计2020/3/11号后才可以在market里搜索到<br>
<br>
2: 手动安装<br>
前往[这里](https://github.com/mamoe/mirai-console-intellij/releases)下载最新的插件[.jar]<BR>
2020-03-08 23:48:45 +08:00
打开IDEA, 点击Preferences或按[Ctrl+Alt+Shift+S]/[Cmd+Alt+Shift+S], 按下图操作, 选择下载的jar 然后重启IDE<br>
2020-03-08 23:40:28 +08:00

<br>
#### 启动项目
1: 点击New Project<br>
2: 在左侧选择Mirai Console Plugin<br>
3: 根据下图辅助填写信息<br>
2020-03-08 23:42:01 +08:00
<br>
2020-03-08 23:40:28 +08:00
4: 点击[next]<br>
5: 根据下图辅助继续填写信息<br>
2020-03-08 23:42:01 +08:00
<br>
2020-03-08 23:40:28 +08:00
6: 点击[next]<br>
7: 最后一页与本地储存位置有关, 如不懂使用默认即可<br>
8: 点击[Finish]稍作等待<br>
9: 等待这个页面加载出来<br>
2020-03-08 23:42:01 +08:00
<br>
2020-03-08 23:40:28 +08:00
10: 点击右下↘的Import gradle project或Import Maven Project<br>
11: 等待进度条结束<br>
2020-03-08 23:42:01 +08:00
<br>
2020-03-08 23:40:28 +08:00
12: 等待这个页面加载出来(这是第一页选的Java语言, kotlin类似)<br>
2020-03-08 23:42:01 +08:00
<br>
2020-03-08 23:40:28 +08:00
13: 插件环境正式完成<br>
2020-03-30 23:43:29 +08:00
<br>
<br>
<br>
2020-04-23 19:11:21 +08:00
#### 如何运行
1: 根据下图帮助打开gradle window 并双击对应task
<br>
2: 此时你应该能看到正在进行编译, 编译完成之后将会自动启动console<br>
3: 输入密码完成登录,开始测试
<br>
<br>
#### 如何debug
在进行了上述配置之后, 直接用debug模式运行task可能会无法成功断点, 请按照以下方式配置<br>
1: 点击这里打开运行配置<br>
<br>
2: 选择刚刚自带生成的配置并复制一份<br>
<br>
3: 修改复制的配置,按照下图添加 `--debug-jvm`<br>
<br>
4: 添加Remote Debug, 一般来说不需要更改设置, 直接确认即可<br>
<br>
5: 运行task<br>
<br>
2020-04-23 19:14:55 +08:00
6: 出现以下显示的时候切换到Remote并点击debug<br>
2020-04-23 19:11:21 +08:00
<br>
<br>
2020-04-23 19:12:57 +08:00
7: 当调试器附加成功时程序才会开始运行,因此你可以在任何地方使用断点,当然也可能会出现一些问题导致某些地方断点失效<br>
2020-04-23 19:11:21 +08:00
<br>
<br>
<br>
<br>
2020-03-08 23:40:28 +08:00
#### 如何打包插件
1: 根据下图帮助打开gradle window[maven同理]<br>
2020-03-08 23:42:01 +08:00
<br>
2020-03-08 23:40:28 +08:00
2: 根据下图帮助点击JAR<br>
2020-03-08 23:42:01 +08:00
<br>
2020-03-08 23:40:28 +08:00
3: 在这里找到成品, 完成<br>
2020-03-08 23:42:01 +08:00
<br>
2020-03-08 23:40:28 +08:00
PS: 如果要打包有依赖lib的插件, 请继续向后读<br>
2020-02-29 00:18:44 +08:00
2020-03-08 23:40:28 +08:00
2020-03-30 23:45:50 +08:00
## 下一步
2020-04-06 17:47:35 +08:00
Java 玩家->[我的第一个插件](https://github.com/mamoe/mirai-console/blob/master/PluginDocs/java/)
Kotlin玩家->[我的第一个插件](https://github.com/mamoe/mirai-console/blob/master/PluginDocs/kotlin/)
2020-03-30 23:45:50 +08:00
2020-02-29 00:18:44 +08:00
2020-02-29 00:41:13 +08:00
<i>本章部分章节引用自[搭建环境 - Nukkit插件从0开始](https://www.cnblogs.com/xtypr/p/nukkit_plugin_start_from_0_build_environment.html),</i>
2020-02-29 00:31:36 +08:00