Skip to content
On this page

脚本包界面

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
}
字段默认值说明
nameid人类可读的包名称
id文件夹/jar 文件名唯一包标识符
version"unknown"语义化版本
authors[]作者名列表
description""包的功能描述
enabledtruetrue = 激活,false = 重载时跳过

状态文件(.kattonpack.state.json

当你在界面上切换包的启用状态时,Katton 会在 manifest 旁边写入一个本地状态文件:

json
{ "enabled": false }

这个文件的优先级高于 manifest.json 里的 enabled 字段。删掉状态文件即可恢复 manifest 的默认设置。JAR 包的状态文件保存为 <包名>.jar.state.json,放在 jar 旁边。

包类型

Katton 支持两种包格式:

格式存在形式界面可编辑?
目录kattonpacks/ 下包含 .kt 文件的文件夹是——开关、触发重载
JARkattonpacks/ 下的 .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

  1. 调用 Katton.reloadScripts() 重载服务端脚本
  2. 调用 Katton.reloadClientScriptsAsync() 重载客户端脚本
  3. 显示进度覆盖层,让你看着它跑完
  4. 重载进行中会禁用 Reload 按钮(防止重复触发)

重载完成后按钮恢复可用。就算你关掉了界面,进度覆盖层仍会在 HUD 上显示。

背景可读性优化

包管理界面在列表和详情区域后面渲染了半透明深色背景面板,这样即使在明亮的游戏场景中文字也能轻松阅读。再也不用眯着眼睛在雪原上看白字了!