核心概念
理解下面几个概念后,SakuraBind 的配置会清晰很多。
绑定物主
插件把物主 UUID 写入物品 NBT,默认路径是:
config.yml
nbt-path-uuid: sakura_bind_uuid
只要这个 NBT 存在,物品就会被视为绑定物品。绑定 lore 只是显示效果,不是判断绑定的唯一依据。
绑定设置
每个绑定目标都会读取一个“绑定设置”。设置来源有两层:
| 来源 | 作用 |
|---|---|
global-setting.yml | 全局默认设置,所有物品都会继承 |
settings.yml | 用匹配器识别某类物品,并覆盖全局同名设置 |
例如 settings.yml 中只写了:
settings:
item-deny:
drop: true
那么这个匹配器只覆盖 item-deny.drop,其他未写的设置仍读取 global-setting.yml。
匹配器
匹配器在 settings.yml 的 matchers 下配置,用来识别某类物品。
matchers:
demo:
match:
material: '.*_SWORD'
name-without-color: '.*神剑.*'
settings:
auto-bind:
enable: true
onClick: true
match 下多个条件是“同时满足”的关系。上面的例子表示:材质是剑,并且去色后的自定义名包含 神剑。
匹配器按文件顺序检测,先匹配到的先生效。常用、简单的匹配器放前面,复杂匹配器放后面。
@ 取反规则
布尔配置键后面加 @,表示物主读取相反值。
item-deny:
click@: true
效果:
| 玩家 | 读取结果 | 行为 |
|---|---|---|
| 非物主 | true | 禁止拿走 |
| 物主 | false | 允许拿走 |
常见写法:
item-deny:
drop@: true
click@: true
pickup@: true
这表示非物主不能丢弃、拿走、捡起,物主可以正常操作。
权限覆盖
开启后,权限可以覆盖配置:
config.yml
enable-setting-permission-check: true
权限优先级从高到低:
sakurabind.setting.<匹配器名>.<配置键>.true|falsesakurabind.settings.<配置键>.true|falsesettings.ymlglobal-setting.yml
示例:
sakurabind.setting.vip_sword.item-deny.drop.false
sakurabind.settings.item-deny.click.true
sakurabind.bypass.all 不依赖这个开关,拥有后会跳过绑定限制和扫描。
送回队列
物品丢失、掉虚空、被扫描器发现、被召回时,会通过 send-back-queue 送回物主。
config.yml
send-back-queue:
- player
- ender-chest
- database
插件会按顺序尝试。当前一种方式放不下或不可用时,剩余物品继续尝试下一种。
| 途径 | 条件 |
|---|---|
player | 玩家在线、存活、背包有空间 |
ender-chest | 玩家在线,末影箱有空间 |
database | 数据库连接正常,且 send-back-database: true |
GlobalMarketPlus | 安装对应插件并在队列中配置 |
SweetMail | 安装对应插件并在队列中配置 |
高级服建议保留 database 作为兜底。
监听器与模块
物品绑定默认可用。下面这些功能需要额外开关:
| 功能 | 开关 | 是否通常需要重启 |
|---|---|---|
| 方块绑定 | config.yml block-listener | 是 |
| 实体绑定 | config.yml entity-listener | 是 |
| 绑定/解绑道具 | modules/bind-item.yml enable | 是 |
| 唯一物品防刷 | modules/unique-item.yml enable | 是 |
| 自动解绑模块 | modules/auto-unbind.yml enable | 否,缓存大小改动需重启 |
| 数据迁移模块 | modules/migration.yml enable | 否 |
配置注释里写“重启生效”的,以配置注释为准。