主题
这页主要回答启动、配置、命令、流水、系统资金池与集成时最常见的问题。
1. 为什么插件提示共享数据库不可用,直接不启动?
因为当前版本默认强依赖 HNCore 共享数据库。
这是刻意设计,不是 Bug。
原因是:
- 经济系统要求账务一致性
- 如果静默切到本地库,很容易多服数据分裂
- 运维会以为在共库,实际并没有
所以应该先排查 HNCore 的数据库启用状态,而不是强行让 HNEconomy 降级。
2. 我已经写了 main-currency,为什么命令还说货币不存在?
优先检查:
currencies.yml里是否真的有这个货币 ID- 是否写成了大小写不一致
- 该货币是否被禁用
- 配置改完后是否执行了重载或重启
3. 为什么 /pay 失败了?
/pay 当前会被很多条件限制,失败不一定是余额问题。
常见原因包括:
- 玩家转账功能被关闭
- 需要权限但你没有权限
- 不允许给自己转账
- 金额小于最小值
- 金额超过单次上限
- 今日累计超过上限
- 冷却中
- 对方拒收转账
- 当前货币不允许玩家转账
- 扣完主金额和手续费后余额不足
最稳的排查方式是:
- 看命令返回的失败原因
- 再检查
config.yml -> pay - 最后再去查玩家余额与流水
4. 为什么 /money 能看到余额,但 /pay 还是失败?
因为“能看余额”和“允许转账”是两件事。
例如下面这些情况都可能出现:
- 玩家有余额,但该货币不允许玩家转账
- 玩家有余额,但扣完手续费后不够
- 玩家有余额,但对方拒收
- 玩家有余额,但正在冷却时间内
5. 为什么手续费没有直接消失,而是进了系统资金池?
这是当前版本的设计选择。
原因是:
- 更方便做审计
- 更方便做今日 / 累计手续费统计
- 更方便以后接商店、拍卖、税收等玩法
如果手续费只是“销毁”,你就很难做完整运营统计。
6. 为什么系统资金池余额和玩家余额都能排行?
因为系统资金池本质上也是统一账户体系里的一类 owner,只是:
owner_type = SYSTEMowner_id = TREASURY
既然底层是统一账户模型,那么:
- 余额查询
- 流水查询
- 排行
- 导出
理论上都可以复用同一套能力。
7. 为什么我能改余额,却查不到流水?
正常情况下不应该出现这种情况。
当前系统设计是:
- 余额变动
- 流水写入
放在同一个事务里。
如果真的出现“余额变了但没流水”,优先怀疑:
- 数据库层被手工改过
- 有外部系统绕过
EconomyService直接写库 - 你查的不是同一套数据库
8. 动态创建货币后,为什么配置文件也变了?
因为当前版本的动态货币管理不是“只改内存”,而是:
- 修改配置文件
- 保存配置
- 重载插件
- 同步数据库
这是一种偏运维友好的设计:
- 配置文件是最终真相之一
- 重启后不会丢
- Git 也能追踪
9. Vault 和多货币是什么关系?
当前 Vault 集成更像一个“兼容层”,而不是多货币主入口。
Vault 默认会映射到:
main-currency
所以如果你服里有多种货币:
HNEconomy原生命令和 API 仍然是主玩法- Vault 更适合兼容那些只支持单货币的旧插件
10. HNCore 占位符桥为什么有些占位符返回空?
这里说的,是你在 PlaceholderAPI 外部环境里使用的 %hncore_economy_xxx% 这类占位符。
优先检查:
- PlaceholderAPI 是否已安装
config.yml -> placeholderapi.enabled是否为true- 你写的是不是当前版本推荐的
%hncore_economy_xxx%前缀 - 你请求的货币 ID 是否存在
- 当前是否有主货币
- 玩家是否有对应上下文(例如玩家类占位符必须带玩家对象)
11. 系统资金池告警为什么没触发?
优先检查:
treasury.enabled是否为truetreasury.alert.enabled是否为true- 是否给对应货币设置了阈值
- 当前系统资金池余额是否真的低于阈值
- 是否还没到轮询周期
12. 我应该先看哪几页?
如果你是服主:
如果你是运维:
如果你是开发者:
