脚本包界面
Katton 内置了一个游戏内界面来管理你的脚本包。在游戏里按 K 键(默认)就能打开——不用改配置文件。
你能做什么
在这个界面上你可以:
- 浏览所有已安装的脚本包(全局 + 世界)
- 一键启用/禁用单个脚本包
- 点击 Reload 按钮重载所有脚本
- 查看包的详细信息:名称、ID、版本、作者、描述、作用域
重载进度条会渲染在这个页面的最上层,所以你始终知道正在发生什么。
可用性规则
不是所有包在所有地方都能编辑:
- 主菜单:只显示全局包,可以编辑
- 世界中:全局包会显示但处于锁定状态(只读)——要去主菜单管理。世界包在世界内完全可编辑。
- 服务器同步包(从多人服务器同步来的):始终只读
包清单
每个脚本包需要一个 manifest.json 才能被 Katton 识别。所有字段都是可选的——Katton 会为缺失的字段自动填上合理的默认值:
json
{
"name": "My Awesome Pack",
"id": "my_pack",
"version": "1.0.0",
"authors": ["YourName"],
"description": "A cool Katton script pack!",
"enabled": true
}| 字段 | 默认值 | 说明 |
|---|---|---|
name | 同 id | 人类可读的包名称 |
id | 文件夹/jar 文件名 | 唯一包标识符 |
version | "unknown" | 语义化版本 |
authors | [] | 作者名列表 |
description | "" | 包的功能描述 |
enabled | true | true = 激活,false = 重载时跳过 |
状态文件(.kattonpack.state.json)
当你在界面上切换包的启用状态时,Katton 会在 manifest 旁边写入一个本地状态文件:
json
{ "enabled": false }这个文件的优先级高于 manifest.json 里的 enabled 字段。删掉状态文件即可恢复 manifest 的默认设置。JAR 包的状态文件保存为 <包名>.jar.state.json,放在 jar 旁边。
包类型
Katton 支持两种包格式:
| 格式 | 存在形式 | 界面可编辑? |
|---|---|---|
| 目录 | kattonpacks/ 下包含 .kt 文件的文件夹 | 是——开关、触发重载 |
| JAR | kattonpacks/ 下的 .jar 文件,manifest 在根目录或 META-INF/katton/ | 只能开关——内容已编译 |
用代码控制包开关
你也可以用 Kotlin 代码查询和切换包状态:
kotlin
// manifest.json controls whether a pack is enabled.
// Toggle it from the in-game UI (press K) without editing files!
// Or set it from scripts:
import top.katton.pack.ScriptPackManager
@ServerScriptEntrypoint
fun main() {
// List all packs visible in the UI
val packs = ScriptPackManager.listLocalPacksForGui()
packs.forEach { pack ->
println("${pack.name}: enabled=${pack.enabled}")
}
}从 UI 触发重载
在包管理界面上点击 Reload:
- 调用
Katton.reloadScripts()重载服务端脚本 - 调用
Katton.reloadClientScriptsAsync()重载客户端脚本 - 显示进度覆盖层,让你看着它跑完
- 重载进行中会禁用 Reload 按钮(防止重复触发)
重载完成后按钮恢复可用。就算你关掉了界面,进度覆盖层仍会在 HUD 上显示。
背景可读性优化
包管理界面在列表和详情区域后面渲染了半透明深色背景面板,这样即使在明亮的游戏场景中文字也能轻松阅读。再也不用眯着眼睛在雪原上看白字了!
