Skip to content

EmakiItem

EmakiItem 是轻量自定义物品模块,提供稳定物品 ID、基础属性、套装、触发动作、自动更新与 PlaceholderAPI 支持。它适合作为装备成长线的起点:先生成一件有稳定 ID 的装备,再交给 Forge、Strengthen、Gem、Attribute 和 Skills 继续扩展。

基本信息

项目
模块版本2.8.0
主命令/emakiitem
别名/ei
硬依赖EmakiCoreLib
软依赖EmakiAttribute、EmakiSkills、MythicMobs、PlaceholderAPI
权限节点emakiitem.useemakiitem.giveemakiitem.browseemakiitem.inspectemakiitem.updateemakiitem.reloademakiitem.debugemakiitem.admin

功能页面

页面内容
命令与权限列出与发放物品、检查手持物与组件、刷新物品与套装、重载与调试。
物品定义与套装items/*.ymlsets/*.yml 的字段、物品 ID 到 ItemStack 的生成规则。
物品浏览 GUI/ei browse 的两级浏览界面、pack.yml 物品包元数据与槽位类型。
触发器交互、攻击、投射物、方块、丢弃等事件中执行动作。
物品更新策略物品定义变更后把玩家手上的旧物品更新到新版本。
物品修复系统耐久归零后的禁用状态与材料/货币修复流程。
跨模块集成被 Attribute、Forge、Strengthen、Gem、Skills、Cooking 引用时的物品来源写法。
MythicMobs 集成在 MythicMobs 的 Drops 中掉落 EmakiItem 物品。
占位符PlaceholderAPI 输出。
CoreLib 动作主手物品更新、重绘、修复、耐久与原版 Data Component 动作。
API通过 EmakiItemApi 创建、识别与查询物品。
事件 API物品流程的 Bukkit 事件与拦截点。

核心能力

能力说明
稳定物品 ID用配置 ID 标识物品,不依赖显示名。
物品组件配置材质、名称、Lore、模型、附魔、flags、耐久等。
属性写入可向 Attribute 提供属性 payload。
技能绑定可让物品提供技能或技能解锁信息。
套装系统根据装备件数触发属性、技能或 Lore。
触发器在交互、攻击、投射物、方块、丢弃等事件中执行动作。
自动更新玩家登录、切换手持、点击背包、拾取等场景刷新物品。
修复系统耐久归零后进入禁用状态,可用材料或货币修复。
浏览界面两级 GUI 按物品包浏览全部物品,可直接取出。
ID alias 与迁移支持物品 ID 改名映射,并可批量迁移配置与玩家背包。

默认配置目录

text
plugins/EmakiItem/
├── config.yml
├── id_aliases.yml
├── items/
├── sets/
├── gui/
└── lang/

items/ 定义物品,sets/ 定义套装,gui/ 存放修复界面与两级浏览界面模板(repair_gui.ymlpack_browser_gui.ymlitem_browser_gui.yml),id_aliases.yml 保存物品 ID 改名映射。

items/ 的每个子目录都是一个物品包,可放一份 pack.yml 定义它在浏览界面里的图标,详见物品浏览 GUI

主配置

config.yml 只包含全局设置,物品行为写在各自的定义文件里。

配置键类型默认值说明
versionstring当前模块版本默认配置结构标识,不建议手动修改。
languagestringzh_CN语言文件 ID,对应 lang/<language>.yml
release_default_databooleantrue是否释放 items/sets/ 等默认示例数据。config.yml 与语言文件不受此项控制。
data_directories.max_depthint2items/sets/ 的子目录扫描层数上限(含数据目录本身)。1 只读根目录,2 允许一层子目录,3 允许两层。超限子目录会被跳过并输出控制台警告,最小值为 1
set_bonus.enabledbooleantrue是否启用套装加成系统。
set_bonus.refresh_triggers.joinbooleantrue玩家进服时刷新套装状态。
set_bonus.refresh_triggers.held_changebooleantrue切换手持物品时刷新。
set_bonus.refresh_triggers.inventory_clickbooleantrue点击背包时刷新。
set_bonus.refresh_triggers.inventory_dragbooleantrue拖拽物品时刷新。
set_bonus.refresh_triggers.pickupbooleantrue拾取物品时刷新。
set_bonus.refresh_triggers.interactbooleantrue交互时刷新。
set_bonus.refresh_triggers.commandbooleantrue执行相关命令时允许刷新。
mythicmobs.enabledbooleantrueMythicMobs 集成总开关。
mythicmobs.drops.enabledbooleantrue是否注册 MythicMobs 自定义 Drop。
mythicmobs.drops.nameslistemakiitemei_item可识别的 Drop 名称;为空时回退默认值。
item_state.clampbooleantrue是否按 fields 声明的 min/max 钳制写入值。关闭后只保留溢出保护。
item_state.fill_defaultsbooleantrueadd 操作在字段缺失时是否用 fields 的 default 作为起始值。关闭后字段缺失直接拒绝。
item_state.fieldsmap{}字段声明,键名即状态键名。含 typedefaultminmaxthresholds;只有数值类型支持 min/max 与阈值。未声明的字段不受钳制、默认值与阈值影响。
item_state.migrationsmap{}按 schema 版本的迁移步骤,每步声明 from/to,可 renameretypedrop 字段。留空表示不迁移。
item_state.preservation.verify_rebuildbooleantrue物品 rebuild 后校验状态是否仍在,缺失时用重建前快照回填。
item_state.preservation.repair_on_pickupbooleanfalse拾取时修复损坏的状态元数据。
item_state.preservation.repair_on_dropbooleanfalse丢弃时修复损坏的状态元数据。
item_state.preservation.repair_on_tradebooleanfalse交易时修复损坏的状态元数据。
item_state.preservation.repair_on_container_transferbooleanfalse容器转移时修复损坏的状态元数据。
item_state.preservation.repair_on_joinbooleanfalse玩家进服时修复损坏的状态元数据。
item_state.derivation.enabledbooleanfalse状态变更驱动派生刷新的总开关。
item_state.derivation.refresh_lorebooleantrue派生刷新时刷新套装 Lore。
item_state.derivation.refresh_attributesbooleantrue派生刷新时同步属性。
item_state.derivation.scan_holderbooleantrue缺少持有者信息时允许扫描在线玩家定位物品。
item_state.derivation.max_depthint2派生刷新与阈值奖励的最大递归深度,用于阻断自触发循环。
proficiency_guard.dedupe_per_eventbooleantrue同一物品定义在一次事件中只派发一次。
proficiency_guard.max_dispatches_per_eventint0单次事件最多派发次数;0 表示不限制。
proficiency_guard.same_target_cooldown_secondsint0对同一目标的冷却秒数;0 表示无冷却。
proficiency_guard.daily_soft_capint0每日软上限;0 表示无上限。计数存在内存中,按服务器本地日期跨天重置,不跨重启保留。
proficiency_guard.decay_factordouble1.0超过软上限后的递减系数,取值 (0, 1];1.0 表示超限直接拒绝。
proficiency_guard.decay_minimum_ratiodouble0.0递减后的最低通过概率下限,取值 [0, 1]。
proficiency_guard.guarded_triggerslistdamage_dealtkill_entitykill_player受该段约束的触发器名单。

set_bonus.refresh_triggers 控制套装状态刷新;物品自动更新由物品定义的 update.triggers 单独控制,二者互不覆盖。

item_state.* 作用于 emaki:item_state PDC 分区,由 item_state_* 动作段与 API 读写,全部为增量配置:不写任何内容时行为与旧版本一致。proficiency_guard.* 作用于 damage_dealtkill_entitykill_player 的槽位派发,除 dedupe_per_event 外全部默认关闭或无限。

典型物品生命周期

  1. items/ 中定义物品 ID、材质、名称、Lore 和组件。
  2. 可选写入 Attribute 属性、Skills 技能或 set 信息。
  3. 管理员通过命令发放物品。
  4. 玩家使用装备。
  5. Item 在触发时机自动更新物品状态。
  6. Forge / Strengthen / Gem 可继续在该物品上写入自己的 layer。
  7. CoreLib 统一重建最终展示。

与其他模块的关系

模块协作方式
EmakiAttributeItem 写入基础属性或套装属性。
EmakiSkillsItem 写入装备技能 ID 与装备强制触发器;PDC 键由独立协议模块统一持有,不依赖 EmakiSkills 是否启用。
EmakiForgeForge 可以改造 EmakiItem 生成的装备。
EmakiStrengthenStrengthen 可以强化 EmakiItem 装备。
EmakiGemGem 可以给 EmakiItem 装备开孔和镶嵌。
MythicMobsMythicMobs 怪物可以通过 Drops 掉落 EmakiItem 物品。