Skip to content

第三方开发者开放接口

pykt.py 是一个独立脚本,供其他模组获取纯净的 PyKt 运行时,导入后自己注入 API 来构建脚本环境。导入方式和用法与标准 PyKt 完全一致。

纯净运行时 vs 污染运行时

create_runtime() 返回的是一个纯净运行时——只包含 LittleKt 语言本身,没有任何 Minecraft 相关的 API。

LittleKtScripts 内部使用的脚本环境则是在纯净运行时基础上,注入serverApiclientSysserverSysglobalsdbprintlnrequireevent 等模组 API,由此得到的叫污染运行时

其他模组拿到纯净运行时后,可以按需注入自己的 API,构建自己的脚本环境。

导入方式

pykt.py 复制到你的模组脚本目录,然后:

python
from pykt import create_runtime

脚本会自动检测当前运行环境(服务端/客户端),加载对应的 LittleKtScripts 模块。

用法

create_runtime() 返回纯净的 PyKt 解释器实例,API 与标准 PyKt 完全一致。具体用法参见 PyKt 官方示例

限制说明

由于返回的是纯净运行时,以下 LittleKtScripts 内置 API 均不可用

不可用说明
serverApi / clientSys / serverSys无模组交互能力
globals / db无跨脚本 / 持久化存储
println / require / event无输出 / 无跨容器加载 / 无事件访问

纯净运行时本身只能执行语言层面的运算。开发者需要向运行时注入变量和函数,构建出适合自己模组的脚本环境后,才是完全体。

脚本源码

将以下代码保存为 pykt.py,放入模组脚本目录即可:

python
# -*- coding: utf-8 -*-

__all__ = ['create_runtime']

env = "unknown"
api = None

try:
    import mod.server.extraServerApi as api
    env = "server"
except ImportError:
    pass

try:
    import mod.client.extraClientApi as api
    env = "client"
except ImportError:
    pass

if env == "unknown":
    raise ImportError("本脚本只能运行在 ModSDK 环境下!")
if env == "server":
    module_path = "LittleKtScripts.server.LittleKtServer"
if env == "client":
    module_path = "LittleKtScripts.client.LittleKtClient"

module = api.ImportModule(module_path)
if module is None:
    raise ImportError("请先装载前置模组: LittleKtScripts!")

create_runtime = module.get_pykt_create_runtime_api()