FreeMinecraftModels 家具商店
FreeMinecraftModels 附带一个可选的、基于 Vault 的商店,让玩家可以用游戏内货币购买可合成的道具。该商店默认禁用 —— 仅当显式启用且存在 Vault 经济提供方时才会注册自身。
快速设置
- 安装 Vault 以及兼容 Vault 的经济提供方(EssentialsX、CMI 等)。
- 启动服务器一次,使
plugins/FreeMinecraftModels/shop_config.yml得以生成。 - 在
shop_config.yml中设置enabled: true。 - 重启服务器(商店在启动期间注册)。
- 在游戏内运行
/fmm shop以确认菜单可以打开。
只要缺少上述任一前置条件,/fmm shop 命令就不会注册,玩家会看到"未知命令"错误,而不是可配置的已禁用消息。
工作原理
- 商店从
plugins/FreeMinecraftModels/recipes/读取配方。 - 同时满足
isEnabled: true且shopEnabled: true的每条配方都会被列入商店。 - 每个条目显示配方的产物物品(道具的纸质放置物品),并附加两行 Lore:一行
Price:,一行Click to purchase提示。 - 点击条目会调用
PurchaseHandler,它通过 Vault 检查玩家余额、扣款,并将放置物品给予玩家。背包放不下的物品会掉落在玩家脚下。
权限
| 权限 | 默认 | 描述 |
|---|---|---|
freeminecraftmodels.shop | true | 打开商店所需。默认为 true,因此所有玩家都可浏览 |
仅有权限不能让商店启用 —— 仍需 shop_config.yml 中 enabled: true 以及可用的经济提供方。
shop_config.yml
完整键参考见 配置页面。关键的键有:
enabled—— 总开关(默认false)defaultPrice—— 写入未设置自身shopPrice的配方文件menuTitle、priceLoreFormat、clickToBuyLoreFormat—— 视觉样式messages.*—— 五条可自定义的反馈消息
所有消息字符串都支持 & 颜色代码以及配置参考中列出的占位符。
每条配方的字段
plugins/FreeMinecraftModels/recipes/<model_id>.yml 中的每条配方都带有两个商店特有字段:
isEnabled: true
model_id: "wooden_chair"
shape:
- "L L"
- "LLL"
- "L L"
ingredients:
L: OAK_LOG
shopEnabled: true
shopPrice: 250.0
| 字段 | 默认值 | 行为 |
|---|---|---|
shopEnabled | true | 为 false 时,配方仍可合成,但永远不会出现在 /fmm shop 中 |
shopPrice | shop_config.yml 中的 defaultPrice | 玩家点击物品时的 Vault 货币费用 |
/fmm craftify 编辑器在保存时会写入这两个字段,因此调整价格只需对配方文件做一次文本编辑,再执行 /fmm reload 即可。
购买结果
PurchaseHandler 识别五种结果。每一种都映射到 shop_config.yml 中一条可配置消息:
| 结果 | 触发条件 | 消息键 |
|---|---|---|
SUCCESS | 扣款成功且物品装入了背包 | messages.purchaseSuccess |
SUCCESS_WITH_OVERFLOW | 扣款成功但物品不得不掉落在玩家脚下 | messages.purchaseSuccess + messages.inventoryFull |
INSUFFICIENT_FUNDS | 玩家余额低于价格,或底层经济提供方拒绝了扣款 | messages.insufficientFunds |
NOT_FOR_SALE | 配方被禁用或 shopEnabled: false | messages.itemNotForSale |
SHOP_DISABLED | 在运行时被强制禁用(例如经济提供方消失) | messages.shopDisabled |
故障排查
/fmm shop 不存在。
商店未注册。请同时确认以下三项:
- 已安装 Vault
- 已注册经济提供方(运行
/balance或/eco来确认有响应) shop_config.yml中enabled: true
然后重启服务器。命令仅在启动时注册。
菜单中缺少我期望看到的物品。
打开 plugins/FreeMinecraftModels/recipes/ 中的配方文件,确认 isEnabled 和 shopEnabled 均为 true。编辑后运行 /fmm reload。
玩家被扣款但没有得到物品。
请检查服务器控制台是否有 Vault 错误。处理器只在成功的余额检查后才会消耗货币,但下游经济提供方仍可能让实际扣款失败 —— 处理器会捕获这种情况并返回 INSUFFICIENT_FUNDS。如果扣款成功而物品未能生成,请附上点击前后完整的控制台日志提交 bug 报告。