【Spigot】Bukkitプラグインの作り方講座 - 他のプラグインとの連携
外部プラグインとの連携
例えば、「経済プラグインと連携したい」と言った場合など、
プラグインなどをAPIとして利用して連携したい場合があります。
この場合は、
「プラグインを作る」でプロジェクトを作成したときに、
サーバーのJarファイルを外部JARとして読み込んでいましたが、
全く同じ方法で、プラグインを外部JARとして読み込むことで、
作成するプラグインの中で、
読み込んだプラグインのクラスなどが扱えるようになります。
ただしこの方法では、作成するプラグインに、
読み込んだライブラリを含むことができません。
そのため、サーバー内で他のプラグインと連携したい場合に使うことができます。
IntelliJ IDEAでの設定(Gradle)
プロジェクトのフォルダ内にlibフォルダを作成します。
作成したlibフォルダの中に連携したいプラグインのJarファイルを入れます。
build.gradleファイルのdependencies
内に、
compileOnly fileTree(dir: 'lib', include: '*jar')
を追加します。
例:
dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' compileOnly 'org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT' compileOnly fileTree(dir: 'lib', include: '*jar') }
build.gradleを編集したら、
右下に「変更をインポート」が出てくるので押してください。
これでプラグインと連携することができますが、
IDEで編集する際にプラグインが見つからずエラーになってしまいます。
なので次は、プロジェクトにライブラリーを追加します。
メニューバー(ウィンドウ上部)の ファイル > プロジェクト構造... を押します。
左のメニューの ライブラリー を押して、一覧の上の + から Java を選択します。
libフォルダに入れたJarファイルを一つ選択します。
モジュールの選択という画面になるのでOKを押します。
複数のJarファイルがある場合は以上の作業を繰り返します。
パッケージ等を見つけることができるようになりました。
インポートのあたりに赤文字が出る場合は、
赤文字にカーソルを合わせ、
「Add library '~' to classpath」を押してください。
必須プラグインの設定
作成するプラグインが連携先のプラグインを必須としている場合、
それをplugin.ymlに記載することで、
必須プラグインがない場合はプラグインを読み込まないようにできます。
plugin.ymlにdepend: [Plugin]
と追加すると、
「Plugin」というプラグインを必須プラグインとすることができます。
読み込まれなかったプラグインは/plで見ると赤く表示されています。
プラグインを読み込む順序
プラグインを扱えても、読み込む順番などが求められる場合があります。
例えば連携先のプラグインよりも、作成するプラグインが先に読み込まれてしまうと、
その時点ではまだ連携先のプラグインが読み込まれていないので、連携ができません。
そういったことを回避するために、
plugin.ymlでプラグインを読み込む順序を指定できます。
softdepend: [Plugin]
で「Plugin」というプラグインを先に読み込みます。
loadbefore: [Plugin]
で「Plugin」というプラグインを後で読み込みます。
また、softdependやloadbeforeだけ記載しても、
必須プラグインとはなりません。