Java版本Mirai食用指南(二) for Mirai2.0.0

Java版本的mirai食用方法,2.0.0版本适用

(二)编写插件——基础篇

目录

  • 〇、前言
  • 一、安装IDEA
  • 二、安装IDEA插件
  • 三、新建项目
    • 方法1:从模板修改
    • 方法2:手动配置
  • 四、开始编写插件!
  • 五、编写插件主体
  • 六、打包发布


〇、前言

这一篇是关于插件编写的环境配置、基本的插件结构、打包发布方式。
机器人本体使用:Java版本Mirai食用指南(一) for Mirai2.0.0

一、安装IDEA

官网:IDEA
本文使用2020.1版本,使用其他版本IDEA可能存在问题。
需要gradle作为包管理器,我记不太清是不是自带的了,如果没有的话可以去百度上查一下。

二、安装IDEA插件

需要安装Kotlin Jvm Blocking Bridge和Mirai console插件
(如果使用Kotlin编写,则不需要Kotlin Jvm Blocking Bridge)
除了Kotlin Jvm Blocking Bridge,Kotlin版本也应更新到最新版
Mirai console插件并不是必需的,但是提供一些辅助功能,方便编写程序

下面无论那种方法,首先打开IDEA

  • 方法1
    点击链接直接安装
    Kotlin Jvm Blocking Bridge
    Mirai Console IntelliJ
  • 方法2
    在IDEA中按快捷键Ctrl + Alt + s或者点击File->Setting
    在侧边栏里找到Plugins,然后在Marketplace里面搜索Mirai和Kotlin安装
  • 方法3
    如果前两种方法不能安装,可以通过本地文件安装……不过我相信你们不需要(如果有需要的话我再放个百度云链接在这)

三、新建项目

最新版本的Mirai console已经没有自动生成Mirai项目的功能了,所以需要自己配置,或者从现成的模板修改。

方法1:从模板修改

我自己写的Java模板
讲道理我没用过github,如果有什么问题记得在评论告诉我
想要修改里面的东西的话,可以参看手动配置的部分

方法2:手动配置

首先新建一个gradle项目

  • 1、修改build.gradle如下
plugins {
     
    id 'org.jetbrains.kotlin.jvm' version '1.4.21' //版本必须为1.4及以上
    id 'java'
    id 'net.mamoe.mirai-console' version '2.0.0' //版本号与下面保持一致即可
}

group = '0001' // 看着改改就行

repositories {
     
    maven {
      url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    maven {
      url 'https://mirrors.huaweicloud.com/repository/maven' } //镜像仓库,加不加看你自己喜好了
    mavenCentral()
    jcenter()
}

def miraiCoreVersion = "2.0.0"
def miraiConsoleVersion = "2.0.0"

dependencies {
     
    compileOnly 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
    compileOnly "net.mamoe:mirai-core:$miraiCoreVersion"
    compileOnly "net.mamoe:mirai-console:$miraiConsoleVersion"

    testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
    testImplementation "net.mamoe:mirai-core:$miraiCoreVersion"
//    testImplementation "net.mamoe:mirai-core-qqandroid:$miraiCoreVersion"
//    开发Android程序才会用到
    testImplementation "net.mamoe:mirai-console:$miraiConsoleVersion"
}
  • 2、创建主类
    在Java文件夹下新建Java class(或者先打个包)
    建议打包
    在这里插入图片描述

    在这里插入图片描述

  • 3、指定主类(Kotlin的就可以自动生成,Java凭什么就不行)
    在resource文件夹下,新建META-INF\services\net.mamoe.mirai.console.plugin.jvm.JvmPlugin文件
    在这里插入图片描述
    里面写主类名,需要utf8编码格式

com.example.plugin.AAA

四、开始编写插件!

主类要求:

1、继承JavaPlugin
2、静态初始化单例class,必须public static,并且必须命名为INSTANCE
3、构造函数不接受参数,并调用super(description)
public class AAA extends JavaPlugin {
     
    public static AAA INSTANCE = new AAA();
    private AAA() {
     
	super(description);
	}
}

其中description可由JvmPluginDescriptionBuilder构建

new JvmPluginDescriptionBuilder(
	"com.example.plugin.Test", // ID 需要遵循语法规定(不过我也不知道是什么规定),不知道写什么的话就写主类名吧
	"1.0.0" // Version 同样需要遵循语法规定
	)
    .author("me") //作者
    .name("test") //插件名称
    .info("新版本测试") //插件信息
    .build()

主类可以重载onLoad和onEnable方法。
onLoad中可以初始化变量、读取本地数据等,onEnable中进行这个插件真正的工作。

所以一个基本的插件主类是这样的:

package com.example.plugin;

import net.mamoe.mirai.console.extension.PluginComponentStorage;
import net.mamoe.mirai.console.plugin.jvm.JavaPlugin;
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescriptionBuilder;
import net.mamoe.mirai.event.GlobalEventChannel;
import net.mamoe.mirai.event.events.FriendMessageEvent;
import org.jetbrains.annotations.NotNull;

public class AAA extends JavaPlugin {
     
    public static AAA INSTANCE = new AAA();
    private AAA() {
     
        super(new JvmPluginDescriptionBuilder(
                        "com.example.plugin.Test", // 需要遵循语法规定,不知道写什么的话就写主类名吧
                        "1.0.0" // 同样需要遵循语法规定
                )
                        .author("me")
                        .name("test")
                        .info("新版本测试")
                        .build()
        );
    }

    @Override
    public void onLoad(@NotNull PluginComponentStorage $this$onLoad) {
     

    }

    @Override
    public void onEnable() {
     
         // 当接受好友消息时回复喵
        GlobalEventChannel.INSTANCE.subscribeAlways(FriendMessageEvent.class, (FriendMessageEvent event) ->{
     
            event.getSender().sendMessage("喵");
        });
    }
}

五、编写插件主体

1、参看官方文档
2、看 [目前还不存在的Java版本食用指南(三) for Mirai2.0.0]

六、打包发布

要求将除了mirai相关组件之外的全部依赖、资源文件打包
如果build.gradle中添加了

plugins {
     
    id 'net.mamoe.mirai-console' version '2.0.0'
}

那么在gradle中就可以 Tasks > mirai > buildPlugin 直接将依赖文件一同打包

例如我想添加本地依赖,就在dependencies中加入

    compile fileTree(dir:'lib',includes:['*jar'])

然后buildPlugin就会帮我把这些依赖一起打包。
打包好的jar文件在 build\mirai 文件夹下

把这个文件放到mcl的plugins文件夹下就好了

你可能感兴趣的:(qq机器人,java)