LoginSignup
2
0

More than 5 years have passed since last update.

ScalaでNukkitプラグイン

Posted at

前置き

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

今回はSampleというプラグインを作ります。
nameをsampleに
locationは好きなディレクトリを選択してください
new project2

Nukkitの読み込み

intellijのロードが終わったら、ファイルマネージャーを開きSample/libsディレクトリを作成し、nukkit-1.0-SNAPSHOT.jarをコピーして持ってきます。
nukkit load

Project Structure→models→Sample(プロジェクト名)→Dependencies→+ボタン→JARs or directories→nukkit-1.0-SNAPSHOT.jar
mdaar-bbrfs.gif

SBTの準備

Sample/build.sbt

Sample/build.sbt
unmanagedBase := baseDirectory.value / "libs"

を書き足します。

Sample/project/plugins.sbtを作成し

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を作成下のコードをコピペします。

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

作成したmy.pluginを左クリック→Scala Class
plugin.ymlに書いたmain:my.plugin.SampleよりSampleを入力
nukkit plugin prepare2

Sample.scalaに以下をコピペ

Sample\src\main\scala\my\plugin\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.12Sample-assembly-0.1.jarが生成されます。
Sample-assembly-0.1.jarをコピーしnukkitのpluginsフォルダにぶちこみ
サーバーを起動します。

チャット欄にHello,Worldと表示されれば成功です👍
nukkit_sample.png


  1. nukkitとはMinecraft Be向けのサーバーソフトウェアです。nukkitの公式サイト 

2
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
2
0