Skip to content

左右键动作与采集键

每个采集模板都可以分别设置左键和右键动作。你可以保留默认的右键采集,也可以改成左键采集、右键查看,或者让某个按键先执行命令再开始采集。

动作写在:

text
plugins/GTGather/templates.yml

修改后执行:

text
/gtgather reload

默认行为

没有配置左右键动作时:

玩家操作结果
左键采集点不执行动作
右键采集点按旧版行为开始采集

因此旧模板不需要增加 right-click-actions,升级后仍然可以右键采集。

把采集改成左键

特殊动作 [gather] 表示“进入正常采集流程”。把它写在左键动作中,就可以使用左键采集。

下面是一份可以直接使用的完整模板:

yaml
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]

yaml
right-click-actions:
  - "console:tell %player% 开始采集"
  - "[gather]"

如果只写命令、不写 [gather],右键就只执行命令。这正适合“左键采集、右键查看”之类的玩法。

动作类型

左右键支持相同的动作写法:

yaml
left-click-actions:
  - "console:say %player% 点击了铁矿"
  - "player:me 正在检查铁矿"
  - "op:自定义插件命令 %player%"
  - "[gather]"
写法执行身份
console:控制台执行命令
player:玩家自己执行命令
op:临时以 OP 身份执行,完成后恢复原状态
[gather]进入 GTGather 的完整采集流程

命令支持 %player%{player} 和其他 PlaceholderAPI 变量。命令会按配置顺序执行;同一次点击即使重复写了多个 [gather],也只会启动一次采集。

PAPI 条件动作组

简单列表中的动作都会执行。需要根据等级、权限、职业或其他 PAPI 结果决定动作时,改用命名动作组:

yaml
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 级战士"

动作组名称 gatherlevel_deniedclass_deniedview 都可以自行修改。每个满足 condition 的组都会按配置顺序执行;条件不满足时,只跳过当前组。

condition 支持:

写法示例
数字比较%player_level% >= 10
字符串比较%player_class% == WARRIOR
并且A && B
或者`A
取反!A 或 `!(A
括号`(A
算术%player_level% + 5 >= 20

如果配置了 right-click-actions,但所有右键动作组的条件都不满足,右键会保持无动作,不会自动退回采集。

动作条件和采集条件的区别

conditiontriggers 负责不同阶段:

配置位置作用
left-click-actions.<组>.condition决定左键是否执行这一组动作
right-click-actions.<组>.condition决定右键是否执行这一组动作
triggers玩家执行 [gather] 后,决定是否允许开始采集

例如,右键只查看信息时不会检查 triggers。只有动作列表执行到 [gather],才会继续检查手持物品、PAPI 触发条件、次数上限、工具耐久和冷却。

配置并测试

  1. templates.yml 中选择一个测试模板。
  2. 先配置左键 [gather] 和右键提示命令。
  3. 执行 /gtgather reload,确认没有 YAML 报错。
  4. 左键采集点,确认出现读条并正常获得奖励。
  5. 右键采集点,确认只显示提示且不进入采集。
  6. 再加入 PAPI 条件组,分别使用满足和不满足条件的玩家测试。

常见问题

配置右键动作后不能采集

这是正常行为。配置 right-click-actions 后不会再自动添加采集动作。需要右键采集时加入:

yaml
- "[gather]"

左键执行了命令但没有采集

检查对应的 left-click-actions 是否包含 [gather]。命令动作本身不会自动进入采集流程。

条件满足但动作没有执行

  1. 使用 PlaceholderAPI 命令检查变量是否安装并能正常返回。
  2. 确认字符串值与实际返回值一致,例如 WARRIOR
  3. 包含 &&||! 时,用括号明确组合关系。
  4. 检查 conditionactions 是否缩进在同一个动作组下。
  5. 执行 /gtgather reload 并检查控制台是否有配置错误。

右键条件不满足时仍想显示提示

为拒绝情况再配置一个动作组:

yaml
right-click-actions:
  allowed:
    condition: "%player_level% >= 10"
    actions:
      - "[gather]"
  denied:
    condition: "%player_level% < 10"
    actions:
      - "console:tell %player% 等级不足"

这样无论玩家是否满足等级要求,都有明确反馈。