跳到主要内容

FreeMinecraftModels 家具商店

FreeMinecraftModels 附带一个可选的、基于 Vault 的商店,让玩家可以用游戏内货币购买可合成的道具。该商店默认禁用 —— 仅当显式启用且存在 Vault 经济提供方时才会注册自身。

快速设置

  1. 安装 Vault 以及兼容 Vault 的经济提供方(EssentialsX、CMI 等)。
  2. 启动服务器一次,使 plugins/FreeMinecraftModels/shop_config.yml 得以生成。
  3. shop_config.yml 中设置 enabled: true
  4. 重启服务器(商店在启动期间注册)。
  5. 在游戏内运行 /fmm shop 以确认菜单可以打开。

只要缺少上述任一前置条件,/fmm shop 命令就不会注册,玩家会看到"未知命令"错误,而不是可配置的已禁用消息。

工作原理

  • 商店从 plugins/FreeMinecraftModels/recipes/ 读取配方。
  • 同时满足 isEnabled: true shopEnabled: true 的每条配方都会被列入商店。
  • 每个条目显示配方的产物物品(道具的纸质放置物品),并附加两行 Lore:一行 Price:,一行 Click to purchase 提示。
  • 点击条目会调用 PurchaseHandler,它通过 Vault 检查玩家余额、扣款,并将放置物品给予玩家。背包放不下的物品会掉落在玩家脚下。

权限

权限默认描述
freeminecraftmodels.shoptrue打开商店所需。默认为 true,因此所有玩家都可浏览

仅有权限不能让商店启用 —— 仍需 shop_config.ymlenabled: true 以及可用的经济提供方。

shop_config.yml

完整键参考见 配置页面。关键的键有:

  • enabled —— 总开关(默认 false
  • defaultPrice —— 写入未设置自身 shopPrice 的配方文件
  • menuTitlepriceLoreFormatclickToBuyLoreFormat —— 视觉样式
  • 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
字段默认值行为
shopEnabledtruefalse 时,配方仍可合成,但永远不会出现在 /fmm shop
shopPriceshop_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: falsemessages.itemNotForSale
SHOP_DISABLED在运行时被强制禁用(例如经济提供方消失)messages.shopDisabled

故障排查

/fmm shop 不存在。 商店未注册。请同时确认以下三项:

  • 已安装 Vault
  • 已注册经济提供方(运行 /balance/eco 来确认有响应)
  • shop_config.ymlenabled: true

然后重启服务器。命令仅在启动时注册。

菜单中缺少我期望看到的物品。 打开 plugins/FreeMinecraftModels/recipes/ 中的配方文件,确认 isEnabledshopEnabled 均为 true。编辑后运行 /fmm reload

玩家被扣款但没有得到物品。 请检查服务器控制台是否有 Vault 错误。处理器只在成功的余额检查后才会消耗货币,但下游经济提供方仍可能让实际扣款失败 —— 处理器会捕获这种情况并返回 INSUFFICIENT_FUNDS。如果扣款成功而物品未能生成,请附上点击前后完整的控制台日志提交 bug 报告。