第三方开发者开放接口
pykt.py 是一个独立脚本,供其他模组获取纯净的 PyKt 运行时,导入后自己注入 API 来构建脚本环境。导入方式和用法与标准 PyKt 完全一致。
纯净运行时 vs 污染运行时
create_runtime() 返回的是一个纯净运行时——只包含 LittleKt 语言本身,没有任何 Minecraft 相关的 API。
LittleKtScripts 内部使用的脚本环境则是在纯净运行时基础上,注入了 serverApi、clientSys、serverSys、globals、db、println、require、event 等模组 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()