跳到主要内容

Hook 联动

Baikiruto 当前和 Hook 插件相关的功能,主要分成 6 类:

  • MythicMobs:怪物出生时自动装备 Baikiruto 物品,死亡时掉落 Baikiruto 物品
  • AttributePlus:把物品里的运行时属性同步到 AttributePlus
  • HeadDatabase:把 HDB ID 自动转换成头颅贴图
  • PlaceholderAPI:在物品最终显示阶段自动替换 PAPI 变量
  • GuibindPro:物品更新重建时保留绑定状态、绑定 Lore 和恢复签名
  • RoseLoot:在 RoseLoot 掉落表中直接生成 Baikiruto 物品

如果你只是想知道总开关写在哪,看 config.yml;如果你想知道每个 Hook 的物品写法、怪物写法、诊断方式,就看这页。

总开关

源码真实读取的 Hook 开关路径是:

operations:
hook:
mythic:
enabled: true
attribute-plus:
enabled: true
head-database:
enabled: true
guibind-pro:
enabled: true
rose-loot:
enabled: true

说明:

  • MythicMobsAttributePlusHeadDatabaseGuibindProRoseLoot 都挂在 operations.hook.*.enabled
  • PlaceholderAPI 没有独立的 operations.hook.placeholderapi.enabled 开关
  • PlaceholderAPI 只要物品显示阶段拿得到玩家上下文,就会自动尝试替换变量

1. MythicMobs

作用

开启后,你可以在 MythicMobs 的怪物配置里直接:

  • 给怪物装备 Baikiruto 物品
  • 给怪物配置 Baikiruto 掉落

怪物装备写法

Baikiruto:
equipments:
mainhand: "example:all_features"
offhand: "example:guardian_totem"
helmet: "air"

规则:

  • 值直接写 Baikiruto 物品 ID
  • air 可以清空该槽位
  • 槽位支持这些别名:
    • mainhand / main_hand / hand
    • offhand / off_hand
    • head / helmet
    • chest / chestplate
    • legs / leggings
    • feet / boots

怪物掉落写法

Baikiruto:
drops:
- "example:all_features 1-3 0.5"
- "example:remainder 1 1.0"

每一行的格式是:

物品ID 数量或范围 概率

例如:

  • example:all_features 1-3 0.5 = 掉落 1~3 个,概率 50%
  • example:remainder 1 1.0 = 固定掉落 1 个,概率 100%

使用提示

  • 如果是玩家击杀,Baikiruto 会把 playersenderkiller 一起塞进掉落构建上下文
  • 所以掉落物也可以继续吃脚本变量、绑定逻辑和显示替换
  • 如果某个掉落没生效,优先检查物品 ID 是否真的能通过 /baikiruto list 查到

2. AttributePlus

作用

开启后,Baikiruto 会在 AttributePlus 刷新玩家属性时,扫描:

  • 主手
  • 副手
  • 头盔
  • 胸甲
  • 护腿
  • 靴子

只要这些装备里有 Baikiruto 物品,且运行时数据里带了 attribute-plus,就会同步给 AttributePlus。

物品写法

最常见写法是放在 data: 里:

data:
attribute-plus:
critChance: 1.0
finalDamage: "2.0-4.0"
skillDamage:
min: 3
max: 6

也支持这些键名:

  • attribute-plus
  • attribute_plus
  • attributePlus

数值写法

每个属性值都可以写成:

# 单值
critChance: 1.0

# 范围字符串
finalDamage: "2.0-4.0"

# 列表
skillDamage: [3, 6]

# Map
skillDamage:
min: 3
max: 6

说明:

  • 单值会被当成固定值
  • 范围值会被解析成最小值 / 最大值
  • 具体属性名是否有效,要跟随你自己的 AttributePlus 配置体系,不由 Baikiruto 再做一层白名单校验
  • meta.attribute 是 Baikiruto 自己的内置属性快捷写法,不等于 AttributePlus Hook

3. HeadDatabase

作用

开启后,Baikiruto 会把头颅配置里的 HDB ID 自动转换成真正的头颅贴图。

物品写法

meta:
skull:
hdb: "12345"

也支持:

  • head-database
  • head_database
  • hdb

这两种都能用:

hdb: "12345"
hdb: "hdb:12345"

源码会自动去掉 hdb: 前缀。

适合场景

  • 菜单按钮头颅
  • Boss 掉落头颅
  • 收集品 / 图鉴头颅
  • 头像类兑换道具

使用提示

  • 前提是服务端安装了 HeadDatabase
  • 前提是 operations.hook.head-database.enabled: true
  • Hook 命中后,会把 HDB ID 转成真正的 skull-texture,并覆盖旧的 skull-url

4. PlaceholderAPI

作用

Baikiruto 会在物品最终显示阶段,对名称和 Lore 自动做 PlaceholderAPI 替换。

典型写法

name: "&6%player_name% 的试炼之刃"
lore:
item_description:
- "&7当前玩家: %player_name%"
- "&7职业: %player_class%"

使用提示

  • 这一步没有独立 Hook 开关
  • 必须拿得到玩家上下文,替换才有意义
  • 更准确地说,它发生在物品最终显示阶段,而不是加载配置时
  • 如果你在控制台、离线构建或无玩家上下文的路径里看不到替换结果,通常是正常现象

5. GuibindPro

作用

开启后,Baikiruto 在检查并重建玩家背包物品时,会尽量保留 GuibindPro 写在旧物品上的绑定状态。

它主要处理这些信息:

  • 已绑定状态
  • 未绑定状态
  • 绑定玩家名称 / UUID
  • 绑定 Lore 行
  • 恢复签名

适合场景

  • 你用 Baikiruto 管物品基础属性和显示
  • 你用 GuibindPro 管物品绑定 / 找回 / 绑定 Lore
  • 你希望 /baikiruto reload 或在线更新重建物品后,绑定状态不要被新物品覆盖掉

使用提示

  • 前提是服务端安装了 GuibindProGuiBindPro
  • 前提是 operations.hook.guibind-pro.enabled: true
  • 这个 Hook 不需要你在 Baikiruto 物品配置里额外写节点
  • 它发生在物品更新重建后,会先保留 GuibindPro 状态,再叠加 Baikiruto 的附魔保留逻辑

6. RoseLoot

作用

开启后,Baikiruto 会向 RoseLoot 注册一个自定义掉落类型 baikiruto。你可以在 RoseLoot 掉落表里直接写 Baikiruto 物品 ID。

RoseLoot 写法

items:
example_reward:
type: baikiruto
item: "example:all_features"
amount: 1
max-amount: 3

也可以把 item 写成 id

items:
example_reward:
type: baikiruto
id: "example:guardian_totem"
amount: 1

字段说明:

  • type: baikiruto:RoseLoot 自定义掉落类型
  • item / id:Baikiruto 物品 ID
  • amount:生成数量,默认 1
  • max-amount:最大数量,默认不限制到具体小值;最终会按物品堆叠上限拆堆

构建上下文

RoseLoot 生成 Baikiruto 物品时,会把这些上下文传给物品构建:

  • player / sender / looter:如果 RoseLoot 本次掉落有 looting player
  • roseLootContext / rose_loot_context:原始 RoseLoot 上下文
  • roseLootTable / rose_loot_table:当前掉落表(如果 RoseLoot 提供)
  • item_id:本次生成的 Baikiruto 物品 ID

这意味着你的物品显示、脚本和 PlaceholderAPI 替换可以继续拿到玩家上下文。

使用提示

  • 前提是服务端安装了 RoseLoot
  • 前提是 operations.hook.rose-loot.enabled: true
  • 如果物品 ID 不存在,RoseLoot 本次不会生成物品;开启 settings.debug 后控制台会输出对应调试信息

联动示例速查

Boss 装备 + 掉落

Baikiruto:
equipments:
mainhand: "example:all_features"
offhand: "example:guardian_totem"
drops:
- "example:all_features 1-2 0.35"
- "example:remainder 1 1.0"

适合:

  • RPG 怪物专属武器
  • Boss 固定装备
  • 概率掉落自定义道具

AttributePlus + PlaceholderAPI 武器

name: "&6%player_name% 的试炼之刃"
lore:
item_description:
- "&7暴击加成已同步到 AttributePlus"
- "&7当前主人: %player_name%"

data:
attribute-plus:
critChance: 2.0
finalDamage: "4.0-8.0"

效果:

  • attribute-plus 会在 AttributePlus 刷新属性时生效
  • %player_name% 会在物品最终显示阶段自动替换

HeadDatabase 菜单头颅

meta:
skull:
hdb: "12345"

效果:

  • 适合做菜单按钮头颅
  • 不需要手动找 base64 贴图

RoseLoot 掉落 Baikiruto 物品

items:
trial_blade:
type: baikiruto
item: "example:all_features"
amount: 1
max-amount: 2

效果:

  • RoseLoot 掉落表命中后,直接按 Baikiruto 物品配置构建成品
  • 如果 RoseLoot 提供玩家上下文,物品构建时可以继续使用玩家变量和显示替换

排错

1. 先看配置开关

确认 config.yml 里:

operations:
hook:
mythic:
enabled: true
attribute-plus:
enabled: true
head-database:
enabled: true
guibind-pro:
enabled: true
rose-loot:
enabled: true

2. 用自检或诊断命令确认状态

可以用:

/baikiruto selfcheck
/baikiruto reload debug

你会看到这类诊断键:

  • hookMythicConfigured
  • hookMythicAvailable
  • hookAttributePlusConfigured
  • hookAttributePlusAvailable
  • hookHeadDatabaseConfigured
  • hookHeadDatabaseAvailable
  • hookHeadDatabaseLoaded

常见判断方式:

  • Configured=trueAvailable=false:通常是目标插件没装,或对应类没加载到
  • HeadDatabaseAvailable=trueHeadDatabaseLoaded=false:通常是 HDB 已装,但数据库还没准备好
  • GuibindPro 和 RoseLoot 当前没有独立的 reload debug 诊断键;如果要确认开关是否读入,可以看 config.yml 重载日志里的 hookGuibindPro / hookRoseLoot 字段,或直接测试绑定保留 / RoseLoot 掉落表

3. 物品侧再检查一次

  • Mythic 掉落或装备不生效:先用 /baikiruto list 确认物品 ID 存在
  • AttributePlus 不生效:确认你写的是 data.attribute-plus,不是 meta.attribute
  • HeadDatabase 不生效:确认写的是 meta.skull.hdb / head-database
  • PlaceholderAPI 不替换:确认当前是玩家实际看到的显示阶段,而不是纯后台构建阶段
  • GuibindPro 绑定丢失:确认 operations.hook.guibind-pro.enabled 开启,并且物品确实是通过 Baikiruto 更新重建流程替换的
  • RoseLoot 不掉落:确认 RoseLoot 掉落表里的 typebaikirutoitem / id 写的是 /baikiruto list 能看到的物品 ID

下一步

  • 查看 物品配置 了解 datametacomponents 的完整结构
  • 查看 Meta 扩展 了解 Skull、Potion、Spawner 等内置能力