🏪 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+
Java21+
必需依赖Vault
可选依赖PlaceholderAPI、PlayerPoints、CraftEngine、AdventureMail

安装步骤

  1. AdventureMarket-1.2.0.jar 放入 plugins/
  2. 确保 Vault 和经济插件已安装
  3. 启动服务器自动生成配置
  4. /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

经济设置

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-ParserHEX 颜色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 — 权限组

出售收购拍卖税率邮箱有效期
Default3315%53d
Player101053%307d
Plus2020102%5010d
Vip3030151%8015d
Mvp4040200.5%10018d
Admin3月

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/,每个节点支持 DefaultAllowed-Groups

命令权限

权限说明默认
adventuremarket.command.market/markettrue
adventuremarket.command.market.sell出售true
adventuremarket.command.market.buy购买true
adventuremarket.command.market.search搜索true
adventuremarket.command.auction/auctiontrue
adventuremarket.command.auction.start发起拍卖true
adventuremarket.command.auction.bid竞拍true
adventuremarket.command.mailbox/mailboxtrue
adventuremarket.command.mailbox.send发送true
adventuremarket.command.merchandise/merchandisetrue
adventuremarket.command.profile/profiletrue
adventuremarket.command.store/storetrue
adventuremarket.command.money/moneytrue
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使用 Vaulttrue
adventuremarket.otherpermission.currencies.playerpoints使用点券true
adventuremarket.otherpermission.itemblacklistbypass绕过黑名单false
adventuremarket.admin管理员总权限OP
adventuremarket.plusshopPlusShop 会员false
adventuremarket.signscript.create创建木牌false

🔗 经济与联动

三货币系统

货币提供者符号
VaultVault 经济接口G
PlayerPointsPlayerPoints (反射)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 多货币模式符号识别问题