左键拖拽(空手 Shift)
基本信息
| 属性 | 值 |
|---|---|
| 配置字段 | MTConfig.LMBTweakWithoutItem |
| 类型 | boolean |
| 默认值 | true(MTConfig.java 字段初始值) |
| 实现方法 | yalter.mousetweaks.handlers.ClickHandler#handleLMBTweak(stackOnMouse == null 分支) |
| 触发按键 | 鼠标左键 + Shift |
功能
鼠标上没有物品时,按住 Shift + 左键划过栏位,就能把经过的每个栏位都做一次 shift-click,从而把物品批量送进另一个背包(通常是自己的背包)。
} else if (MTConfig.LMBTweakWithoutItem && (targetStack != null) && shiftIsDown) {
context.clickSlot(currentScreen, selectedSlot, 0, true);
}
命中条件(四个同时满足):
| 条件 | 说明 |
|---|---|
stackOnMouse == null |
走的是「空手」分支;手上拿东西时由 左键拖拽(手持物品) 处理 |
MTConfig.LMBTweakWithoutItem == true |
配置开关 |
targetStack != null |
鼠标必须悬停在有物品的栏位上,空栏位直接忽略 |
shiftIsDown |
左右任一 Shift 处于按下状态(KEY_LSHIFT 或 KEY_RSHIFT) |
命中后执行 context.clickSlot(currentScreen, selectedSlot, 0, true)——鼠标键 0、Shift 置位,
即原版 shift-click 的整堆转移语义。
与手持物品分支的差异对比
| 属性 | LMBTweakWithoutItem(本条目) |
LMBTweakWithItem |
|---|---|---|
| 鼠标状态 | 必须空手 | 必须手持 |
| Shift | 必须按下 | 按下则整堆移动;不按则两击合并 |
| 目标栏位 | 只能有物品(targetStack != null) |
只能有物品(targetStack != null) |
| 物品兼容性判定 | 无(直接 shift-click,不比较) | 必须 areStacksCompatible |
| 堆叠上限检查 | 无 | count(mouse) + count(target) <= maxStackSize(mouse) |
| 合成产物栏位 | 不排除——空手段无产物栏位判定 | 排除,第二次点击被跳过 |
| 每经过栏位的点击次数 | 1 次 | 1~2 次 |
两个开关互相独立:
handleLMBTweak用if / else if分流,配置时可以只留其中之一。
相关条目
- 左键拖拽(手持物品) - 同一方法的另一分支
- 输入方案 - Shift 是硬编码检测的
KEY_LSHIFT/KEY_RSHIFT - 配置文件系统 -
LMBTweakWithoutItem所在的MTConfig