通过Scala编写Nukkit插件

开场白

听说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插件

创建项目

new project
new project2

Nukkit加载

nukkit load
mdaar-bbrfs.gif

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"]
nukkit plugin prepare
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_sample.png
nukkit是专为Minecraft BE设计的服务器软件。nukkit的官方网站。
广告
将在 10 秒后关闭
bannerAds