🏪 AdventureMarket
一、简介
AdventureMarket —— 一款全球市场交易插件,支持出售/收购/拍卖/邮箱/商店
AdventureMarket 允许玩家在全球市场中自由交易物品。支持出售、收购、拍卖三种模式并行,每位玩家拥有独立商店,交易物品自动邮箱投递,多权限组控制上架数和税率,并支持跨服MySQL同步。
AdventureMarket 支持 Paper / Spigot 1.21+ 服务器(Java 21),并且会第一时间支持未来版本。
AdventureMarket
- 三种交易模式 > 出售、收购、拍卖三模式并行
- 完整GUI > 13 个可自定义 GUI,全 YAML 驱动
- 邮箱系统 > 交易物品自动投递、批量签收
- 独立商店 > 每位玩家拥有个性化商店页面
- 权限组 > 6 级权限组控制上架数/税率/过期时间
- 跨服同步 > MySQL + HikariCP + 消息通道实时同步
- 多货币 > Vault / PlayerPoints 多货币支持
- 数据存储 > 支持 SQLite 和 MySQL 存储
- 高自定义 > 商品分类、界面布局、消息文本全部可配置
- 物品黑名单 > 禁止特定物品上架交易
二、插件前置说明
都是非必须
- Vault — 经济插件(需基础插件例如ess,cmi等)
- PlaceholderAPI — PAPI变量支持
- PlayerPoints — 点券插件
- CraftEngine — 自定义物品支持
- AdventureMail — 邮件系统联动
📥 安装与目录
环境要求
| 项目 | 要求 |
| 服务端 | Paper / Spigot 1.21+ |
| Java | 21+ |
| 必需依赖 | Vault |
| 可选依赖 | PlaceholderAPI、PlayerPoints、CraftEngine、AdventureMail |
安装步骤
- 将
AdventureMarket-1.2.0.jar 放入 plugins/
- 确保 Vault 和经济插件已安装
- 启动服务器自动生成配置
/market reload 热重载
目录结构
plugins/AdventureMarket/
├── Config.yml # 主配置
├── GlobalMarket.yml # 全球市场设置
├── Groups.yml # 权限组
├── Categories.yml # 商品分类
├── Mailbox.yml # 邮箱
├── Merchant.yml # 商家档案
├── ItemBlacklist.yml # 物品黑名单
├── Messages.yml # 消息文本
├── SignStore.yml # 木牌商店
├── Alias.yml # 命令别名
├── GUISettings/ # 13 个 GUI 配置
│ ├── GlobalMarketGUI.yml
│ ├── AuctionGUI.yml
│ ├── MailboxGUI.yml
│ └── ...
├── Permissions/ # 权限配置
│ ├── CommandPermissions.yml
│ ├── MerchandisePermissions.yml
│ ├── ProfilePermissions.yml
│ └── OtherPermissions.yml
└── Database.db # SQLite 数据
💰 交易命令
主命令 /market(别名 /am、/adventuremarket)
主命令总览
| 命令 | 说明 |
/market | 打开全球市场 GUI |
/market help | 帮助信息 |
/market reload | 重载配置 |
/market gui [open <页面>] | GUI 导航 |
/market search <关键词> | 搜索商品 |
出售 /market sell
/market sell <价格> [retail]
- 手持物品以指定价格上架
- 货币后缀:
100G = Vault,50P = 点券,200S = 银币
- 附加
retail 自动计算零售单价
- 检查流程:黑名单 → 价格限制 → 数量上限 → 税款
购买 /market buy
/market buy <商品ID> [数量]
- 零售模式下可指定数量
- 物品进入背包,满则掉落或发邮箱
批量上架 /market sellinventory
/market sellinventory <单价> (别名: /market batch)
- 打开批量上架 GUI,拖入物品后确认
- 以「单价 × 数量」逐个上架
🔨 拍卖系统
| 命令 | 说明 |
/auction | 打开拍卖市场 GUI |
/auction start <起拍价> | 发起拍卖 |
/auction bid <ID> <出价> | 竞拍出价 |
/auction gui <ID> | 竞价详情 GUI |
/auction confirm <ID> | 确认成交 |
拍卖加时机制
在 GlobalMarket.yml 中配置 Auction-Automatic-Overtime:
Auction-Automatic-Overtime:
Enabled: false
Policies:
'default':
Limit: 3 # 最多加时次数
Overtime: 30s # 每次加时
Conditions:
Time-Remaining: 10s
Bidding-Price: 100
📬 邮箱系统
| 命令 | 说明 |
/mailbox | 打开邮箱 GUI |
/mailbox send <玩家> | 发送手持物品 |
/mailbox pickup <ID> | 签收指定邮件 |
/mailbox delete <ID> | 删除邮件 |
/mailbox fetchall | 一键签收所有 |
ℹ️ AdventureMail 联动
检测到 AdventureMail 时,/mailbox gui 自动重定向。
🛒 商品与商店
商品管理 /merchandise
| 命令 | 说明 |
/merchandise gui <ID> | 商品详情 GUI |
/merchandise remove <ID> | 下架商品 |
/merchandise reprice <ID> <价格> | 修改价格 |
/merchandise set <ID> <属性> [值] | 修改属性 |
可修改属性
| 属性 | 说明 |
price | 整售价 |
retailprice | 零售单价 |
neverexpire | 永不过期 true/false/switch |
unlimited | 无限库存 |
hidemerchantname | 隐藏商家名 |
hidemerchandise | 隐藏商品 |
商家档案 /profile
| 命令 | 说明 |
/profile [gui] [玩家] | 打开档案 GUI |
/profile set storename [名字] | 设置商店名称 |
/profile set description [描述] | 设置商店描述 |
/profile set storeclosed switch | 切换打烊状态 |
/profile refresh [玩家] | 刷新商家数据 |
商店 /store
| 命令 | 说明 |
/store | 打开自己商店 |
/store view <玩家> | 查看指定玩家商店 |
/store list | 所有商店列表 |
分类与经济
| 命令 | 说明 |
/category list | 列出分类 |
/category gui | 分类选择 GUI |
/money | 查看余额 |
/money pay <玩家> <金额> | 转账 |
🔧 管理员命令
⚠️ 权限
需要 adventuremarket.admin(默认 OP)
| 命令 | 说明 |
/market admin stats | 市场统计 |
/market admin database | 数据库信息 |
/market admin backup | 异步备份 |
/market admin recorder [N] | 最近 N 条交易记录 |
/market admin item | 序列化手持物品 |
/market admin remove <ID> | 强制下架 |
/market admin clear expired | 清理过期商品 |
上一篇← 商品与商店
下一篇Config.yml →
⚙️ Config.yml
经济设置
Economy-Settings:
Default-Currency-System: Vault # Vault / PlayerPoints / Default
Multiple-Currencies-System: false
Multiple-Currencies-System-List:
Vault: true
PlayerPoints: true
Default: true
Multiple-Currencies-Symbols:
Vault: 'G' # /market sell 100G
PlayerPoints: 'P'
Default: 'S'
Operators: [] # 运营者UUID(出售不打款)
模块开关
Module-Switches:
GlobalMarket: true
Mailbox: true
Recorder: true
Profile: true
Money: true
Custom-GUI: true
Sign-Store: false
MySQL 存储
MySQL-Storage:
Enabled: false
Hostname: localhost
Port: 3306
Database: adventuremarket
Tables:
GlobalMarket: am_globalmarket
Merchant: am_merchant
Mailbox: am_mailbox
Recorder: am_recorder
MessageChannel: am_message_channel
Auto-Refresh:
Enabled: false
GlobalMarket: 10.0 # 秒
Merchant: 10.0
命令冷却
Commands-Cooldown:
Enabled: true
List:
- 'market sell:3.0'
- 'market buy:1.0'
- 'auction start:3.0'
- 'auction bid:1.0'
- 'mailbox send:3.0'
- 'money pay:3.0'
其他设置
| 配置项 | 说明 | 默认 |
Language | 语言 | Simplified-Chinese |
Hex-Color-Parser | HEX 颜色 | true |
Item-Serialization-Method | 序列化方式 | DEFAULT |
Multi-Server-Message-Channel | 跨服消息通道 | false |
📊 市场与分组配置
GlobalMarket.yml
| 配置项 | 说明 | 默认 |
Default-Sorting | 排序方式 | UPLOAD_TIME |
Retaining-Decimal-Places | 价格小数位 | 2 |
Merchandises-Match-When-Uploading | 上架匹配收购 | true |
Transaction-After-Taxes | 交易前收税 | true |
Refund-Taxes-Upon-Merchandise-Removal | 下架退税 | false |
交易细分
Transaction:
Selling:
Send-To-Mailbox: false
Default-To-Retail-Mode: false
Purchasing:
Comparison-Products: true
Auctions:
Allow-Remove-After-Bidding: true
价格限制
Limitation-Of-Price:
Enabled: false
Selling:
DIAMOND: 50-500 # 单价限制
Purchasing:
DIAMOND: 50-500
Groups.yml — 权限组
| 组 | 出售 | 收购 | 拍卖 | 税率 | 邮箱 | 有效期 |
| Default | 3 | 3 | 1 | 5% | 5 | 3d |
| Player | 10 | 10 | 5 | 3% | 30 | 7d |
| Plus | 20 | 20 | 10 | 2% | 50 | 10d |
| Vip | 30 | 30 | 15 | 1% | 80 | 15d |
| Mvp | 40 | 40 | 20 | 0.5% | 100 | 18d |
| Admin | ∞ | ∞ | ∞ | — | ∞ | 3月 |
Categories.yml — 商品分类
| 分类 | 匹配方式 |
| 默认 | 黑名单(全部可入) |
| 盔甲 | 白名单 Materials |
| 武器 | 白名单 Materials |
| 工具 | 白名单 Materials |
| 食物 | Internal-Modules: Foods |
| 方块 | Internal-Modules: Blocks |
| 资源 | 白名单 Materials |
匹配字段:Materials / Display-Name-Keywords / Lore-Keywords / Enchantments / Custom-Model-Data / Internal-Modules
📋 其他配置
Mailbox.yml
| 配置项 | 说明 | 默认 |
Default-Sorting | 排序 | ACCORDING_TO_THE_STATE |
Auto-Delete-Expired-Mails | 自动删除过期 | false |
Join-Messages | 登录提示未读 | true |
Auto-Delete-When-Picking-Up | 签收自动删除 | false |
Merchant.yml
| 配置项 | 说明 | 默认 |
Cooldown-Of-Parameters-Setting | 设置冷却(秒) | 5.0 |
Store-Settings.Maximum-Name-Words | 商店名最大字数 | 20 |
Store-Settings.Minimum-Name-Words | 最小字数 | 3 |
Default-Parameters.Store-Name | 默认商店名 | &2&l{player} 的商店 |
ItemBlacklist.yml
Enabled: false
Whitelist: false
Materials:
- COMMAND_BLOCK
- BEDROCK
Display-Name-Keywords:
- '已绑定'
Display-Lore-Keywords:
- '已绑定'
ℹ️ 提示
全局、市场、邮箱三级黑名单独立控制,格式相同。
SignStore.yml — 木牌商店
Sign-Scripts:
'[我的商店]':
Permission:
Default: false
Permission: adventuremarket.signscript.create
Sign-Text:
Line-1: '&0&l[{storeName}&0&l]'
Line-2: '&0&l点击打开'
Commands:
- 'am store view {player}'
Messages.yml
支持 &a 颜色、#RRGGBB HEX、<gradient:c1:c2> 渐变色。分类:General / Market / Auction / Mailbox / Merchant / Economy / Admin。
🖥️ GUI 系统
所有 GUI 位于 GUISettings/,YAML 格式(兼容 GMP)。
通用结构
Simplified-Chinese:
GUI-Title: '&f标题'
GUI-Size: 54
Shopping-Buttons:
Selling-Item:
Affordable:
Display-Item-Meta: true
Lores: ['!lores!', '...']
Location:
Slots-Of-X: [1,2,3,4,5,6]
Slots-Of-Y: [1,2,3,4,5]
Custom-Buttons:
'按钮名':
Item: 'MAP'
Commands: [...]
商品 Lore 变量
| 变量 | 说明 |
{type} | 商品类型 |
{player} | 商家名 |
{displayPrice} | 整售价 |
{displayRetailPrice} | 零售单价 |
{currency} | 货币名称 |
{expireTimeLeft} | 剩余时间 |
{displayBiddingPrice} | 当前竞拍价 |
{topBidder} | 最高出价人 |
{uid} | 商品 UID |
!lores! | 原始物品 Lore |
所有 GUI 列表
| 文件 | 说明 |
| GlobalMarketGUI.yml | 全球市场主界面 |
| AuctionGUI.yml | 拍卖列表 + 竞价详情 |
| MailboxGUI.yml | 个人邮箱 |
| CategoryGUI.yml | 分类选择 |
| SearchGUI.yml | 搜索界面 |
| MerchandiseGUI.yml | 商品详情/编辑 |
| MerchantProfileGUI.yml | 商家档案 |
| MerchantStoreGUI.yml | 个人商店 |
| MerchantStoreListGUI.yml | 所有商店列表 |
| SellInventoryGUI.yml | 批量上架 |
| BuyInventoryGUI.yml | 批量收购 |
| TransactionGUI.yml | 交易详情 |
🔑 权限系统
权限配置位于 Permissions/,每个节点支持 Default 和 Allowed-Groups。
命令权限
| 权限 | 说明 | 默认 |
adventuremarket.command.market | /market | true |
adventuremarket.command.market.sell | 出售 | true |
adventuremarket.command.market.buy | 购买 | true |
adventuremarket.command.market.search | 搜索 | true |
adventuremarket.command.auction | /auction | true |
adventuremarket.command.auction.start | 发起拍卖 | true |
adventuremarket.command.auction.bid | 竞拍 | true |
adventuremarket.command.mailbox | /mailbox | true |
adventuremarket.command.mailbox.send | 发送 | true |
adventuremarket.command.merchandise | /merchandise | true |
adventuremarket.command.profile | /profile | true |
adventuremarket.command.store | /store | true |
adventuremarket.command.money | /money | true |
adventuremarket.command.reload | 重载 | false |
adventuremarket.command.admin | 管理员 | false |
商品权限
| 权限 | 说明 | 默认 |
adventuremarket.merchandise.options.editall | 编辑所有商品 | Admin |
adventuremarket.merchandise.marketing-mode.wholesale | 整售 | true |
adventuremarket.merchandise.marketing-mode.retail | 零售 | true |
adventuremarket.merchandise.options.change-price | 修改价格 | true |
adventuremarket.merchandise.options.set-to-unlimited | 无限库存 | Admin |
adventuremarket.merchandise.options.set-to-never-expire | 永不过期 | Admin |
档案权限
| 权限 | 说明 | 默认 |
adventuremarket.merchant.options.set-store-name | 修改商店名 | Vip+ |
adventuremarket.merchant.options.set-store-description | 修改描述 | Vip+ |
adventuremarket.merchant.options.store-closed | 打烊 | true |
adventuremarket.merchant.options.hide-merchant-name | 隐藏名称 | Vip+ |
其他权限
| 权限 | 说明 | 默认 |
adventuremarket.otherpermission.currencies.vault | 使用 Vault | true |
adventuremarket.otherpermission.currencies.playerpoints | 使用点券 | true |
adventuremarket.otherpermission.itemblacklistbypass | 绕过黑名单 | false |
adventuremarket.admin | 管理员总权限 | OP |
adventuremarket.plusshop | PlusShop 会员 | false |
adventuremarket.signscript.create | 创建木牌 | false |
🔗 经济与联动
三货币系统
| 货币 | 提供者 | 符号 |
| Vault | Vault 经济接口 | G |
| PlayerPoints | PlayerPoints (反射) | P |
| Default | 内建银币 | S |
税率机制
- 上架时按权限组税率预扣
- 出售/收购/拍卖可设不同税率
- 运营者 UUID 出售不打款(系统商店)
数据库
双引擎:SQLite(默认)和 MySQL(HikariCP)。
| 表 | 说明 |
| GlobalMarket | 商品数据 |
| GlobalMarket_auction | 拍卖附加数据 |
| Merchant | 商家档案 |
| Mailbox | 邮箱数据 |
| Recorder | 交易记录 |
| MessageChannel | 跨服消息通道 |
PlaceholderAPI
标识符:%amarket_xxx%
| 占位符 | 说明 |
%amarket_balance% | Vault 余额 |
%amarket_selling_count% | 出售中商品数 |
%amarket_purchasing_count% | 收购中商品数 |
%amarket_bidding_count% | 拍卖中商品数 |
%amarket_mail_count% | 未读邮件数 |
%amarket_total_merchandises% | 市场总商品数 |
%amarket_store_name% | 商店名称 |
%amarket_group% | 权限组名 |
插件联动
| 插件 | 类型 | 说明 |
| Vault | 必需 | 金币经济接口 |
| PlaceholderAPI | 可选 | 占位符 |
| PlayerPoints | 可选 | 点券经济(反射加载) |
| CraftEngine | 可选 | GUI 图片标签 |
| AdventureMail | 可选 | 邮箱重定向 |
📝 更新日志
v1.2.0 最新
- NEW AdventureMail 联动 — 邮箱重定向
- NEW 批量上架 GUI — 拖入物品一键上架
- NEW 拍卖加时策略 — 竞价倒计时加时 + 广播
- NEW 跨服消息通道 (MySQL)
- NEW 运营者列表 — 系统商品不打款
- FIX 多货币模式符号识别问题