采集系统

工作原理

  1. 玩家手持采集工具右键点击 ItemsAdder 方块
  2. 插件检查工具是否在白名单、玩家等级是否足够
  3. 开始读条,动作栏显示进度
  4. 读条完成后根据成功率公式判定结果
  5. 触发 on-success 或 on-fail 动作组
  6. 根据配置决定是否移除方块、给予经验

targets.yml 配置

targets:
  # 键名为 ItemsAdder 方块的 namespaced ID
  example:ore_1:
    # 所需采集等级
    required-level: 0
    # 采集耗时(秒)
    time-seconds: 3
    # 成功获得经验
    exp-on-success: 10
    # 失败获得经验
    exp-on-fail: 0
    # 成功率公式(结果范围 0~1)
    success-expression: "0.6 + {skill-level} * 0.01 + {skill-passive-bonus} + {skill-next-bonus}"

    # 采集成功时执行的动作
    on-success:
      action_1:
        type: message
        value: "&a你采集到了 {gather-target}"
      action_2:
        type: drop-item
        chance: "0.5 + {skill-level} * 0.01"
        value:
          ignore-fertilizer: true
          item: "example:drop_1"
          min: 1
          max: "1 + {skill-level} * 0.1"

    # 采集失败时执行的动作
    on-fail:
      action_1:
        type: message
        value: "&c很遗憾,采集失败了。"

配置项详解

基础字段

required-level 采集该方块所需的最低等级
time-seconds 读条持续时间(秒)
exp-on-success 采集成功时获得的经验值
exp-on-fail 采集失败时获得的经验值

success-expression 成功率公式

支持数学表达式,结果必须在 0~1 之间。可用变量:

{skill-level} 玩家当前采集等级
{skill-passive-bonus} 被动技能提供的成功率加成
{skill-next-bonus} "下一次采集"技能的临时加成

示例:0.6 + {skill-level} * 0.01

基础成功率 60%,每级增加 1%,10 级时为 70%

动作类型(Actions)

动作系统与 CustomCrops 完全兼容,支持所有 CustomCrops Action 类型:

message 发送消息给玩家
drop-item 掉落物品,支持 chance、min/max 配置
command 执行命令
sound 播放声音
... 更多类型参考 CustomCrops 文档

可用占位符

在动作 value 中可使用以下占位符:

{gather-target} 采集目标的 ID
{gather-tool} 使用的工具 ID
{gather-success} 是否成功(true/false)
{skill-level} 玩家等级
{iagather} IAGather 标识符(用于条件判断)

采集中断条件

以下情况会导致采集被中断:

  • 玩家距离方块超过 max-distance
  • 切换手持物品(如 cancel-on-item-change: true
  • 执行 /iagather cancel 命令
  • 方块被其他玩家采集完成