创建你的第一个插件
引入依赖
xml
<dependency>
<groupId>moe.shizuki.korrent</groupId>
<artifactId>korrent</artifactId>
<version>0.5.0</version>
<scope>provided</scope>
</dependency>groovy
compileOnly 'moe.shizuki.korrent:korrent:0.5.0'kotlin
compileOnly("moe.shizuki.korrent:korrent:0.5.0")创建插件主类
java
import moe.shizuki.korrent.plugin.KorrentPlugin;
import org.pf4j.PluginWrapper;
public class DemoPlugin extends KorrentPlugin {
public DemoPlugin(PluginWrapper wrapper) {
super(wrapper);
}
}kotlin
import moe.shizuki.korrent.plugin.KorrentPlugin
import org.pf4j.PluginWrapper
class DemoPlugin(wrapper: PluginWrapper): KorrentPlugin(wrapper)添加插件清单
manifest
Plugin-Class: com.your.plugin.MainClass
Plugin-Id: com.your.plugin
Plugin-Version: 0.1.0
Plugin-Requires: 0.5.0
Plugin-Description: A demo plugin
Plugin-Provider: Shizuki Natsuki
Plugin-License: GNU General Public License version 3
Plugin-Dependencies:xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Plugin-Class>com.your.plugin.MainClass</Plugin-Class>
<Plugin-Id>${project.groupId}</Plugin-Id>
<Plugin-Version>${project.version}</Plugin-Version>
<Plugin-Requires>0.5.0</Plugin-Requires>
<Plugin-Description>A demo plugin</Plugin-Description>
<Plugin-Provider>Shizuki Natsuki</Plugin-Provider>
<Plugin-License>GNU General Public License version 3</Plugin-License>
<Plugin-Dependencies></Plugin-Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>groovy
jar {
manifest {
attributes(
'Plugin-Class': 'com.your.plugin.MainClass',
'Plugin-Id': project.group,
'Plugin-Version': project.version,
'Plugin-Requires': '0.5.0',
'Plugin-Description': 'A demo plugin',
'Plugin-Provider': 'Shizuki Natsuki',
'Plugin-License': 'GNU General Public License version 3',
'Plugin-Dependencies': ''
)
}
}kotlin
tasks.jar {
manifest {
attributes(
"Plugin-Class" to "com.your.plugin.MainClass",
"Plugin-Id" to project.group,
"Plugin-Version" to project.version,
"Plugin-Requires" to "0.5.0",
"Plugin-Description" to "A demo plugin",
"Plugin-Provider" to "Shizuki Natsuki",
"Plugin-License" to "GNU General Public License version 3",
"Plugin-Dependencies" to ""
)
}
}参数描述
| 参数 | 描述 |
|---|---|
| Plugin-Class | 插件主类 |
| Plugin-Id | 插件 ID,必须为包名。示例:com.your.plugin |
| Plugin-Version | 插件版本 |
| Plugin-Requires | 所需的 Korrent 版本 |
| Plugin-Description | 插件描述 |
| Plugin-Provider | 插件作者 |
| Plugin-License | 插件许可证, 必须为 GNU General Public License version 3 |
| Plugin-Dependencies | 插件依赖,请见 PF4J Docs |
事件监听
作为示例, 这里通过监听 QBittorrentTagCreatedEvent 事件来使当标签创建时打印标签名。
java
import com.google.common.eventbus.Subscribe;
import moe.shizuki.korrent.bittorrent.event.QBittorrentTagCreatedEvent;
import moe.shizuki.korrent.plugin.annotation.KorrentEvent;
@KorrentEvent
public class OnEvent {
@Subscribe
public void onEvent(QBittorrentTagCreatedEvent event) {
System.out.println(event.getTag());
}
}kotlin
import com.google.common.eventbus.Subscribe
import moe.shizuki.korrent.bittorrent.event.QBittorrentTagCreatedEvent
import moe.shizuki.korrent.plugin.annotation.KorrentEvent
@KorrentEvent
class OnEvent {
@Subscribe
fun onEvent(event: QBittorrentTagCreatedEvent) {
println(event.tag)
}
}