- ◆ 支持核心
- Arclight
- ◆ 插件前置
- Vault
- ◆ 游戏版本
- 1.21.1
CobbleMarket
作者:Polaris | Cobblemon 市场交易插件一句话定位:一个简单好用的 Cobblemon 市场,让玩家买卖更顺手。
核心功能
- 精灵/物品上架(可开关),税率/上限/过期天数可配置
- 精灵最低价规则(等级/闪光/满IV/种类/标签/复合)
- 市场筛选、分页、我的上架与下架返还
- 离线售出汇总提示,收益一次性通知
- 管理员 SHIFT+右键下架(自取/返还卖家)
- 精灵名称与 Lore 模板可自定义(含个体值/努力值拆分)
- 黑名单:精灵/物品禁止上架,物品支持类型与 NBT
- 颜色/渐变、音效反馈、自动重载配置
插件命令 & 权限
| 命令 | 说明 | 权限 |
|---|---|---|
| /cmarket open | 打开市场 | cobblemarket.use |
| /cmarket search <关键词> | 搜索商品 | cobblemarket.use |
| /cmarket sell <槽位1-6> <价格> | 上架精灵 | cobblemarket.use |
| /cmarket sellitem <价格> | 上架手中物品 | cobblemarket.use |
| /cmarket blacklistitem | 禁止手中物品上架 | cobblemarket.admin |
| /cmarket reload | 重载配置 | cobblemarket.admin |
| 权限:cobblemarket.limit.<数量> | 设置玩家上架上限(取最大值) | 权限节点 |
| 权限:cobblemarket.limit.* | 上架数量不限制 | 权限节点 |
兼容性
Java 21 | Minecraft 1.21.1 | Arclight 1.21.1(Bukkit + Fabric)Cobblemon 1.7.1+ | Vault 经济接口(推荐 XConomy 等 Vault 兼容经济)
安装与使用
- 将 CobbleMarket.jar 放入 plugins
- 启动服务器生成配置:plugins/CobbleMarket/config.yml
- 按需修改后执行:/cmarket reload(或启用自动重载)
- 玩家使用 /cmarket open 进入市场
管理与配置亮点
- 税率:支持百分比/固定税,含最小/最大值
- 精灵最低价规则:等级/闪光/满IV/种类/标签/复合
- 上架控制:可限制每人上架数量,支持按权限分级
- 物品上架开关:需要时才开启,避免早期玩法干扰
- 黑名单:精灵/物品可禁上架,物品支持 NBT
- UI 可调:颜色、名称、按钮文本、Lore 模板均可配置(支持 HEX/渐变)
颜色与渐变写法
支持两种写法:HEX 与渐变。适用于 GUI 名称、Lore、提示消息等。- HEX 颜色:D18A文字 或 &#FFD166文字
- 渐变:D18ACC8FF渐变文字(从左到右渐变)
设计取舍(做什么 / 不做什么)
做什么:清晰的交易流程、好用的界面、稳定的体验不做什么:不做复杂竞拍、不强绑特定经济插件
适用场景
- 长期运营的 Cobblemon 服务器
- 重视稳定与数据恢复的中大型服务器
插件配置
YAML:
# CobbleMarket 配置文件
# 注意:所有修改后可使用 /cmarket reload 重新加载
settings:
# 每个玩家最多可同时上架的数量(0=不限制)
# 可用权限覆盖:cobblemarket.limit.<数量>,cobblemarket.limit.* 表示不限制
maxListingsPerPlayer: 5
# 上架最低价格
minPrice: 1
# 上架最高价格
maxPrice: 100000000
# 是否允许上架普通物品(包含 NBT / 模组物品)
allowItemListings: false
# 上架到期自动下架天数(0=不启用)
listingExpireDays: 7
# 保存配置文件后自动重载插件配置
autoReloadConfig: true
# 聊天/提示消息中使用市场 GUI 的精灵名称格式
useGuiNameInMessages: true
# 精灵黑名单(按物种ID,例如 mewtwo / cobblemon:mewtwo)
pokemonBlacklist: []
# 物品黑名单(支持 mod 物品 / NBT 物品 / 插件自定义物品)
# 规则:
# - 物品类型:minecraft:diamond_sword / cobblemon:ultra_ball
# - NBT 精确:nbt:类型|名称|BASE64(使用 /cmarket blacklistitem 自动写入)
# 说明:无特殊 NBT 的物品会自动写入“类型”,有特殊 NBT 的物品才写入 nbt
itemBlacklist: []
# 精灵最低价规则(取所有规则的最大值)
pricing:
pokemon:
# 是否启用精灵最低价规则(关闭后仅使用 settings.minPrice)
enabled: false
# 基础最低价(未配置时使用 settings.minPrice)
baseMin: 1
# 等级分段最低价(格式:等级阈值:最低价,命中“>=阈值”的最高档)
level:
thresholds:
- "1:100"
- "50:5000"
- "100:20000"
# 满IV数量分段最低价
ivPerfects:
# 满IV判定值(默认 31)
perfectValue: 31
thresholds:
- "1:2000"
- "3:8000"
- "5:20000"
- "6:50000"
# 闪光最低价
shiny:
min: 10000
# 精灵种类最低价(使用 speciesId,如 mewtwo / cobblemon:mewtwo)
species:
mewtwo: 20000
# 精灵标签最低价(以 Cobblemon 实际标签为准,下面为常用示例)
# 常用标签示例:
# - legendary 传说
# - mythical 幻神
# - ultra_beast 究极异兽
# - pseudo_legendary 准神
# - starter 御三家
# - fossil 化石
# - baby 宝宝
# - regional 地区形态
tags:
legendary: 15000
# 复合规则(命中取最高)
rules: []
# 示例:
# rules:
# - when:
# species: [mewtwo]
# shiny: true
# perfectsMin: 3
# min: 100000
economy:
# 是否启用 Vault 经济
enabled: true
# 货币符号
currencySymbol: "$"
tax:
# 是否启用上架税
enabled: true
# 税收模式:percent 百分比 | flat 固定值
mode: "percent"
# 税率或固定值
value: 5.0
# 税费最小值
min: 0
# 税费最大值
max: 1000000
# 上架失败是否退还税费
refundable: false
language:
# 语言(zh_cn / en_us)
lang: "zh_cn"
gui:
# 市场 GUI 标题
title: "D18ACobbleMarket 	AA3AF- &#EDEFF2市场"
# 每页展示数量(建议 9 的倍数,最大 45)
pageSize: 45
# 上一页按钮文本
prevButton: "CC8FF上一页"
# 下一页按钮文本
nextButton: "CC8FF下一页"
# 筛选按钮文本({type} 为筛选类型)
filterButton: "CC8FF筛选: &#EDEFF2{type}"
# 未开启物品上架时的提示按钮文本
filterLockedLabel: "&#FFD166当前只支持精灵上架"
# 筛选类型显示文本
filterTypes:
all: "&#EDEFF2全部"
pokemon: "&#EDEFF2精灵"
item: "&#EDEFF2物品"
modItem: "&#EDEFF2模组物品"
# 上架按钮文本
listButton: "D18A上架精灵"
# 上架按钮文本(开启物品上架后显示)
listButtonItem: "D18A上架商品"
# 我的上架按钮文本
myListingsButton: "CC8FF我的上架"
# 返回市场按钮文本
backButton: "&#FF5D5D返回市场"
# 队伍上架选择界面
party:
title: "D18A选择上架精灵"
# 上架类型选择界面(开启物品上架后显示)
listSelect:
title: "D18A选择上架类型"
pokemonButton: "D18A上架精灵"
itemButton: "D18A上架手中物品"
# 我的上架界面
myListings:
title: "CC8FF我的上架"
listedLabel: "	AA3AF已上架的物品"
returnLabel: "	AA3AF下架的物品"
# 购买确认界面
confirm:
title: "&#FFD166确认购买"
confirmButton: "D18A确认购买"
cancelButton: "&#FF5D5D返回"
info: "	AA3AF点击确认购买该上架。"
# 下架确认界面(点击自己的商品时触发)
cancelConfirm:
title: "&#FF5D5D确认下架"
confirmButton: "&#FF5D5D确认下架"
cancelButton: "D18A返回"
info: "	AA3AF点击确认下架该商品。"
# 上架确认界面(选择队伍精灵后触发)
listConfirm:
title: "D18A确认上架"
confirmButton: "D18A确认上架"
cancelButton: "&#FF5D5D返回"
info: "	AA3AF确认后请输入价格完成上架。"
# 管理员下架界面(SHIFT+右键商品)
adminRemove:
title: "&#FF5D5D管理员下架"
toSelf: "D18A下架到自己背包"
toReturn: "&#FFD166下架到玩家下架处"
back: "&#FF5D5D返回市场"
# 市场精灵显示名称格式(为空则使用默认名称)
# 可用占位符:{species} {species_id} {nickname} {level} {shiny}
# 进阶占位符同 lore.market.pokemon(如 {gender} {nature} {ability} {ivs} {evs} 等)
pokemonNameFormat: "&f{species}"
lore:
# 市场精灵 Lore 自定义模板(支持占位符)
# 可用占位符:{seller} {price} {species} {species_id} {nickname} {level} {shiny}
# {gender} {nature} {ability} {held} {moves}
# {ivs} {evs}
# 单项数值:{iv_hp} {iv_atk} {iv_def} {iv_spatk} {iv_spdef} {iv_spe}
# {ev_hp} {ev_atk} {ev_def} {ev_spatk} {ev_spdef} {ev_spe}
market:
# 物品上架展示是否保留原物品 Lore(会追加在市场信息下方)
itemAppendOriginal: true
pokemon:
- "&#FFD166价格: &#EDEFF2{price} 	AA3AF卖家: &#EDEFF2{seller}"
- "CC8FF精灵: &#EDEFF2{species} 	AA3AFLv.{level}"
- "	AA3AF别名: &#EDEFF2{nickname} 	AA3AF闪光: &#EDEFF2{shiny}"
- "	AA3AF性别: &#EDEFF2{gender} 	AA3AF性格: &#EDEFF2{nature}"
- "	AA3AF特性: &#EDEFF2{ability} 	AA3AF携带: &#EDEFF2{held}"
- "	AA3AF个体值: &#EDEFF2生命 {iv_hp} 	AA3AF/ &#EDEFF2攻击 {iv_atk} 	AA3AF/ &#EDEFF2防御 {iv_def} 	AA3AF/ &#EDEFF2特攻 {iv_spatk} 	AA3AF/ &#EDEFF2特防 {iv_spdef} 	AA3AF/ &#EDEFF2速度 {iv_spe}"
- "	AA3AF努力值: &#EDEFF2生命 {ev_hp} 	AA3AF/ &#EDEFF2攻击 {ev_atk} 	AA3AF/ &#EDEFF2防御 {ev_def} 	AA3AF/ &#EDEFF2特攻 {ev_spatk} 	AA3AF/ &#EDEFF2特防 {ev_spdef} 	AA3AF/ &#EDEFF2速度 {ev_spe}"
- "	AA3AF技能: &#EDEFF2{moves}"
item:
- "&#FFD166价格: &#EDEFF2{price}"
- "	AA3AF卖家: &#EDEFF2{seller}"
- "CC8FF物品: &#EDEFF2{item} 	AA3AFx{amount}"
- "	AA3AF命名空间: &#EDEFF2{namespace}"
sounds:
# 是否启用市场音效
enabled: true
# 打开任意市场 GUI
guiOpen:
sound: "UI_BUTTON_CLICK"
volume: 0.4
pitch: 1.2
# 上架成功
listSuccess:
sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
volume: 0.6
pitch: 1.1
# 购买成功(买家)
buySuccess:
sound: "ENTITY_PLAYER_LEVELUP"
volume: 0.7
pitch: 1.0
# 操作失败/禁止
actionFail:
sound: "BLOCK_NOTE_BLOCK_BASS"
volume: 0.7
pitch: 0.7
# 领取返还
claimReturn:
sound: "ENTITY_ITEM_PICKUP"
volume: 0.6
pitch: 1.0
# 上架售出提示(卖家)
sellerSold:
sound: "BLOCK_NOTE_BLOCK_BELL"
volume: 0.6
pitch: 1.4
# 消息文本请在 messages_<lang>.yml 中维护(自动随 language.lang 切换)