常见问题
先看这三个问题
| 现象 | 优先检查 |
|---|---|
| 自动绑定不触发 | 测试玩家是否 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.all为false。 - 手动命令
/sakurabind bind item <玩家>仍可用于确认插件本身能写入绑定 NBT。
自动绑定不触发的完整检查清单
- 测试玩家不是 OP,且没有
sakurabind.bypass.all。 - 目标物品能被
/sakurabind test tryMatch <匹配器ID>匹配。 settings.auto-bind.enable是true。- 至少开启一个触发项,例如
onClick、onPickup、onDrop、onScanner。 - 如果依赖扫描器,
config.yml scanner-period必须大于0。 - 如果依赖装备穿戴触发,服务端必须是 Paper 或下游核心。
怎么让单个物品自动绑定?
手持物品执行:
/sakurabind autoBind
该命令会写入 config.yml 中 auto-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-listener、entity-listener、模块总开关、日志文件路径等。
物品已经绑定,为什么看不到 lore?
绑定判断依赖 NBT,不依赖 lore。下面几种情况都可能没有 lore:
- 命令绑定时使用了
-noLore。 item.lore配置为空。- 其他插件修改了物品 lore。
- 物品 NBT 仍在,但绑定 lore 被手动删掉。
可以用 PlaceholderAPI 或 /sakurabind nbt 辅助确认物品是否仍有绑定 NBT。
怎么知道某个物品命中了哪个设置?
手持物品执行:
/sakurabind test match
它会输出物品最终命中的设置名和耗时。
如果要检查某个指定匹配器为什么没命中:
/sakurabind test tryMatch <匹配器ID>
玩家领不到暂存箱物品怎么办?
检查顺序:
database.yml是否连接成功。config.yml是否send-back-database: true。- 玩家背包是否有空间。
- 玩家是否正在数据同步保护中。
- 是否有控制台数据库报错。
管理员可以打开暂存箱查看:
/sakurabind openLost <玩家名或UUID> 1
getLost 每次最多按数据库记录分批取出,背包满时会保留剩余物品。让玩家腾出空间后再次执行即可。
为什么暂存箱占位符返回 null?
%sakurabind_has_lost% 和 %sakurabind_lost_count% 依赖数据库。数据库未连接时会返回 null,不是 false 或 0。先检查 database.yml、控制台数据库连接日志和 send-back-database。
为什么绑定道具没有反应?
检查:
modules/bind-item.yml是否enable: true。- 修改模块总开关后是否重启。
- 道具是否写入了正确 NBT。
- 触发方式是否正确:把道具放在鼠标指针上,点击目标物品。
- 如果是概率配置,
75%应写75或75.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.onEquipWear 和 auto-unbind.onEquipWear 只在 Paper 或下游服务端上注册。Spigot/Bukkit 服务端不会触发该检测。
和背包同步插件一起用要注意什么?
安装 PlayerDataSQL、HuskSync、InvSync 等同步插件时,SakuraBind 会在玩家数据同步阶段暂停扫描,避免同步过程中误判背包物品。如果玩家刚登录后短时间内没有触发扫描送回或自动绑定,先等待同步完成再测试。