内置 API
LittleKt 脚本中可直接使用的预注入变量和方法。语法见 语言文档。
serverSys
服务端系统相关的数据和能力。
属性
| 属性 | 类型 | 说明 |
|---|---|---|
serverSys.nameSpace | String | 引擎命名空间 |
serverSys.systemName | String | 引擎系统名称 |
serverSys.levelId | Int | 当前关卡 ID |
serverSys.i
返回插件主类 LittleKtServer 实例,可直接调用所有 ServerSystem 方法:
kotlin
// 创建实体
serverSys.i.CreateEngineEntityByTypeStr("minecraft:zombie", (0, 65, 0), (0, 0), 0)
// 销毁实体
serverSys.i.DestroyEntity(entityId)
// 向客户端发消息
serverSys.i.NotifyToClient(playerId, "ServerMsg", args)clientSys
与玩家客户端交互,可弹窗或触发震动。
clientSys.createMsgbox(playerId, message)
向指定玩家弹出提示框,仅有一个确定按钮。
| 参数 | 类型 | 说明 |
|---|---|---|
playerId | String | 目标玩家 ID |
message | String | 弹窗内容 |
kotlin
clientSys.createMsgbox(playerId, "欢迎来到服务器!")clientSys.createConfirmbox(playerId, message, callback)
弹出确认框,有确认和取消两个按钮。玩家点击后触发回调。
| 参数 | 类型 | 说明 |
|---|---|---|
playerId | String | 目标玩家 ID |
message | String | 弹窗内容 |
callback | Function | 回调函数,参数为 Boolean(true=确认,false=取消) |
kotlin
clientSys.createConfirmbox(playerId, "确定要传送吗?", fun(ok) {
if (ok) {
println("玩家确认")
} else {
println("玩家取消")
}
})clientSys.createInputbox(playerId, message, callback)
弹出输入框。玩家输入后触发回调。
| 参数 | 类型 | 说明 |
|---|---|---|
playerId | String | 目标玩家 ID |
message | String | 输入提示 |
callback | Function | 回调函数,参数为 String(玩家输入内容) |
kotlin
clientSys.createInputbox(playerId, "请输入昵称:", fun(text) {
println("玩家输入:$text")
})clientSys.vibrateDevice(playerId, milliseconds)
触发玩家设备震动。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
playerId | String | — | 目标玩家 ID |
milliseconds | Int | 300 | 震动时长(毫秒),iOS 无效 |
kotlin
clientSys.vibrateDevice(playerId, 500)serverApi
完整的 ModSDK 服务端 API 入口。所有引擎组件都通过 serverApi.GetEngineCompFactory() 创建:
kotlin
// 操作玩家
val comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.SetPlayerMovable(false)
// 放置方块
val blockComp = serverApi.GetEngineCompFactory().CreateBlockInfo(serverSys.levelId)
blockComp.SetBlockNew((0, 65, 0), ["name" to "minecraft:stone", "aux" to 0], 0, 0, true)
// 执行命令
val cmdComp = serverApi.GetEngineCompFactory().CreateCommand(serverSys.levelId)
cmdComp.SetCommand("/time set day")
// 设置天气
val weatherComp = serverApi.GetEngineCompFactory().CreateWeather(serverSys.levelId)
weatherComp.SetRaining(1.0, 600)组件工厂方法包括 CreatePlayer、CreateItem、CreateGame、CreateBlockInfo、CreateCommand、CreateWeather、CreateTime、CreateDimension、CreateEffect、CreateExp、CreateFly、CreateMsg、CreateName、CreateAttr、CreateProjectile 等几十种。具体用法见 玩法示例。
serverApi 上还有几个顶层函数:
| 函数 | 说明 |
|---|---|
serverApi.GetPlayerList() | 获取所有在线玩家 ID 列表 |
serverApi.GetEngineActor() | 获取所有已加载实体 |
serverApi.GenerateColor(name) | 生成颜色码,如 "RED"、"GREEN"、"BLUE" |
serverApi.GetMinecraftEnum() | 获取枚举值(EnchantType、EffectType 等) |
serverApi.GetEngineCompFactory() | 获取组件工厂 |
println(message)
向聊天栏输出灰字提示,全服可见。
kotlin
println("Hello World")
println("玩家坐标:$x, $y, $z")globals
跨脚本共享的全局 Map。一个脚本写入,其他脚本可以读取。服务器重启后清空。
kotlin
// 写入
globals["score"] = 100
globals["players"] = ["Steve", "Alex"]
// 读取
val score = globals["score"]
if (score == null) {
globals["score"] = 0
}db
持久化键值存储,数据保存在世界自定义数据中,服务器重启后仍然存在。
kotlin
// 写入
db["spawn_x"] = 100
db["spawn_z"] = 200
// 读取(不存在返回 null)
val x = db["spawn_x"]
// 带默认值
val y = db.get("spawn_y", 64)
// 删除
db.delete("spawn_x")
// 获取全部数据
val all = db.get_all()| 方法 | 说明 |
|---|---|
db["key"] | 读取,不存在返回 null |
db["key"] = value | 写入,自动保存 |
db.get(key, default) | 读取,不存在返回 default |
db.delete(key) | 删除指定 key |
db.get_all() | 获取全部数据 |
db.save() | 手动保存 |
与
globals的区别:globals在内存中,重启清空;db持久化到世界数据,重启不丢。
require(x, y, z, slot, dm)
加载指定容器槽位中书里的代码作为模块执行,返回模块对象。相同位置的模块只加载一次(有缓存)。
模块内定义的顶层变量和函数会作为导出符号,供外部通过 . 语法访问:
kotlin
// 假设 (100,64,100) 处箱子第 0 格的书中定义了:
// val version = 1
// fun greet(name) = "Hello, $name"
val mod = require(100, 64, 100, 0, 0)
println(mod.version) // 1
println(mod.greet("World")) // Hello, World| 参数 | 类型 | 说明 |
|---|---|---|
x | Int | 容器 X 坐标 |
y | Int | 容器 Y 坐标 |
z | Int | 容器 Z 坐标 |
slot | Int | 槽位编号(0 起始) |
dm | Int | 维度 ID(0=主世界) |
其他工具
| 变量 | 说明 |
|---|---|
json | JSON 编解码:json.dumps(obj) / json.loads(str) |
uuid | 唯一 ID 生成:uuid.uuid4().hex |
type(x) | 返回值的类型名称字符串 |
