本地动作
替换菜单要保留原版导航、连接、退出和确认功能,因此 ChaUI Script 为真实运行的 display.mode: vanilla 页面提供了一组客户端本地动作。它们直接使用当前 Minecraft 客户端能力,不会转交给 Bukkit 命令或页面 script_event;普通 screen、HUD、world 和 container 页面不能把这些动作当作通用客户端函数调用。
动作速查
| 中文写法 | 英文写法 | 参数 | 允许上下文 | 成功结果 | 编辑器预览 |
|---|---|---|---|---|---|
打开原版页面(target[, bypassReplacement]) | openVanillaPage(...) | 稳定目标字符串;可选布尔值 | 原版菜单真实页面 | 在目标可主动创建且当前上下文允许时打开;默认正常判断替换,true 本次强制原版 | 只校验,不切换页面 |
加入服务器(address) | joinServer(address) | 主机 或 主机:端口 字符串 | 原版菜单真实页面 | 使用 Minecraft 地址解析并进入连接页面 | 不连接 |
断开服务器() | disconnectServer() | 无 | 已连接服务器的真实页面 | 按 Minecraft 流程断开当前连接 | 不断开 |
退出游戏() | quitGame() | 无 | 原版菜单真实页面 | 正常退出游戏 | 不退出 |
确认原版操作() | confirmVanillaAction() | 无 | 仅 confirm 目标 | 对当前原版确认请求选择“确认” | 不确认 |
close() / 关闭() | 同左 | 无 | 原版菜单真实页面 | 按当前目标返回、取消或继续游戏 | 只结束预览页 |
动作失败时不会猜测替代行为:目标无效、上下文不允许、地址无效或当前无法断开时,页面保持在安全状态并给出诊断。只有动作真正切换页面、连接状态或退出状态后,当前脚本才会立即终止,也就是脚本立即结束。
打开原版页面
打开原版页面("options")
打开原版页面("options", false)第二个参数缺省或为 false 时,目标按正常流程解析。如果活动页面包含有有效的 options 替换页,就打开 ChaUI 页面;否则显示 Minecraft 原版设置页。
打开原版页面("options", true)true 只绕过这一次打开。它适合在自定义设置页中提供“使用原版设置”的保险入口,不会删除或永久禁用替换页。
target 必须来自稳定目标目录,第二个参数必须是真正的布尔值,字符串 "true" 不会被当作布尔值。
稳定目标不等于都能凭空创建
27 个稳定目标都可以用于声明“当 Minecraft 原本准备显示这类页面时进行替换”,但其中一部分依赖原版已经持有的任务或数据,不能由脚本主动创建:
edit_world、edit_server需要当前待编辑的世界或服务器记录;connecting、disconnected、loading_world、progress需要正在进行的连接、加载或进度任务;confirm、message需要原版提供确认回调或消息回调。
对这些上下文目标调用 打开原版页面(...) 会被安全拒绝,当前页面保持不变。请让 Minecraft 的真实流程触发它们;需要保险入口时,打开能够主动创建的父页面,例如 singleplayer、multiplayer 或 options。
其他导航也可能受当前环境限制,例如只有进入世界后才能打开 pause_menu。动作失败时不会消耗后续替换设置,也不会销毁当前页面。
加入固定服务器
加入服务器("play.example.com:25565")地址继续由 Minecraft 解析,随后使用原版连接任务和连接页面。可以省略默认端口,例如 加入服务器("play.example.com")。连接失败后的错误信息和返回关系仍由原版连接流程提供。
页面作者不应把账号、密码或额外命令拼进地址。完整标题菜单见固定服务器入口。
断开与退出
断开服务器()
退出游戏()断开服务器() 适合游戏内暂停菜单的“离开服务器”按钮;当前没有可断开的连接时不会伪造一次断开。断开后的落点继续遵循当前 Minecraft 版本和连接来源的原版流程,可能是标题页或多人游戏页。退出游戏() 是客户端退出动作,应放在标题页或明确的退出按钮上。
确认与取消
confirm 目标代表一个真实的原版确认请求:
events:
leftClick: "确认原版操作()"只有 display.vanilla.target: confirm 的真实替换页可以调用该动作。其他页面调用会被拒绝,因为不存在可以确认的原版请求。
确认页的取消按钮使用:
events:
leftClick: "close()"在 confirm 上,close() 明确按取消处理,不会把确认页直接丢弃而不给原版流程结果。
close() 会根据目标返回
| 当前目标 | close() 结果 |
|---|---|
pause_menu | 继续游戏 |
| 设置或其他子页面 | 返回保留的原版父页面 |
confirm | 按取消处理 |
title_menu | 不会关闭成没有 Screen 的空状态 |
connecting、loading_world、progress | 仅在 Minecraft 原本允许取消时取消 |
成功动作会终止当前脚本
下面写法中的第二行不会执行:
打开原版页面("options")
log("这行不会在成功导航后执行")加入服务器、断开服务器、退出游戏、确认操作和成功的 close() 同样如此。这样可以避免旧页面已经被销毁后,脚本仍继续访问它的组件或状态。
预览只验证,不执行危险动作
隔离预览会抑制打开页面、加入服务器、断开、退出和确认动作。布局与脚本可以保存,但这些动作必须在真实替换页中验收。
猹件开发组