LoginSignup
3
0

More than 3 years have passed since last update.

ScalaでSpigotのプラグインを開発できるようになるまで

Last updated at Posted at 2019-10-09

SBTでプロジェクトを作成して、ScalaでSpigotのプラグインを開発できるようにするまでをやっていきます。

開発環境

  • IntelliJ IDEA w/ Scala Plugin
  • Windows 10
  • sbt 1.3.2

プロジェクト作成

IntelliJ IDEAを使っていますが、sbtと適当なテキストエディタのみでも可能だと思います。

sbtのプロジェクトを作成する

IntelliJ IDEAを起動し、Scalaのプラグインが導入済みであれば、新規プロジェクトのScalaの中にsbtがあると思うので、そこから作成します。

パッケージの依存関係を追加

build.sbt に下記を追加。

resolvers += "spigot-repo" at "https://hub.spigotmc.org/nexus/content/repositories/snapshots/"
resolvers += "bungeecord-repo" at "https://oss.sonatype.org/content/repositories/snapshots"
resolvers += Resolver.jcenterRepo
resolvers += Resolver.bintrayIvyRepo("com.eed3si9n", "sbt-plugins")
libraryDependencies += "org.spigotmc" % "spigot-api" % "1.14.4-R0.1-SNAPSHOT"

Fat Jarを出力するためにプラグインを追加する

Fat Jarを吐くためにsbt/sbt-assemblyを追加します。
project/plugins.sbt を作成し、下記を追加。

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10")

メインとなるクラスを作成

src/main/scala/ にパッケージと同じようになるようディレクトリを生成してクラスを追加します。

package com.example.plugin なら src/main/scala/com.example.plugin/ExamplePlugin.scala とかにする。

作成したメインクラスに下記を追加。

import org.bukkit.plugin.java.JavaPlugin

class ExamplePlugin extends JavaPlugin {
  override def onEnable(): Unit = {
    super.onEnable()
    getLogger.info("hello world")
  }
}

plugin.ymlを追加

src/main/resources/plugin.yml を作成し、編集します。
Plugin.yml | Spigot MCを参考に書くといいです。

name: ExamplePlugin
version: 1.0.0
main: com.example.plugin.ExamplePlugin
api-version: 1.14

mainにはJavaPluginを継承したクラスのパスを記述してください。

Jarを吐いてみる

一通り終わったら、sbt shellを起動し、 assembly を実行する。問題なく通れば target/scala-x.y/ にFat Jarが出力されます。

Spigotサーバにpluginを配置してロードすると、このプラグインが有効になった際に hello world とログ出力されたら成功です。

所感

今回の成果物はこちら(ekuinox/spigot-login-alert)です。サーバのログインイベントをDiscordのWebhookに投げています。

要はJavaで書かれたパッケージを利用してFat Jarを吐いただけなので、当たり前なのですがScalaをやった感覚はあまりなく、sbtの設定に時間を費やしたのみでした。

KotlinでSpigotを開発する記事はあったのですが、Scalaだと見つからなかったので、Scalaの勉強がてらにやってみようと思いメモを残すことにしました。

参考: 2017年のMinecraftプラグイン開発はKotlinで決まり!Kotlin導入方法!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0