#前置き
Nukkit 1 のプラグインがkotlinで作成できると聞き「Scalaでもできるのでは?」と思い、試してみたら出来たのでメモ
完成品はこちらに
https://github.com/suinua/nukkit_scala_plugin
#環境
scala:2.12.7
sbt:1.2.3
#前提条件
nukkitでサーバーが建てられる
scalaの環境構築済み
intellij IDEをインストール済み
intellij IDEのScalaプラグインをインストール済み
#プロジェクトの作成
intellijを開き、scala→sbt→next
![new project](https://i.gyazo.com/d0a8fbbe259a6c52a5224e5b2b93657d.png,"new project")
今回はSample
というプラグインを作ります。
nameをsampleに
locationは好きなディレクトリを選択してください
![new project2](https://gyazo.com/35040d683e5ba67826d1f0b1eae10c9f.png,"new project2")
Nukkitの読み込み
intellijのロードが終わったら、ファイルマネージャーを開きSample/libs
ディレクトリを作成し、nukkit-1.0-SNAPSHOT.jar
をコピーして持ってきます。
![nukkit load](https://gyazo.com/2b8efd626a80f71e08a47c9adb956988.png,"nukkit load")
Project Structure→models→Sample(プロジェクト名)→Dependencies→+ボタン→JARs or directories→nukkit-1.0-SNAPSHOT.jar
#SBTの準備
Sample/build.sbt
に
unmanagedBase := baseDirectory.value / "libs"
を書き足します。
Sample/project/plugins.sbt
を作成し
resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7")
と書き込みます。
#nukkitプラグインのための準備
Sample\src\main\resources\plugin.yml
を作成下のコードをコピペします。
name: Sample #プラグインの名前
main: my.plugin.Sample #Mainクラスの場所
version: 0.0.1
author: suinua
api: ["1.0.0"]
Sample\src\main\scala
を右クリック→new→Package
plugin.yml
に書いたmain:my.plugin.Sample
よりmy.plugin
を入力
![nukkit plugin prepare](https://i.gyazo.com/5c4934b0c91d15ec7f1d0d96a51d3e71.png,"nukkit plugin prepare")
作成したmy.plugin
を左クリック→Scala Class
plugin.yml
に書いたmain:my.plugin.Sample
よりSample
を入力
![nukkit plugin prepare2](https://i.gyazo.com/0030961b861d942e5b75e6c1b1688d57.png,nukkit plugin prepare2")
Sample.scala
に以下をコピペ
package my.plugin
import cn.nukkit.event.EventHandler
import cn.nukkit.event.Listener
import cn.nukkit.event.player.PlayerJoinEvent
import cn.nukkit.plugin.PluginBase
class Sample extends PluginBase with Listener{
override def onEnable(): Unit = {
this.getServer.getPluginManager.registerEvents(this, this)
}
@EventHandler def onPlayerJoin(event: PlayerJoinEvent): Unit = {
event.getPlayer.sendMessage("Hello, World.")
}
}
jarにコンパイル
ターミナルを開きsbt assembly
を実行
場合によっては10分ぐらいかかります(最初だけかな?)
[success] Total time: ** s, completed ****/**/** **:**:**
とでたら成功です。
Sample\target\scala-2.12
にSample-assembly-0.1.jar
が生成されます。
Sample-assembly-0.1.jar
をコピーしnukkitのpluginsフォルダにぶちこみ
サーバーを起動します。
-
nukkitとはMinecraft Be向けのサーバーソフトウェアです。nukkitの公式サイト ↩