采集系统
工作原理
- 玩家手持采集工具右键点击 ItemsAdder 方块
- 插件检查工具是否在白名单、玩家等级是否足够
- 开始读条,动作栏显示进度
- 读条完成后根据成功率公式判定结果
- 触发 on-success 或 on-fail 动作组
- 根据配置决定是否移除方块、给予经验
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命令 - 方块被其他玩家采集完成