通过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插件
创建项目
Nukkit加载
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.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的官方网站。