Purtmars Plugins
插件️Chemdah开始开发文档

背包条目

背包条目

内置类型 player inventoryIPlayerInventory)用于「持有或扣除指定物品」类任务条目。不需要新建 Objective 或 register()。附属插件在 ENABLE 阶段赋值 IPlayerInventory.handler,即可改写统计与扣除逻辑(例如除玩家背包外再计入自有仓库)。

本文由 AI 辅助生成,可能存在疏漏或与当前版本不一致。Chemdah 为闭源付费插件,请以你使用的版本、api 依赖与实际运行行为为准;疑问请联系作者或售后群(见 服务)。

行为

属性含义
isListenerfalse不监听 Bukkit 事件
isTickabletrueQuestChecker20 tick(约 1 秒)对进行中条目调用 handleTask 检查

条目在 condition 里配置:

说明
item物品选择器(InferItem
amount需要数量,默认 1
consumetrue 达标后扣除;false 只检查持有量
position可选位置条件
  • consume: false:定时检查走 handler.hasItemaddFullCondition("item"));展示进度用 handler.getProgress
  • consume: true:定时检查里走 handler.takeItem(在 addFullCondition("item") 中);成功则 onContinue 累加条目 amount,达标后完成条目。

Handler

默认 IPlayerInventory.Handler 只处理 player.inventory

方法作用
hasItem是否够数 → HasResult(success, count)
takeItem扣除 → TakeResult(success, totalHas)
getProgressconsume 模式下的进度

HasResult.countMap<String, Int>,key 可区分来源;默认实现只有 "player"

LifeCycle.ENABLE(玩家接任务前)替换 handler,在三个方法内写入你的统计与扣除(多存储自行汇总,Chemdah 无额外注册表 API):

import ink.ptms.chemdah.core.quest.objective.other.IPlayerInventory
import taboolib.common.LifeCycle
import taboolib.common.platform.Awake

@Awake(LifeCycle.ENABLE)
fun hookPlayerInventory() {
    IPlayerInventory.handler = object : IPlayerInventory.Handler() {
        // override fun hasItem(...) { ... }
        // override fun takeItem(...) { ... }
        // override fun getProgress(...) { ... }
    }
}

任务配置

tasks:
  submit_item:
    type: player inventory
    condition:
      item: iron_ingot
      amount: 32
      consume: true

相关

On this page