均分(Balance Grid)
基本信息
| 属性 | 值 |
|---|---|
| 键位 ID | key.craftingtweaks.balance |
| 默认按键 | Keyboard.KEY_NONE(未绑定) |
| 分类 | key.categories.craftingtweaks |
| 注册位置 | ClientProxy.init() → ClientRegistry.registerKeyBinding |
| 触发方式 | TickEvent.ClientTickEvent 边沿触发 |
英文显示名 Balance Grid,中文「均分」。
触发条件
与 旋转 完全相同:需已登记的容器、getModSupportState 为
ENABLED 或 HOTKEYS_ONLY、NEI 输入框未聚焦。
行为
| 按键组合 | 行为 |
|---|---|
| 直接按 | 均分:把网格内同种物品的数量在各个槽位之间平均分配 |
| 按住 Shift | 平铺(Spread):先把最多的一摞物品尽可能摊到所有空格,再执行一次均分 |
isShiftDown 作为 spread 布尔量随 MessageBalance(id 2)发送;
服务端 HandlerBalance 据此在 spreadGrid 与 balanceGrid 之间二选一。
无服务端时客户端直接调用 clientProvider.balanceGrid 或
clientProvider.spreadGrid,两者都以 provider.requiresServerSide() 为前置条件
(为 true 则静默返回)。
⚠️ 注意:均分 / 平铺不区分 tweakBalance.enabled 之外的按钮显示设置,
但仍受 provider 自身的 tweakBalance.enabled 开关约束——关闭时
SimpleTweakProviderImpl.balanceGrid / spreadGrid 直接空转。
均分 vs 平铺
| 对比项 | 均分 | 平铺(Shift) |
|---|---|---|
| 前置动作 | 无 | 先把最大堆叠拆成每格 1 个铺满所有空格 |
| 终止条件 | 一次算完 | 循环直到没有 >1 的堆叠,或最大堆叠被清空 |
| 是否调用均分 | 否 | 是,平铺结束后必定再跑一次 balanceGrid |
| 只处理可堆叠物 | 是 | 平铺阶段扫描全部堆叠,均分阶段才过滤 |
具体数值算法见 合成网格操作 的「均分」与「平铺」两节。