找回密码
 注册SCIFIFANS!
首页 游戏 沙盒 Minecraft 【插件发布】Kotlin基础库、末影箱插件、全服箱子插件 ...

【插件发布】Kotlin基础库、末影箱插件、全服箱子插件

3
回复
2224
查看
[ 复制链接 ]

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
<

用邮箱/用户名来登录sci-fifans!

您需要 登录 才可以下载或查看,没有账号?注册SCIFIFANS!

x
本文使用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]


  1. https://repo1.maven.org/maven2/host/skyone/mc/paper-kotlin/0.1.0/paper-kotlin-0.1.0.jar
  2. https://github.com/skyone-wzw/paper-kotlin/releases/download/v0.1.0/paper-kotlin-0.1.0.jar
复制代码



使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
本文使用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"
```




ender-chest-0.1.0.jar (5.08 KB, 下载次数: 1)






使用道具 举报

  • TA的每日心情
    郁闷
    2024-11-22 16:10
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    19

    主题

    75

    回帖

    2168

    积分

    Judgement

    世界第一公主殿下

    积分
    2168
    QQ

    good
    以最初的声音,追寻未来的梦

    使用道具 举报

    该用户从未签到

    10

    主题

    144

    回帖

    1万

    积分

    LV.6

    (总的来说是个活人)

    积分
    10269
    如果我选择一种信仰,而你选择另一种,那我们之间必定会展开战斗。不是你杀死我,就是我杀死你。也许来场决斗,最好的是我们不分胜负,双双战死。最可怕的是相互妥协,那等于是说我们双方都背叛了自己内心的理想。

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册SCIFIFANS!

    本版积分规则