Create your first plugin
Import dependencies
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")Create plugin main class
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)Add plugin manifest
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 ""
)
}
}Parameter description
| Parameter | Description |
|---|---|
| Plugin-Class | Plugin main class. |
| Plugin-Id | Plugin id. Must be your package name. e.g. com.your.plugin |
| Plugin-Version | Plugin version. |
| Plugin-Requires | Required Korrent version. |
| Plugin-Description | Plugin description. |
| Plugin-Provider | Plugin author. |
| Plugin-License | Plugin license. Must be GNU General Public License version 3. |
| Plugin-Dependencies | Plugin dependencies. See PF4J Docs. |
Listen for event
As an example, here is listening to QBittorrentTagCreatedEvent to print the tag when the tag is created
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)
}
}