搜索

出售权限折扣与倍率

设置普通、VIP、SVIP 出售价,理解规则优先级、权限授权、金额精度和跨服配置。

适用版本:0.1.0+build.107 及以后。转换菜单、内置一键出售按钮和 /emc sellall 使用同一规则;购买、自动补料、退款和转账不受影响。

配置示例

在 plugins/LIEMC/config.yml 中配置:

sell-pricing:
  # true 开启,false 按原价;插件默认 false。
  enabled: true
  # 没有命中权限时按原价的80%回收。
  default-multiplier: 0.8
  # 任意非空 Bukkit 权限节点均可使用。
  permission-rules:
    - permission: "liemc.sell.vip"
      # 整数,越大越优先。
      priority: 10
      # VIP 按原价90%回收。
      multiplier: 0.9
    - permission: "liemc.sell.svip"
      priority: 20
      # SVIP 按原价100%回收。
      multiplier: 1.0

修改后执行 /emc reload,关闭旧菜单再打开。假设物品单价为 10 EMC,出售 10 个时:普通玩家获得 80、VIP 获得 90、SVIP 获得 100 EMC。

匹配规则

  • 未开启功能:固定倍率 1。
  • 开启但没有权限命中:使用 default-multiplier。
  • 多条命中:只选 priority 最大者;优先级相同时取列表靠前者,不相加、不叠乘,也不是自动取最高倍率。
  • 优先级为整数,允许 -2147483648 至 2147483647;缺失或非法时按 0。
  • 倍率范围为 0.0001 至 1000。非法默认倍率回退 1;权限为空或倍率非法的规则忽略。
  • 权限变化会在下一笔交易重新检查;已打开的 GUI 显示需重开刷新。
  • 示例权限 liemc.sell.vip 与 liemc.sell.svip 默认不授予,包括 OP。自定义权限按 Bukkit/权限插件的实际判定结果处理。

倍率大于 1 会让出售价格高于购买原价,可能产生反复买卖套利。通常折扣应配置在 0 到 1 之间,且不能为 0。

授予权限

安装 LuckPerms 后,在控制台执行(将“玩家名”替换为实际名称):

lp user 玩家名 permission set liemc.sell.vip true

也可给现有权限组授予同一节点。命令格式见 LuckPerms 权限命令文档。LIEMC 不要求使用 LuckPerms,其他支持 Bukkit 权限的插件同样可用。

界面与消息变量

在 item-display.default-lore 或商品独立 lore 中加入:

    - "&7购买单价:&e{emc}"
    - "&7出售单价:&a{sell_emc}"
    - "&7出售倍率:&f{sell_multiplier}x({sell_percent}%)"

{sell_emc} 是当前玩家出售一个物品的报价,不改变 {emc} 的含义。{sell_multiplier}、{sell_percent}、{sell_permission} 也可用于 GUI 按钮;未命中权限或功能关闭时,{sell_permission} 为空。

出售成功消息另外支持 {base_amount} 原总价、{amount} 折后结算金额。一键出售还支持 {stacks} 堆数、{items} 个数。已有自定义 Lore 和消息不覆盖,按需手动添加变量。

金额精度与安全

先按十进制汇总整笔商品原价,再应用一次倍率,四舍五入到四位小数。结果为零、非有限数或超出货币范围时拒绝出售并保留物品。

PlayerPoints 只接受整数,会将整笔折后金额向上取整;批量出售金额不一定等于“已取整的单件报价 × 件数”。Vault 最终精度取决于所接经济插件。

结算时先预留本次物品;入账失败会恢复原槽位,菜单已关闭或槽位已被占用时返还背包,装不下则掉落。经济回调关闭菜单、重入出售或在原槽位放入新物品,不会重复支付或清除新物品。

sell-pricing 是各服本地规则,不通过商品数据库广播。多服需要同步这一配置,并分别执行 /emc reload。