Skip to content
On this page

本地动作

替换菜单要保留原版导航、连接、退出和确认功能,因此 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() / 关闭()同左原版菜单真实页面按当前目标返回、取消或继续游戏只结束预览页

动作失败时不会猜测替代行为:目标无效、上下文不允许、地址无效或当前无法断开时,页面保持在安全状态并给出诊断。只有动作真正切换页面、连接状态或退出状态后,当前脚本才会立即终止,也就是脚本立即结束。

打开原版页面

text
打开原版页面("options")
打开原版页面("options", false)

第二个参数缺省或为 false 时,目标按正常流程解析。如果活动页面包含有有效的 options 替换页,就打开 ChaUI 页面;否则显示 Minecraft 原版设置页。

text
打开原版页面("options", true)

true 只绕过这一次打开。它适合在自定义设置页中提供“使用原版设置”的保险入口,不会删除或永久禁用替换页。

target 必须来自稳定目标目录,第二个参数必须是真正的布尔值,字符串 "true" 不会被当作布尔值。

稳定目标不等于都能凭空创建

27 个稳定目标都可以用于声明“当 Minecraft 原本准备显示这类页面时进行替换”,但其中一部分依赖原版已经持有的任务或数据,不能由脚本主动创建:

  • edit_worldedit_server 需要当前待编辑的世界或服务器记录;
  • connectingdisconnectedloading_worldprogress 需要正在进行的连接、加载或进度任务;
  • confirmmessage 需要原版提供确认回调或消息回调。

对这些上下文目标调用 打开原版页面(...) 会被安全拒绝,当前页面保持不变。请让 Minecraft 的真实流程触发它们;需要保险入口时,打开能够主动创建的父页面,例如 singleplayermultiplayeroptions

其他导航也可能受当前环境限制,例如只有进入世界后才能打开 pause_menu。动作失败时不会消耗后续替换设置,也不会销毁当前页面。

加入固定服务器

text
加入服务器("play.example.com:25565")

地址继续由 Minecraft 解析,随后使用原版连接任务和连接页面。可以省略默认端口,例如 加入服务器("play.example.com")。连接失败后的错误信息和返回关系仍由原版连接流程提供。

页面作者不应把账号、密码或额外命令拼进地址。完整标题菜单见固定服务器入口

断开与退出

text
断开服务器()
退出游戏()

断开服务器() 适合游戏内暂停菜单的“离开服务器”按钮;当前没有可断开的连接时不会伪造一次断开。断开后的落点继续遵循当前 Minecraft 版本和连接来源的原版流程,可能是标题页或多人游戏页。退出游戏() 是客户端退出动作,应放在标题页或明确的退出按钮上。

确认与取消

confirm 目标代表一个真实的原版确认请求:

yaml
events:
  leftClick: "确认原版操作()"

只有 display.vanilla.target: confirm 的真实替换页可以调用该动作。其他页面调用会被拒绝,因为不存在可以确认的原版请求。

确认页的取消按钮使用:

yaml
events:
  leftClick: "close()"

confirm 上,close() 明确按取消处理,不会把确认页直接丢弃而不给原版流程结果。

close() 会根据目标返回

当前目标close() 结果
pause_menu继续游戏
设置或其他子页面返回保留的原版父页面
confirm按取消处理
title_menu不会关闭成没有 Screen 的空状态
connectingloading_worldprogress仅在 Minecraft 原本允许取消时取消

成功动作会终止当前脚本

下面写法中的第二行不会执行:

text
打开原版页面("options")
log("这行不会在成功导航后执行")

加入服务器、断开服务器、退出游戏、确认操作和成功的 close() 同样如此。这样可以避免旧页面已经被销毁后,脚本仍继续访问它的组件或状态。

预览只验证,不执行危险动作

隔离预览会抑制打开页面、加入服务器、断开、退出和确认动作。布局与脚本可以保存,但这些动作必须在真实替换页中验收。