- 版权类型
- 原创
- 插件中文名称
- ShopManager
- 插件英文名称
- ShopManager
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- Leaves
- 语言支持
- 多语言
- 适配版本(Java)
- 26.x
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
ShopManager —— 高自由度商店系统)
基于 TabooLib 开发的商店核心插件,商品(goods)与商店界面(shops)完全分离,支持动态价格、事件折扣、随机商品轮换、多经济结算、跨服同步与图形化编辑。开箱自带 20+ 套市场 / 事件模板,最低支持 Paper/Spigot 1.16.5。
插件信息
软依赖(全部可选)
核心功能
1. 商品与界面分离设计
2. 完整的商店玩法
3. 事件系统(节日 / 活动玩法)
4. 多经济结算
5. 跨服与群组服
6. 图形化编辑器(ShopManagerEditor)
7. 内部物品库 + 第三方物品适配
8. 模板系统(快速开店)
9. 交易安全与审计
10. 调试与诊断
命令列表
玩家命令(默认可用)
管理命令(需 shopmanager.admin)
Velocity 代理端:/smanager open(菜单)(认证路由,需在代理端安装 ShopManagerVelocity)
权限列表
玩家侧操作(打开菜单、购买 / 出售)默认对所有玩家开放;如需按菜单 / 商品做细粒度权限,可在商店界面的按钮动作与商品池规则中配置。
配置结构(首次启动自动生成)
配置示例
商品池 goods/daily-picks.yml(每日轮换候选商品)
商店界面 shops/flash-market.yml(限时秒杀商店)
事件 events/happy-hour.yml(每日欢乐时光八折)
安装说明
截图
(发帖前请补充:商店主界面 / 商品详情 / 编辑器界面 / 事件配置示例)
更新日志(当前版本要点)
常见问题(FAQ)
Q1:需要安装 TabooLib 吗?
A:需要。ShopManager 基于 TabooLib 平台开发,服务端需加载 TabooLib 运行库。
Q2:支持哪些服务端?
A:最低 Paper/Spigot 1.16.5。Paper、Folia、Purpur、Leaf 以及搭配第三方物品插件(ItemsAdder/Oraxen/Nexo 等)的组合,建议在真实服务器上做一次 smoke test 后再正式上线。
Q3:怎么开启跨服同步?
A:先在 database.yml 配置好 MySQL/MariaDB 与 Redis,然后在 config.yml 打开 cross-server.enabled,并确保每个子服 server.id 唯一。
Q4:ShopManagerVelocity 必须装吗?
A:可选。单服或未启用代理路由时不需要;只有希望玩家在 Velocity 代理端执行 /smanager open 时才安装,且需在 config.yml 与代理端配置相同的 32+ 字符共享密钥。
Q5:编辑器(Editor)和核心(Core)版本要匹配吗?
A:Editor 通过核心的扩展注册接口挂载,建议使用配套版本(Editor 2.2.0 对应 Core 0.8.0);Editor 资源由编辑器自行安装到 menus/editor/,删除后重启可恢复。
Q6:交易日志保留多久?
A:成交日志按天写入 logs/ 目录,保留天数在 security.yml 中配置,可自由调整。
Q7:从旧版升级会怎样?
A:配置严格按现行格式解析,不读取旧字段、旧 rules 或旧目录;建议用新版配置目录重新生成后迁移业务文件。
注意事项
基于 TabooLib 开发的商店核心插件,商品(goods)与商店界面(shops)完全分离,支持动态价格、事件折扣、随机商品轮换、多经济结算、跨服同步与图形化编辑。开箱自带 20+ 套市场 / 事件模板,最低支持 Paper/Spigot 1.16.5。
插件信息
- 插件名称:ShopManager(Core)+ ShopManagerEditor + ShopManagerVelocity
- 当前版本:Core 0.8.0 / Editor 2.2.0 / Velocity 0.8.0
- 适用服务端:Paper / Spigot 1.16.5+(TabooLib 平台)
- 插件类型:商店 / 交易 / 经济类
- 语言支持:简体中文(默认)、English
- 主命令:/smanager
- Q群:1102249149
软依赖(全部可选)
- 经济:Vault、PlayerPoints
- 占位符:PlaceholderAPI(自带 PAPI 扩展)
- 第三方物品:ItemsAdder、Oraxen、Nexo、CraftEngine、MMOItems 等
- 跨服:Redis(可选)、Velocity 代理端(可选)
核心功能
1. 商品与界面分离设计
- goods/ 负责商品、价格、库存、限额、交易规则;
- shops/ 负责商店界面、布局、按钮、动作;
- 购买、出售、快捷出售共用同一套报价 → 校验 → 提交链路,规则不打架。
2. 完整的商店玩法
- Chest GUI 商店界面,商品搜索按玩家看到的显示名称匹配;
- 个人 / 全球库存两种模式;
- 动态价格:内置市场公式引擎,价格随供需 / 事件浮动,支持价格阶段与 market-rate / discount-rate / event-rate 多因子;
- 随机商品轮换:菜单可设为 random-daily / random-weekly / random-monthly / random-yearly,每天自动换一批候选商品上架;
- 限购限额:个人 / 全球限额、收益限制(earnlimit)、交易冷却;
- 手动补货:/smanager restock 一键补充全球库存。
3. 事件系统(节日 / 活动玩法)
- 内置9 个事件模板:欢乐时光、丰收周末、矿工周一、月初补给、夜市、红石周三、宝藏周末、周促销、冬季节日;
- 事件可配置折扣倍率、补货触发、开始 / 结束广播、事件标签,与动态价格叠加生效;
- 事件按周期自动轮换(每日 / 每周 / 固定时段),到点自动生效、自动结束,无需人工干预;
- 多个事件可设置堆叠优先级与覆盖模式,活动节奏完全可控。
4. 多经济结算
- 支持Vault 金币、PlayerPoints 点券、经验、经验等级、物品币、命令经济;
- 单个商品可同时标价多种货币,玩家自行选择支付方式(GUI 支付选择器);
- 命令型经济同样支持退款路径,保证交易可回滚。
5. 跨服与群组服
- Redis 集群总线:跨服同步成交统计、个人 / 全局限额与库存变化;
- 分布式限额:多人服务器共享限购额度,防跨服刷购;
- ShopManagerVelocity 配套:代理端认证菜单路由,共享密钥(32+ 字符)防伪造,请求 5 秒有效期——库存、经济、交易仍全部在子服完成,数据不经过代理。
6. 图形化编辑器(ShopManagerEditor)
- /smanager editor 打开商品 / 商店 / 事件可视化编辑器;
- 所见即所得编辑商品池、商品属性、商店布局与按钮动作;
- 主手物品一键保存进内部物品库,编辑保存自动落盘(原子写入,防写坏配置);
- 编辑器布局可热重载,资源删除后重启自动恢复。
7. 内部物品库 + 第三方物品适配
- /smanager item save/give/list 管理内部物品库;
- 检测到第三方插件物品(ItemsAdder/Oraxen/Nexo 等)时自动识别,不落内部库,由外部适配器直接引用;
- 编译期校验每个商品引用,无法解析的物品会拒绝启动候选配置,绝不让菜单渲染出 BARRIER 错误物品。
8. 模板系统(快速开店)
- 自带14 套可复用模板:标准市场、标准交易、每日 / 每周 / 每小时补货、新手限量、会员限量、回收站、富余回收、批发、合约订单、动态市场、应急补给等;
- 商品池与商店可直接从模板创建,配置量大幅减少。
9. 交易安全与审计
- 菜单库存守卫 + 点击防抖,防止刷物品;
- 成交日志统一写入 logs/trades-YYYY-MM-DD.tsv(按天归档,保留天数可配);
- 配置加载采用候选快照 + 原子提交,失败自动回滚上一代运行态,不影响在线玩家;
- 重载前自动关闭所有旧版商店界面,避免玩家看到过期数据。
10. 调试与诊断
- /smanager debug 只读诊断,不修改任何交易数据;
- /smanager debug price 直接预览动态价格计算过程,调价前先看结果。
命令列表
玩家命令(默认可用)
- /smanager help —— 查看命令分类与帮助
- /smanager open(菜单)(玩家) —— 打开商店菜单(管理员可代开)
- /smanager earnlimit —— 查看自己的收益限制
- /smanager earnlimit check(玩家) —— 查看指定玩家收益限制
管理命令(需 shopmanager.admin)
- /smanager reload —— 重载全部配置
- /smanager restock(商店/all)(商品/all) —— 手动补充全球库存
- /smanager create(菜单)(empty/normal/random-daily/random-weekly/random-monthly/random-yearly) —— 新建菜单配置(支持随机轮换类型)
- /smanager delete(菜单) —— 删除菜单配置
- /smanager refresh(玩家/global)(商店/all) —— 刷新随机商品菜单
- /smanager goods —— 商品池管理(create/delete/set)
- /smanager item —— 内部物品库管理(save/give/list)
- /smanager earnlimit reset(玩家)(商店/all) —— 重置指定玩家收益限制
- /smanager debug(config/events/storage/logging/providers/price) —— 运行诊断(只读)
- /smanager debug price(菜单)(商品)(buy/sell)(数量) —— 预览动态价格(只读)
- /smanager editor —— 打开图形化编辑器(Editor 插件提供)
Velocity 代理端:/smanager open(菜单)(认证路由,需在代理端安装 ShopManagerVelocity)
权限列表
- shopmanager.admin —— 全部管理命令与编辑器(默认 op)
玩家侧操作(打开菜单、购买 / 出售)默认对所有玩家开放;如需按菜单 / 商品做细粒度权限,可在商店界面的按钮动作与商品池规则中配置。
配置结构(首次启动自动生成)
代码:
plugins/ShopManager/
├─ config.yml # 主配置:语言 / 跨服 / Velocity / 市场周期 / 物品库 / 调试 / UI
├─ currency.yml # 经济定义
├─ database.yml # 数据库(含 Redis 连接)
├─ security.yml # 安全设置
├─ goods/ # 商品池(20+ 内置示例:资源、建筑、红石、农业、生物掉落……)
├─ shops/ # 商店界面(与商品池一一对应)
├─ menus/ # 功能菜单(主菜单、搜索、购买/出售数量、事件枢纽)
├─ items/ # 内部物品库(Editor 自动写入)
├─ events/ # 事件配置(9 个内置事件模板)
├─ templates/ # 可复用市场/交易模板(14 套)
└─ languages/ # zh_CN.yml / en_US.yml
配置示例
商品池 goods/daily-picks.yml(每日轮换候选商品)
YAML:
goods:
iron_ingot:
material: IRON_INGOT
description:
- '&6每日轮换候选商品'
- '&7每天随机抽取其中一部分上架'
market:
buy:
prices:
vault:
amount: '90' # 收购价 90 金币
sell:
prices:
vault:
amount: '22' # 出售价 22 金币
template: market-standard # 复用市场模板(限购周期等)
diamond:
material: DIAMOND
market:
buy:
prices:
vault:
amount: '850'
sell:
prices:
vault:
amount: '200'
template: market-standard
商店界面 shops/flash-market.yml(限时秒杀商店)
YAML:
Title: '&8限时秒杀 &7· {page}/{pages}'
UI:
search: true # 开启该商店的搜索
Layout:
- '#########'
- '# #'
- '# #'
- '# #'
- '# #'
- '#P#S#B#N#'
Goods:
source: flash-market # 绑定商品池
slots: auto
selection:
strategy: all
refresh: none
Trade:
template: trade-standard
Buttons:
Goods:
display:
material: '{goods-material}'
actions:
left:
- 'menu: buy-amount' # 左键进入购买数量菜单
right:
- 'menu: sell-amount' # 右键进入出售数量菜单
shift-left:
- 'buy: 64' # Shift+左键直接买 64 个
shift-right:
- 'sell: 64' # Shift+右键直接卖 64 个
S:
display:
material: OAK_SIGN
name: '&b搜索商品'
actions:
left:
- search
P:
display:
material: ARROW
name: '&e上一页'
actions:
left:
- 'page: previous'
N:
display:
material: ARROW
name: '&e下一页'
actions:
left:
- 'page: next'
事件 events/happy-hour.yml(每日欢乐时光八折)
YAML:
enabled: true
priority: 30 # 事件堆叠优先级
stacking:
group: sale
mode: override # 同组事件覆盖模式
schedule:
repeat: daily
start: '18:00' # 每天 18:00 开始
end: '20:00' # 20:00 结束
target:
shops:
- flash-market # 只作用于秒杀商店
effects:
buy-price-multiplier: 0.8 # 买价 8 折
description-add:
- '&e&l欢乐时光'
- '&6每日 18:00 - 20:00 · 买价 -20%'
tag: happy-hour
actions:
start:
broadcast:
- '&e[ShopManager] 欢乐时光开始,秒杀商店全场八折!'
end:
broadcast:
- '&7[ShopManager] 今日欢乐时光结束。'
安装说明
- 将 ShopManager-0.8.0.jar 放入子服 plugins/ 目录(需要 TabooLib 平台支持);
- (可选)管理服安装 ShopManagerEditor-2.2.0.jar 获得图形化编辑能力;
- (群组服可选)代理端安装 ShopManagerVelocity-0.8.0.jar,并配置 32+ 字符共享密钥;
- 重启服务器,按需修改配置后执行 /smanager reload。
截图
(发帖前请补充:商店主界面 / 商品详情 / 编辑器界面 / 事件配置示例)
更新日志(当前版本要点)
常见问题(FAQ)
Q1:需要安装 TabooLib 吗?
A:需要。ShopManager 基于 TabooLib 平台开发,服务端需加载 TabooLib 运行库。
Q2:支持哪些服务端?
A:最低 Paper/Spigot 1.16.5。Paper、Folia、Purpur、Leaf 以及搭配第三方物品插件(ItemsAdder/Oraxen/Nexo 等)的组合,建议在真实服务器上做一次 smoke test 后再正式上线。
Q3:怎么开启跨服同步?
A:先在 database.yml 配置好 MySQL/MariaDB 与 Redis,然后在 config.yml 打开 cross-server.enabled,并确保每个子服 server.id 唯一。
Q4:ShopManagerVelocity 必须装吗?
A:可选。单服或未启用代理路由时不需要;只有希望玩家在 Velocity 代理端执行 /smanager open 时才安装,且需在 config.yml 与代理端配置相同的 32+ 字符共享密钥。
Q5:编辑器(Editor)和核心(Core)版本要匹配吗?
A:Editor 通过核心的扩展注册接口挂载,建议使用配套版本(Editor 2.2.0 对应 Core 0.8.0);Editor 资源由编辑器自行安装到 menus/editor/,删除后重启可恢复。
Q6:交易日志保留多久?
A:成交日志按天写入 logs/ 目录,保留天数在 security.yml 中配置,可自由调整。
Q7:从旧版升级会怎样?
A:配置严格按现行格式解析,不读取旧字段、旧 rules 或旧目录;建议用新版配置目录重新生成后迁移业务文件。
注意事项
- 配置严格按现行格式解析,不兼容旧版本字段与旧 rules 目录;
- 跨服模式请在 database.yml 完成 Redis 配置后再开启,且每个子服 server.id 必须唯一;
- 生产环境建议关闭 debug;调试命令为只读,不会修改交易数据。