输入至少两个字符

升级系统

文档版本: v1.0.0

升级状态按熔炉独立保存。玩家的不同熔炉可以拥有不同类型、槽位等级、速度、燃料效率和永久能力,不存在玩家级全局升级。

玩家操作流程#

  1. 执行 /kf 打开主菜单。
  2. 点击升级按钮,主菜单进入“选择目标熔炉”状态。
  3. 点击要管理的熔炉,打开该熔炉的升级菜单。
  4. 点击类型、等级或永久能力按钮完成购买。

玩家只能通过菜单购买,不能使用文本命令绕过 upgrades.yml 的价格。每名玩家的购买事务会串行执行,连续点击不会并发扣除同一笔余额。

可购买项目#

项目 初始状态 购买规则
第 2 到第 10 座熔炉 只有第一座普通熔炉免费 按将要创建的熔炉序号收费
普通熔炉、高炉、烟熏炉类型 FURNACE 每次切换到不同目标类型时收费
五类等级 1 只能逐级购买到下一等级,最高 6
三类永久能力 未解锁 每座熔炉每项只购买一次

选择当前设备类型、购买已解锁能力或点击已满级属性不会扣款。类型切换还要求全部原料、燃料和输出槽为空,并且当前已点燃燃料已经耗尽。

五类等级效果#

配置键 实际效果
input_slot 等级等于可使用的原料槽数量;引擎从低序号槽开始选择第一个有效配方
fuel_slot 等级等于可使用的燃料槽数量;需要点燃时从低序号槽开始选择第一个有效燃料
output_slot 等级等于可使用的输出槽数量;优先合并相似产物,再选择低序号空槽
fuel_efficiency 实际燃烧时长 = 基础时长 × burn_duration_multiplier
smelting_speed 实际熔炼时长 = 基础时长 ÷ speed_multiplier

多个原料槽共享一套熔炼进度和燃料,不会并行加工。当前轮次会固定配方、原料槽、产物、经验和熔炼时长;速度升级或 /kf reload 不会改变已经开始的轮次。燃料效率同样只影响之后点燃的燃料,不会重算当前燃料余量。

普通玩家只能升级,不能降级。管理员降低槽位等级时,如果将被锁定的槽位仍有物品,操作会被拒绝;必须先取空这些槽位。

三类永久能力#

离线熔炼#

offline_smelting 解锁后,该熔炉在所有者离线时仍使用绝对时间推进。未解锁的熔炉在离线时冻结时间基线,上线后从新基线继续,不补算暂停区间。

长时间离线产生的完成轮数仍受 max-settlements-per-advance 限制,可能需要多个引擎刷新周期才能完全追赶。

自动配送#

auto_output_delivery 解锁后,插件按 engine-interval-ticks 周期在玩家实体线程检查其所有熔炉:

  • 只在所有者在线时执行;
  • 按已解锁输出槽顺序配送;
  • 只提取背包当前能够接收的数量;
  • 同步发放对应产物经验;
  • 背包放不下的产物和经验继续留在原输出槽;
  • 每次提取都等待数据库关键写入确认。

完成通知#

completion_notification 会在一座熔炉完成至少一轮、随后不再存在可继续执行的有效原料时记录一个完成批次。所有者在线后,该批次只通知一次;通知认领状态会立即持久化,避免后续刷新或重启重复发送。

无效配方物品可以继续留在原料槽中;“完成”指当前没有可继续熔炼的有效原料,不表示所有原料槽物理为空。

支付与数据库事务#

每个价格都从 upgrades.yml 选择 vaultplayerpoints。执行顺序固定为:

校验目标和当前状态
  -> 检查提供者与余额
  -> 扣款
  -> 修改熔炉状态
  -> 等待数据库关键写入
  -> 成功

数据库提交失败或扣款后业务条件发生变化时,插件恢复原熔炉状态并向同一提供者尝试一次退款。退款也失败时会记录带玩家 UUID、提供者、金额和原因的 SEVERE 日志,需要管理员人工核对。

价格为 0 仍要求对应提供者可用,并执行完整事务。如果希望测试 Vault 项目,需要 Vault 和一个 Economy 实现;Vault 本身不保存余额。PlayerPoints 价格必须是整数。

默认 upgrades.yml 同时使用 Vault 和 PlayerPoints。首次测试前应安装两套提供者,或把所有收费节点统一改为当前服务器已有的提供者并执行 /kf reload

管理员管理#

管理员可以查看或强制设置指定玩家某座现有熔炉的状态:

/kf admin furnace <玩家名|UUID> <1-10> get
/kf admin furnace <玩家名|UUID> <1-10> set <属性> <值>
/kf admin furnace <玩家名|UUID> <1-10> reset <属性>

setreset 不扣除经济,也不要求逐级修改,但仍会执行数值范围、槽位物品和数据库写入校验。命令不会替玩家创建尚不存在的熔炉。完整属性名和权限见命令权限

重载边界#

/kf reload 会先完整校验新的价格和倍率,只有全部有效时才原子替换当前配置。重载不会切换数据库连接,也不会改写已开始轮次和已点燃燃料的时长。新的价格用于重载完成后发起的购买事务。