背包投影
背包投影让玩家在云界面画面里搬物品:上面是仓库的格子,下面是自己的背包与快捷栏,物品可以在两边之间拖来拖去。拿在手上的物品会跟着游标走,并显示数量,就像在原版箱子里一样。

有三种用法:
| 用法 | 适合谁 | 要不要写程序 |
|---|---|---|
| A. 投影任何仓库箱子 | 末影箱、背包插件、公会或领地仓库 | 不用,改设定文件 |
| B. 云公会仓库 | 装了云公会的服务器 | 不用,直接可用 |
| C. 插件开发者 | 自己写插件 | 要 |
怎么操作
| 操作 | 效果 |
|---|---|
| 左键 | 拿起整叠;手上有东西时放下(同种物品叠上去,不同种互换) |
| 右键 | 拿起一半;手上有东西时放下一个 |
| Shift + 左键 | 直接移到另一边(仓库 ↔ 背包) |
| 按住拖到别格再放开 | 放到那一格 |
- 拿着的物 品跟着游标,显示数量。
- 关闭画面时手上还拿着东西:放回原来的位置;放不回去就进背包,背包也满了就掉在脚边。不会凭空消失。
用法 A:投影任何仓库箱子
和 箱子界面转接 一样写 proxy:,只要多加一行 storage: true。
先试试
管理员输入 /cui proxydemo storage,会打开一个示范仓库(标题「雲介面倉庫示範」),CloudUI 立刻把它投影成画面。对应的画面文件是 screens/proxy_storage_demo.yml。
第 1 步:复制范本
把 screens/proxy_storage_demo.yml 复制一份,例如 screens/enderchest.yml。
第 2 步:改 match
proxy:
match:
title: ['container.enderchest'] # 原版末影箱
storage: true
grid: items # 仓库格子排进 items
backpack: backpack # 玩家背包排进 backpack(27 格)
hotbar: hotbar # 快捷栏排进 hotbar(9 格)
常见的标题:
| 仓库 | match.title |
|---|---|
| 原版末影箱 | 'container.enderchest' |
| 背包插件 | 它的背包标题,例如 '*的背包*' |
| 公会 / 领地仓库 | 仓库箱子的标题,例如 '*仓库*' |
标题怎么看、* 怎么用,见 箱子界面转接 · match。
第 3 步:/cui reload,打开仓库
用原本的方式打开那个仓库(末影箱就是右键末影箱),就会看到投影画面。
三组格子
范本已经排好,名称要和 proxy 里写的一致:
| 格子 | 内容 | 格数 |
|---|---|---|
items | 仓库本身,照原格位(第 N 格就是仓库第 N 格) | 和仓库一样,例如末影箱 9 × 3 |
backpack | 玩家背包(背包的第 1~3 行) | 27 |
hotbar | 玩家快捷栏 | 9 |
storage: true 时默认是 layout: exact、不略过任何物品(仓库里的玻璃片也是玩家的东西)。
格子按钮的动作
每个格子按钮这样写(范本里已经写好):
hit:
type: button
state: 'on'
hover: proxy/slot_hover.png
hit: [0, 0, 60, 60]
click:
left: ['custom: pick']
right: ['custom: half']
shift-left: ['custom: quick']
release: ['custom: drop']
| 动作 | 点击 | 作用 |
|---|---|---|
custom: pick | 左键 | 拿起整叠 / 放下 |
custom: half | 右键 | 拿一半 / 放一个 |
custom: quick | Shift + 左键 | 移到另一边 |
custom: drop | release(拖到这格放开) | 放到这一格 |
格子里的变量和转接一样:{icon}、{name}、{amount}、{state}…,游标停在格子上自动显示物品名称与说明。
原插件的限制照样有效
每次搬动之前,CloudUI 都会先问原插件(就像玩家在箱子里点了一下):
- 原插件不准放的物品(例如背包里不能放背包)、锁住的格子,搬动会被取消,物品留在原处。
- 原插件有自己的存档方式,搬完一样由它存。
按钮数量
一个画面最多 48 个没有 state 的按钮。仓库 + 背包 + 快捷栏动辄 60~90 格,所以每个格子按钮都要加 state: 'on'(范本已经加了),这样悬停框改由服务器绘制,就没有数量上限。
用法 B:云公会仓库
装了 云公会 时,/cg vault 打开的公会仓库就是背包投影,内建、不用设定。
用法 C:插件开发者
自己写的插件要做拖放,用 API:
- 玩家按下某个格子时,用
CloudUIApi.carry(玩家, 物品)让物品跟着游标显示(null拿掉)。 - 格子按钮写
release: ['custom: 你的动作'],玩家拖到别格放开时会呼叫你的动作,UiClick里有放开在哪个按钮、第几格。 - 物品实际怎么搬、怎么存,由你的插件负责;
carry只负责显示。
见 开发者 API。
和箱子界面转接的差别
| 箱子界面转接 | 背包投影 | |
|---|---|---|
| 设定 | proxy: | proxy: + storage: true |
| 点击 | 交回原插件(商店购买、领地设定…) | 搬物品 |
| 排列 | 默认 compact(自动排列) | 默认 exact(照原格位) |
| 显示玩家背包 | 不显示 | backpack + hotbar |
| 适合 | 选单、商店、设定面板 | 仓库、末影箱、背包 |