Kytale

Kytale

Hytale Kotlin 语言加载器 + 实用工具

图书馆

Kytale

用于 Hytale 服务器插件开发的 Kotlin 框架。

Kytale 打包了 Kotlin 运行时,并提供了一组惯用的 DSL,用于构建插件、游戏系统、UI、命令、事件、配置等——全部拥有一流的 Kotlin 支持。

在 GitHub 上查看源码和完整文档

✨ 特性

  • Kotlin 运行时 - stdlib、reflect、协程(2.2.0)、kotlinx.serialization
  • 事件 DSL - 使用具体化泛型的类型安全事件订阅
  • 命令 DSL - 支持异步/协程的结构化命令
  • 配置 DSL - 通过属性委托实现 JSON 配置
  • 调度器 DSL - 基于协程的任务调度
  • UI DSL - 编译期 UI 生成和交互元素
  • Hexweave - 用于玩家事件、命令、任务、ECS 系统的可选辅助层
  • 扩展 - 用于实体、向量、速度、目标锁定、伤害的实用工具

🛠️ 快速入门

Gradle 设置

将 Kytale 添加到你的 build.gradle.kts 文件中:

plugins {
    kotlin("jvm") version "2.2.0"
    kotlin("plugin.serialization") version "2.2.0"
    id("hytale-mod") version "0.+"
}

repositories {
    mavenCentral()
    maven("<a href="/linkout?remoteUrl=https%253a%252f%252fcursemaven.com%252f" target="_blank" rel="nofollow">https://cursemaven.com</a>")
    maven("<a href="/linkout?remoteUrl=https%253a%252f%252fmaven.hytale-modding.info%252freleases" target="_blank" rel="nofollow">https://maven.hytale-modding.info/releases</a>")
}

dependencies {
    compileOnly("curse.maven:kytale-PROJECTID:FILEID")
}

运行时依赖

将 Kytale 添加到你的 manifest.json 文件中:

{
  "Dependencies": {
    "AmoAster:Kytale": "*"
  }
}

示例插件

class MyPlugin(init: JavaPluginInit) : KotlinPlugin(init) {

    override fun setup() {
        super.setup()

        event<PlayerConnectEvent> { event ->
            logger.info { "Player connected: ${event.playerRef.uuid}" }
        }

        command("greet", "Greet the player") {
            executes { ctx ->
                ctx.sendMessage(Message.raw("Hello!"))
            }
        }
    }
}

📌 生命周期

  • 构造函数 - 设置基本状态
  • setup() - 注册事件、命令、UI
  • start() - 后初始化
  • shutdown() - 清理

📘 了解更多

完整的文档、项目结构、DSL 示例、UI 系统和高级用法可在 GitHub 上找到:https://github.com/briarss/Kytale/tree/main

📄 许可证

MIT 许可证