Scala
minecraft
minecraft-pe
nukkit
Minecraft-Bedrock


前置き

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の公式サイト