左右键动作与采集键
每个采集模板都可以分别设置左键和右键动作。你可以保留默认的右键采集,也可以改成左键采集、右键查看,或者让某个按键先执行命令再开始采集。
动作写在:
plugins/GTGather/templates.yml修改后执行:
/gtgather reload默认行为
没有配置左右键动作时:
| 玩家操作 | 结果 |
|---|---|
| 左键采集点 | 不执行动作 |
| 右键采集点 | 按旧版行为开始采集 |
因此旧模板不需要增加 right-click-actions,升级后仍然可以右键采集。
把采集改成左键
特殊动作 [gather] 表示“进入正常采集流程”。把它写在左键动作中,就可以使用左键采集。
下面是一份可以直接使用的完整模板:
templates:
left_gather_iron:
display: "§f§l铁矿"
entity-type: ARMOR_STAND
display-item: IRON_ORE
description:
- "§7左键采集"
- "§7右键查看说明"
left-click-actions:
- "[gather]"
right-click-actions:
- "console:tell %player% 采集铁矿需要 10 级"
triggers:
level:
expression: "%player_level% >= 10"
cast:
enabled: true
duration: "2.5"
progress-bar: BOSS_BAR
cooldown: "20s"
rewards:
iron:
id: RAW_IRON
amount: "1"
mode: INVENTORY预期结果:
- 左键会检查等级、次数、工具耐久和冷却,然后开始 2.5 秒采集。
- 右键只显示说明,不会开始采集。
- 采集成功后获得 1 个粗铁,并进入 20 秒冷却。
自定义右键后不再自动采集
只要模板中出现了 right-click-actions,右键就只执行这里配置的动作。需要继续使用右键采集时,必须显式写入 [gather]:
right-click-actions:
- "console:tell %player% 开始采集"
- "[gather]"如果只写命令、不写 [gather],右键就只执行命令。这正适合“左键采集、右键查看”之类的玩法。
动作类型
左右键支持相同的动作写法:
left-click-actions:
- "console:say %player% 点击了铁矿"
- "player:me 正在检查铁矿"
- "op:自定义插件命令 %player%"
- "[gather]"| 写法 | 执行身份 |
|---|---|
console: | 控制台执行命令 |
player: | 玩家自己执行命令 |
op: | 临时以 OP 身份执行,完成后恢复原状态 |
[gather] | 进入 GTGather 的完整采集流程 |
命令支持 %player%、{player} 和其他 PlaceholderAPI 变量。命令会按配置顺序执行;同一次点击即使重复写了多个 [gather],也只会启动一次采集。
PAPI 条件动作组
简单列表中的动作都会执行。需要根据等级、权限、职业或其他 PAPI 结果决定动作时,改用命名动作组:
left-click-actions:
gather:
condition: "%player_level% >= 10 && %player_class% == WARRIOR"
actions:
- "console:tell %player% 开始采集战士矿点"
- "[gather]"
level_denied:
condition: "%player_level% < 10"
actions:
- "console:tell %player% 等级达到 10 级后才能采集"
class_denied:
condition: "%player_level% >= 10 && !(%player_class% == WARRIOR)"
actions:
- "console:tell %player% 只有战士职业可以采集"
right-click-actions:
view:
actions:
- "console:tell %player% 要求:10 级战士"动作组名称 gather、level_denied、class_denied 和 view 都可以自行修改。每个满足 condition 的组都会按配置顺序执行;条件不满足时,只跳过当前组。
condition 支持:
| 写法 | 示例 |
|---|---|
| 数字比较 | %player_level% >= 10 |
| 字符串比较 | %player_class% == WARRIOR |
| 并且 | A && B |
| 或者 | `A |
| 取反 | !A 或 `!(A |
| 括号 | `(A |
| 算术 | %player_level% + 5 >= 20 |
如果配置了 right-click-actions,但所有右键动作组的条件都不满足,右键会保持无动作,不会自动退回采集。
动作条件和采集条件的区别
condition 和 triggers 负责不同阶段:
| 配置位置 | 作用 |
|---|---|
left-click-actions.<组>.condition | 决定左键是否执行这一组动作 |
right-click-actions.<组>.condition | 决定右键是否执行这一组动作 |
triggers | 玩家执行 [gather] 后,决定是否允许开始采集 |
例如,右键只查看信息时不会检查 triggers。只有动作列表执行到 [gather],才会继续检查手持物品、PAPI 触发条件、次数上限、工具耐久和冷却。
配置并测试
- 在
templates.yml中选择一个测试模板。 - 先配置左键
[gather]和右键提示命令。 - 执行
/gtgather reload,确认没有 YAML 报错。 - 左键采集点,确认出现读条并正常获得奖励。
- 右键采集点,确认只显示提示且不进入采集。
- 再加入 PAPI 条件组,分别使用满足和不满足条件的玩家测试。
常见问题
配置右键动作后不能采集
这是正常行为。配置 right-click-actions 后不会再自动添加采集动作。需要右键采集时加入:
- "[gather]"左键执行了命令但没有采集
检查对应的 left-click-actions 是否包含 [gather]。命令动作本身不会自动进入采集流程。
条件满足但动作没有执行
- 使用 PlaceholderAPI 命令检查变量是否安装并能正常返回。
- 确认字符串值与实际返回值一致,例如
WARRIOR。 - 包含
&&、||或!时,用括号明确组合关系。 - 检查
condition和actions是否缩进在同一个动作组下。 - 执行
/gtgather reload并检查控制台是否有配置错误。
右键条件不满足时仍想显示提示
为拒绝情况再配置一个动作组:
right-click-actions:
allowed:
condition: "%player_level% >= 10"
actions:
- "[gather]"
denied:
condition: "%player_level% < 10"
actions:
- "console:tell %player% 等级不足"这样无论玩家是否满足等级要求,都有明确反馈。
