跳到主要内容

常见问题

先看这三个问题

现象优先检查
自动绑定不触发测试玩家是否 OP,是否拥有 sakurabind.bypass.all
匹配器没命中/sakurabind test tryMatch <匹配器ID>
遗失物品领不到数据库连接、send-back-database、背包空间

怎么自动绑定某类物品?

settings.yml 中配置匹配器,并在该匹配器的 settings.auto-bind 中开启触发项。

matchers:
swords:
match:
material: '.*_SWORD'
settings:
auto-bind:
enable: true
onClick: true
onScanner: true

不建议在 global-setting.yml 全局开启 auto-bind.enable,否则可能绑定大量普通物品。

为什么 OP 玩家不会自动绑定?

OP 默认拥有 sakurabind.bypass.all。这个权限会让玩家跳过绑定行为检查和大量自动绑定监听,包括点击、捡起、丢弃、使用、装备和扫描器触发。

如果你正在测试自动绑定,请不要用 OP 账号。建议:

  • 使用普通玩家账号测试。
  • 或在权限插件中对测试玩家显式设置 sakurabind.bypass.allfalse
  • 手动命令 /sakurabind bind item <玩家> 仍可用于确认插件本身能写入绑定 NBT。
自动绑定不触发的完整检查清单
  1. 测试玩家不是 OP,且没有 sakurabind.bypass.all
  2. 目标物品能被 /sakurabind test tryMatch <匹配器ID> 匹配。
  3. settings.auto-bind.enabletrue
  4. 至少开启一个触发项,例如 onClickonPickuponDroponScanner
  5. 如果依赖扫描器,config.yml scanner-period 必须大于 0
  6. 如果依赖装备穿戴触发,服务端必须是 Paper 或下游核心。

怎么让单个物品自动绑定?

手持物品执行:

/sakurabind autoBind

该命令会写入 config.ymlauto-bind-nbt 指定的 NBT。之后该物品可在扫描、点击、捡起、丢弃、使用、左右键、装备穿戴等自动绑定触发点被绑定。

为什么捡起别人的绑定物品没有送回?

item.send-back-on-pickup 只是送回行为开关,前提是对应设置中 item-deny.pickup 也为 true

item-deny:
pickup: true
item:
send-back-on-pickup: true

为什么方块或实体命令无效?

方块绑定需要 config.yml 开启 block-listener 并重启;实体绑定需要开启 entity-listener 并重启。实体绑定命令只在 Minecraft 1.13+ 可用。

/sakurabind superCallback 会扫描离线玩家吗?

不会。它会扫描在线玩家背包、在线玩家末影箱、世界掉落物和已加载区块容器,不扫描离线玩家数据。

送回队列都失败会怎样?

插件会按 send-back-queue 依次尝试。若所有目的地都不可用或放不下,剩余物品无法继续保存,有丢失风险。建议至少保留 database 并保持数据库可用。

修改配置后为什么没生效?

先确认修改的是服务器实际运行目录:

服务端根目录/plugins/SakuraBind

大多数配置保存后会自动重载,也可以手动执行:

/sakurabind reload

只重载单个文件:

/sakurabind reload settings.yml

如果配置注释写了“重启生效”,需要重启服务端,例如 block-listenerentity-listener、模块总开关、日志文件路径等。

物品已经绑定,为什么看不到 lore?

绑定判断依赖 NBT,不依赖 lore。下面几种情况都可能没有 lore:

  • 命令绑定时使用了 -noLore
  • item.lore 配置为空。
  • 其他插件修改了物品 lore。
  • 物品 NBT 仍在,但绑定 lore 被手动删掉。

可以用 PlaceholderAPI 或 /sakurabind nbt 辅助确认物品是否仍有绑定 NBT。

怎么知道某个物品命中了哪个设置?

手持物品执行:

/sakurabind test match

它会输出物品最终命中的设置名和耗时。

如果要检查某个指定匹配器为什么没命中:

/sakurabind test tryMatch <匹配器ID>

玩家领不到暂存箱物品怎么办?

检查顺序:

  1. database.yml 是否连接成功。
  2. config.yml 是否 send-back-database: true
  3. 玩家背包是否有空间。
  4. 玩家是否正在数据同步保护中。
  5. 是否有控制台数据库报错。

管理员可以打开暂存箱查看:

/sakurabind openLost <玩家名或UUID> 1

getLost 每次最多按数据库记录分批取出,背包满时会保留剩余物品。让玩家腾出空间后再次执行即可。

为什么暂存箱占位符返回 null

%sakurabind_has_lost%%sakurabind_lost_count% 依赖数据库。数据库未连接时会返回 null,不是 false0。先检查 database.yml、控制台数据库连接日志和 send-back-database

为什么绑定道具没有反应?

检查:

  • modules/bind-item.yml 是否 enable: true
  • 修改模块总开关后是否重启。
  • 道具是否写入了正确 NBT。
  • 触发方式是否正确:把道具放在鼠标指针上,点击目标物品。
  • 如果是概率配置,75% 应写 7575.0,不是 0.75

为什么日志文件是空的?

log 目录会生成文件,但日志系统默认关闭。需要先开启对应总开关:

  • 绑定/解绑日志:logger.yml enable: true
  • 送回日志:send-back-logger.yml enable: true
  • 唯一物品日志:modules/unique-item.yml logger.enable: true

如果只开启 console: true,日志只输出到控制台;需要文件日志还要开启 file: true

为什么权限覆盖配置没生效?

检查 config.yml

enable-setting-permission-check: true

然后确认权限节点不包含 @。例如配置是:

item-deny:
drop@: true

权限应写:

sakurabind.settings.item-deny.drop.false

权限覆盖的是最终布尔值,不使用 @

可以删除 plugins/SakuraBind/data 吗?

不要随意删除。启用方块绑定或实体绑定后,插件会把绑定缓存持久化到数据目录。删除后,已放置方块或已存在实体的绑定信息可能丢失。

装备穿戴触发为什么没生效?

auto-bind.onEquipWearauto-unbind.onEquipWear 只在 Paper 或下游服务端上注册。Spigot/Bukkit 服务端不会触发该检测。

和背包同步插件一起用要注意什么?

安装 PlayerDataSQL、HuskSync、InvSync 等同步插件时,SakuraBind 会在玩家数据同步阶段暂停扫描,避免同步过程中误判背包物品。如果玩家刚登录后短时间内没有触发扫描送回或自动绑定,先等待同步完成再测试。