【插件发布】Kotlin基础库、末影箱插件、全服箱子插件
本文使用markdown渲染,如果无法显示,请检查你的网络> 自己写了一些我的世界插件,虽然都很简单,但也发出来吧,就当是记录学习历程咯
>
> 所有的插件都可以运行在paper核心下,目前计划只编译最新版,需要特定版本可以留言
## Kotlin 支持库
> 代码就几行,找资源和写Gradle麻烦
Java写我的世界插件?什么年代了,自己拿来玩的项目肯定用 `Kotlin` 呀!
但是我的世界并没有内置 `Kotlin` 的 SDK,而在每个插件里都塞进SDK编译结果就太大了
这个插件提供常用的 kotlin 官方库,包含:
```
org.jetbrains.kotlin:kotlin-stdlib
org.jetbrains.kotlin:kotlin-stdlib-jdk8
org.jetbrains.kotlin:kotlin-stdlib-jdk7
org.jetbrains.kotlin:kotlin-reflect
org.jetbrains.kotlinx:kotlinx-coroutines-core
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm
org.jetbrains.kotlinx:kotlinx-coroutines-jdk8
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm
org.jetbrains.kotlinx:kotlinx-serialization-cbor-jvm
org.jetbrains.kotlinx:atomicfu-jvm
org.jetbrains.kotlinx:kotlinx-datetime-jvm
```
目前我使用的版本如下
```kotlin
object Versions {
const val kotlin = "1.6.21"
const val coroutines = "1.6.2"
const val serialization = "1.3.3"
const val atomicfu = "0.17.3"
const val datetime = "0.3.2"
}
```
下载链接:最下面(链接竟然解析不出来,我也是服了,老是被论坛自带的链接解析器截断)
也可以在Maven仓库找到这个工件:host.skyone.mc:paper-kotlin:0.1.0
源代码:[https://github.com/skyone-wzw/paper-kotlin]
https://repo1.maven.org/maven2/host/skyone/mc/paper-kotlin/0.1.0/paper-kotlin-0.1.0.jar
https://github.com/skyone-wzw/paper-kotlin/releases/download/v0.1.0/paper-kotlin-0.1.0.jar
本文使用markdown渲染,如果无法显示,请检查你的网络
末影箱插件
## 末影箱插件
功能:清除你的等级,打开一次末影箱
命令:`/ec` 或 `/EnderChest`
下载链接:最下面
源代码:
```kotlin
package host.skyone.mc.plugin
import host.skyone.mc.plugin.ec.CommandHandle
import org.bukkit.Bukkit
import org.bukkit.plugin.java.JavaPlugin
class EnderChest : JavaPlugin() {
override fun onEnable() {
Inner.set(this)
Bukkit.getPluginCommand("ec")?.setExecutor(CommandHandle())
}
// 后面的代码很离谱,bukkit对kotlin的支持不太行
companion object {
val INSTANCE: EnderChest
get() = Inner.get()
}
private object Inner {
var INSTANCE: EnderChest? = null
fun set(instance: EnderChest) {
if (INSTANCE == null) {
INSTANCE = instance
}
}
fun get(): EnderChest {
return INSTANCE?: throw NullPointerException()
}
}
}
```
```kotlin
package host.skyone.mc.plugin.ec
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
class CommandHandle : CommandExecutor {
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
if (sender is Player) {
sender.level = 0
sender.openInventory(sender.enderChest)
return true
}
return false
}
}
```
```yml
name: EnderChest
version: '${version}'
main: host.skyone.mc.plugin.EnderChest
api-version: 1.19
commands:
ec:
aliases:
- EnderChest
usage: "/ec | EnderChest"
description: "Pay all levels to open your ender chest"
```
good {:5_209:}
页:
[1]