2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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](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
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](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に以下をコピペ

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?