• 「7周年限定勋章」正式上线!4/5/6周年的纪念勋章也限时返场了噢~【点我去看看】
GlobalShop 高级拍卖行插件 点券/金币双货币支持, 复现魔兽世界拍卖系统

原创 开源 经济 GlobalShop 高级拍卖行插件 点券/金币双货币支持, 复现魔兽世界拍卖系统 1.3.2.1

本次更新
1. PlayerPoints改为软依赖支持
- 将PlayerPoints从硬依赖改为软依赖,提高插件兼容性
- 在PlayerPoints不可用时自动禁用点券功能
- 完善命令和GUI界面,在PlayerPoints不可用时只显示金币选项
- 对所有点券相关操作添加可用性检查,防止出错
- 优化用户提示信息,清晰告知用户点券功能不可用的情况
## 最近更新
1. 广播系统消息自定义优化(2025.3)
- 将广播系统的硬编码消息转移到message.yml中,支持完全自定义
- 支持5种不同位置的广播消息格式配置:聊天框、Boss栏、标题、副标题、动作栏
- 每个广播事件(物品上架、竞拍成功、一口价购买)可独立配置消息格式
- 消息配置支持动态reload,无需重启服务器即可生效
- 优化占位符系统,增强广播消息的自定义灵活性

2. GUI竞价系统优化(2025.3)
- 修复了竞价界面预加价按钮导致显示"已取消竞价"的错误提示问题
- 修复了竞价界面点击空位置时出现的空指针异常问题
- 优化了竞价过程中的元数据处理逻辑
- 提高了竞价界面操作的稳定性和用户体验

3. GUI翻页系统优化(2025.3)
- 修复了主拍卖界面下一页按钮无响应问题
- 优化了翻页逻辑,正确保存和传递页码元数据
- 调整每页显示物品数量从42个增加到45个
- 完善了当物品填满时的翻页功能,确保可以无限翻页

4. 管理员强制下架功能修复(2025.3)
- 修复了有人竞价的物品被管理员强制下架后不返回到卖家邮箱的问题
- 改进了物品强制下架的状态处理逻辑,使用CANCELLED状态替代EXPIRED状态
- 优化了竞价退款流程,确保正确退还竞价金额给竞价者
- 添加了更详细的通知信息,通知卖家和竞价者物品已被管理员下架

5. 配置重载功能优化(2025.3)
- 修复了config.yml中check_interval选项修改后无效的问题
- 优化了/auction reload命令的处理逻辑,确保配置重载后能立即应用新设置
- 添加了任务管理功能,支持在不重启服务器的情况下动态调整拍卖检查间隔
- 增加了调试日志输出,帮助管理员确认配置更改是否生效

6. 竞价系统功能优化(2025.3)
- 修复了竞价界面预加价按钮缺少显示当前预加价总额的问题
- 增强了竞价确认功能,确保玩家点击确认后不会显示"已取消竞价操作"的错误提示
- 优化了竞价界面界面元素设计,提高信息可读性
- 完善了竞价系统中的元数据处理逻辑,确保竞价过程流畅稳定
- 修复了重要的竞价差额计算逻辑,确保正确计算和扣除差价金额
1. 管理员强制下架功能修复(2025.3)
- 修复了有人竞价的物品被管理员强制下架后不返回到卖家邮箱的问题
- 改进了物品强制下架的状态处理逻辑,使用CANCELLED状态替代EXPIRED状态
- 优化了竞价退款流程,确保正确退还竞价金额给竞价者
- 添加了更详细的通知信息,通知卖家和竞价者物品已被管理员下架

2. 配置重载功能优化(2025.3)
- 修复了config.yml中check_interval选项修改后无效的问题
- 优化了/auction reload命令的处理逻辑,确保配置重载后能立即应用新设置
- 添加了任务管理功能,支持在不重启服务器的情况下动态调整拍卖检查间隔
- 增加了调试日志输出,帮助管理员确认配置更改是否生效
## 最近更新
1.0.7 GUI竞价系统优化(2025.3)
- 修复了竞价界面预加价按钮导致显示"已取消竞价"的错误提示问题
- 修复了竞价界面点击空位置时出现的空指针异常问题
- 优化了竞价过程中的元数据处理逻辑
- 提高了竞价界面操作的稳定性和用户体验
返回稳定版本,添加自定义开关 成交 上架广播 广播位置[BOSSBAR/标题/聊天框]也是自定义
add message.yml

YAML:
# GlobalShop 消息配置文件
# 支持使用 & 作为颜色代码前缀

# 通用消息
general:
  prefix: "&8[&aGlobalShop&8]&r "
  no_permission: "&c你没有权限执行此命令!"
  player_only: "&c此命令只能由玩家执行!"
  unknown_command: "&c未知命令! 使用 /gs help 查看帮助!"
  config_reloaded: "&a配置文件已重新加载!"
  invalid_arguments: "&c无效的参数! 使用 /auction help查看帮助"

# 界面标题
gui:
  main_title: "&8全球交易所"
  auction_title: "&8浏览拍卖"
  search_title: "&8搜索物品"
  search_result_title: "&6拍卖行 - 搜索结果"
  sell_title: "&6拍卖行 - 上架物品"
  my_auctions_title: "&8我的拍卖"
  sold_auctions_title: "&8已售出的拍卖"
  expired_auctions_title: "&6已过期的拍卖"
  confirm_buy_title: "&8确认购买"
  bid_menu_title: "&8竞拍物品"
  bid_amount_title: "&6输入竞价金额"
  mailbox_title: "&8物品邮箱"
  create_auction_title: "&8创建拍卖"
  set_price_title: "&8设置价格"
  set_time_title: "&8设置持续时间"
  set_currency_title: "&8设置货币类型"
  confirm_title: "&8确认上架"

# 按钮文本
buttons:
  previous_page: "&e上一页"
  next_page: "&e下一页"
  search: "&6搜索物品"
  search_input: "&e搜索输入"
  search_prompt: "&6点击此处输入搜索关键词"
  search_tip1: "&7支持模糊搜索,例如:\"钻石\"、\"剑\"等"
  search_tip2: "&7支持中文搜索原版物品,例如:\"钻石\" 可匹配钻石块、钻石剑等"
  search_history: "&e搜索历史"
  search_history_tip: "&7点击历史记录进行搜索"
  search_history_item: "&e➤ &f%history%"
  search_history_button: "&e搜索: &f%keyword%"
  search_history_button_tip: "&e点击使用此关键词搜索"
  clear_history: "&c清除历史"
  clear_history_tip: "&7点击清除所有搜索历史"
  back_to_main: "&c返回主菜单"
  sell_item: "&4上架物品"
  browse_auctions: "&6浏览拍卖"
  my_auctions: "&6我的拍卖"
  create_auction: "&6创建拍卖"
  active_auctions: "&6活跃拍卖"
  sold_auctions: "&6已售出的拍卖"
  expired_auctions: "&6已过期的拍卖"
  item_mailbox: "&6物品邮箱"
  search_result_info: "&6搜索结果: &f%keyword%"
  page_info: "&e当前页: &f%current%/%total%"
  total_items: "&e总计: &f%count% 个物品"
  buy_now: "&e设置一口价"
  set_start_price: "&e设置起拍价"
  set_currency: "&e使用%currency%"
  set_time: "&e%hours%小时"
  bid: "&e参与竞价"
  confirm: "&a确认"
  cancel: "&c取消"
  confirm_buy: "&a确认购买"
  cancel_buy: "&c取消购买"
  bid_amount: "&e当前出价: &f%amount%"
  increase_bid: "&a增加出价"
  decrease_bid: "&c减少出价"
  confirm_bid: "&a确认出价"
  cancel_bid: "&c取消出价"
  collect_item: "&a点击取回物品"
  cancel_auction: "&c取消拍卖"
  put_item_here: "&e放置物品"

# 帮助菜单
help:
  header: "&6===== 拍卖行帮助 ====="
  help: "&e/auction help - 显示此帮助信息"
  open: "&e/auction open - 打开拍卖行"
  sell: "&e/auction sell <起拍价> [一口价] [货币类型] - 上架物品 (1=金币, 2=点券)"
  buy: "&e/auction buy <物品ID> - 购买物品"
  search: "&e/auction search <关键词> - 搜索物品"
  my: "&e/auction my - 查看我的拍卖和物品邮箱"
  collect: "&e/auction collect - 领取待领取物品"
  admin_header: "&c===== 管理员命令 ====="
  reload: "&e/auction reload - 重新加载配置文件"
  close: "&e/auction close - &c[测试] &e强制关闭所有拍卖物品并标记为过期"
  checkexpired: "&e/auction checkexpired - &c[测试] &e手动检查过期物品"

# 拍卖消息
auction:
  # 上架相关
  item_listed: "&a物品已成功上架到拍卖行!"
  item_listing_failed: "&c上架物品失败,请稍后再试!"
  max_listings_reached: "&c你已达到最大上架数量限制 (%max% 个物品)!"
  max_listings_tip: "&c请等待已上架物品售出或过期后再尝试上架新物品。"
  specify_currency: "&c必须在命令结尾指定货币类型!"
  currency_usage: "&c用法: /auction sell <起拍价> [一口价] [货币类型]"
  currency_types: "&c货币类型: 1=金币, 2=点券,默认为金币"
  invalid_price: "&c无效的价格!"
  starting_price_too_low: "&c起拍价必须大于0!"
  buyout_price_too_low: "&c一口价必须大于起拍价!"
 
  # 购买相关
  buy_usage: "&c用法: /auction buy <物品ID>"
  item_not_exist: "&c物品不存在或已被购买!"
  item_expired: "&c物品已经过期或已被购买!"
  buy_own_item: "&c你不能购买自己的物品!"
  insufficient_funds: "&c你没有足够的%currency%购买此物品!"
  purchase_successful: "&a你已成功购买物品!"
  bid_successful: "&a你已成功竞价!"
  item_id_invalid: "&c物品ID必须是一个数字!"
 
  # 搜索相关
  search_usage: "&c用法: /auction search <关键词>"
  search_min_length: "&c搜索关键词至少需要2个字符!"
  searching: "&a正在搜索: &e%keyword%"
  no_results: "&c没有找到匹配的物品!"
  search_input_prompt: "&a请在聊天栏输入要搜索的物品名称,或者输入 &e取消 &a来取消搜索"
  search_history_cleared: "&a搜索历史已清空"
 
  # 我的拍卖相关
  listings_info: "&a当前上架: &e%current%/%max%"
  listings_warning: "&c警告: 你的上架数量接近限制!"
 
  # 竞价相关
  bid_too_low: "&c竞价金额太低! 最低竞价: %min%"
  outbid: "&c你的出价被 %player% 超过! 新价格: %price% %currency%"
  bid_canceled: "&c已取消竞价操作"
  bid_confirm: "&a已确认当前竞价金额: &f%amount%"
  bid_confirm_failed: "&c确认失败: 找不到当前竞价金额"
  bid_outbid: "&e你的出价已被超越! 物品ID: %id%"
  bid_outbid_new: "&e新的出价: %price% 由 %player% 提供"
  bid_refund: "&e你的出价 %price% 已退还"
  no_buyout_price: "&c该物品没有设置一口价!"
  min_bid_increase: "&c出价必须至少比当前价格高 %amount%!"
 
  # 通知消息
  item_sold: "&a你的物品已被拍卖成功!"
  item_sold_info: "&e物品: %item%"
  item_sold_price: "&e价格: %price%"
  item_sold_income: "&e收入: %amount%"
  item_sold_buyer: "&e买家: %buyer%"
 
  item_expired: "&a你的拍卖物品已过期,物品已放入物品邮箱!"
  item_expired_info: "&e物品: %item%"
  item_expired_collect: "&e使用 /auction my 进入拍卖系统,点击\"物品邮箱\"领取"
 
  item_won: "&a你竞拍的物品已送达至物品邮箱!"
  item_won_info: "&e物品: %item%"
  item_won_price: "&e价格: %price%"
  item_won_collect: "&e使用 /auction my 进入拍卖系统,点击\"物品邮箱\"领取"
 
  # 管理员相关
  close_auctions: "&e正在强制关闭所有拍卖物品..."
  close_auctions_async: "&e此操作将在后台异步执行,以避免服务器卡顿,请耐心等待。"
  no_active_auctions: "&e当前没有活跃的拍卖物品需要关闭。"
  processing_auctions: "&e正在处理 %count% 个活跃拍卖物品..."
  auctions_processed: "&a已处理 %count% 个拍卖物品:"
  auctions_success: "&a- 成功: %count%"
  auctions_failed: "&c- 失败: %count% (详情请查看控制台日志)"
  gui_refreshed: "&a所有界面已刷新完成!"
  auctions_gui_refreshed: "&e拍卖行物品状态已更新,界面已关闭。"
  auction_forced_close: "&e你的拍卖物品已被系统强制下架,可在已过期界面查看。"
  item_return_log: "物品 ID %id% 已设置为过期状态,卖家: %seller% (UUID: %uuid%)"
 
  check_expired: "&a正在检查所有拍卖物品,查找过期但未处理的物品..."
  no_expired_found: "&a检查完成,没有发现过期但未处理的物品。"
  found_expired: "&e发现 %count% 个过期但未处理的物品,正在处理..."
  expired_processed: "&a过期物品处理完成,共处理 %count% 个物品。"
  item_process_error: "&c处理物品ID: %id% 时出错,请查看控制台日志。"
 
  # 物品邮箱相关
  mailbox_opened: "&a已打开物品邮箱,你可以在这里领取所有待领取的物品。"
  mailbox_empty: "&e你的物品邮箱是空的。"
  item_collect_success: "&a物品已成功领取!"
  item_collect_failed: "&c领取物品失败,请确保背包有足够空间!"
  inventory_full: "&c你的背包已满,物品已放入物品邮箱!"
  inventory_full_collect: "&e你的背包已满,部分物品已保存到待领取列表,使用 /ah collect 领取"
 
  # 上架操作相关
  no_shift_click: "&c请直接拖动物品到中央格子,不要使用Shift+点击"
  no_place_in_mailbox: "&c不能在物品邮箱界面放入物品!"
  no_place_in_mailbox_tip: "&c不能在物品邮箱界面放入物品!请右键点击邮箱中的物品取出。"
  no_place_in_expired: "&c不能在过期拍卖界面放入物品!"
  place_in_center: "&c请将物品放在中央的格子内"
  missing_price_info: "&c上架失败:缺少价格信息"
  incomplete_price_info: "&c上架失败:价格信息不完整"
  price_format_error: "&c上架失败:价格格式错误"
  insufficient_fee: "&c你没有足够的%currency%支付手续费!"
  sell_success: "&a物品上架成功!"
  sell_item_id: "&e物品ID: %id%"
  sell_start_price: "&e起拍价: %price%"
  sell_buyout_price: "&e一口价: %price%"
  sell_fee: "&e手续费: %fee%"
  sell_currency: "&e货币类型: %currency%"
  balance: "&a你的%currency%余额: &f%balance%"
  sell_failed: "&c物品上架失败,请重试!"
  sell_error: "&c上架物品时发生错误,物品已返还!"
  item_returned: "&e物品已返还到你的背包"
  item_dropped: "&e背包已满,物品已掉落在你的脚下"
 
  # 竞价和购买相关
  auction_ended: "&c该物品已结束拍卖!"
  no_bid_own: "&c你不能竞拍自己的物品!"
  no_bid_perm: "&c你没有权限参与竞价!"
  already_highest: "&e你已经是当前最高出价者,可以继续加价!"
  no_buyout: "&c该物品没有设置一口价,不能直接购买!"
  no_buy_perm: "&c你没有权限购买!"
  inventory_full_buy: "&c你的背包已满,请先清理背包再购买物品!"
  withdraw_failed: "&c扣款失败,请重试!"
  purchased_success: "&a购买成功!"
  purchased_item_id: "&e物品ID: &f%id%"
  purchased_price: "&e价格: &f%price%"
  purchased_inventory_full: "&a购买成功! &e但你的背包已满,物品已存入物品邮箱,请使用 /ah my 查看。"
  seller_notice: "&a你的物品已被购买!"
  seller_item_id: "&e物品ID: &f%id%"
  seller_price: "&e出售价格: &f%price%"
  seller_fee: "&e手续费: &f%fee%"
  seller_receive: "&e实际获得: &f%amount%"
  seller_buyer: "&e买家: &f%buyer%"
  buy_canceled: "&c已取消购买"

# 物品描述相关
item:
  # 分隔线
  separator: "&8-----------------"
 
  # 物品类型描述
  auction_won:
    title: "&6✉ 竞拍获得的物品"
    price: "&7成交价: %price%"
    time: "&7获得时间: %time%"
 
  auction_expired:
    title: "&6✉ 过期未售出的物品"
    time: "&7下架时间: %time%"
 
  buy_now:
    title: "&6✉ 一口价购买的物品"
    price: "&7成交价: %price%"
    time: "&7购买时间: %time%"

# 物品详细信息
item_details:
  sold_item:
    title: "&c此物品已售出,仅供查看"
    no_action: "&c无法取回或再次出售"
  sold_time: "&e售出时间: &f%time%"
  price_info: "&e售出价格: &f%price%"
  buyer_info: "&e购买者: &f%buyer%"
 
  # 物品状态
  status:
    sold: "&e状态: &f已售出"
    expired: "&e状态: &f已过期"
    pending: "&e状态: &f待领取"
    
  # 物品操作提示
  action:
    collect: "&7右键点击领取物品"
    cannot_cancel: "&c⚠ 已有人出价,无法取消拍卖 ⚠"
    wait_end: "&c请等待拍卖结束"
    can_cancel: "&e右键点击取消拍卖"

# 拍卖物品显示
auction_item:
  separator: "&8&m--------------------"
  header: "&6&l拍卖信息:"
  id: "&e物品ID: &f%id%"
  currency: "&e货币类型: &f%currency%"
  start_price: "&e起拍价: &f%price%"
  current_price: "&e当前价: &f%price%"
  buyout_price: "&e一口价: &f%price%"
  list_time: "&e上架时间: &f%time%"
  remaining_time: "&e剩余时间: &f%time%"
  seller: "&e卖家: &f%seller%"
  current_bidder: "&e当前出价者: &f%bidder%"
 
  # 操作提示
  owner_tip: "&c这是你的拍卖"
  quick_cancel: "&7Shift+右键点击: &f快速下架"
  bid_tip: "&7左键点击: &f参与竞价"
  buy_tip: "&7右键点击: &f快速购买"
  can_cancel: "&e右键点击取消拍卖"
  cannot_cancel: "&c已有人出价,无法取消"
  action:
    bid: "&e点击出价"
    buy_now: "&a点击一口价购买"

# 搜索相关
search:
  click_to_input: "&e点击此处输入搜索关键词"
  fuzzy_search_tip: "&7支持模糊搜索,例如:\"钻石\"、\"剑\"等"
  chinese_search_tip: "&7支持中文搜索原版物品,例如:\"钻石\" 可匹配钻石块、钻石剑等"
  history_item: "&e➤ &f%keyword%"
  click_history: "&7点击历史记录进行搜索"
  click_to_use: "&e点击使用此关键词搜索"
  click_to_clear: "&7点击清除所有搜索历史"
  no_results: "&c没有找到匹配的物品!"
  results_count: "&e找到 %count% 个匹配的物品"
 
  # 搜索结果
  current_page: "&e当前页: &f%current%/%total%"
  total_items_count: "&e总计: &f%count% 个物品"
  click_prev_page: "&7点击查看上一页"
  click_next_page: "&7点击查看下一页"
  click_to_search: "&7点击进行新的搜索"
  click_to_return: "&7点击返回主菜单"

# 确认购买
confirm_buy:
  click_confirm: "&e点击确认购买此物品"
  item_name: "&e物品名称: &f%name%"
  buy_price: "&e购买价格: &f%price%"
  tax_info: "&e税费: &f%tax%"
  total_cost: "&e总花费: &f%cost%"
  click_cancel: "&e点击取消购买"

# 竞价界面
bid_menu:
  item_name: "&e物品名称: &f%name%"
  original_price: "&e原始价格: &f%price%"
  current_bid: "&e当前出价: &f%price%"
  increment: "&e加价幅度: &f%increment%"
  confirm_tip: "&7点击确认当前出价金额"

# 我的拍卖
my_auctions:
  title: "&6我的拍卖"
  page_info: "&e当前页: &f%current%/%total%"
  sold_count: "&e已售出: &f%count%"
  expired_count: "&e已过期: &f%count%"
  listing_count: "&e上架数量: &f%current%/%max%"
  limit_warning: "&c⚠ 你的上架数量即将达到上限!"
  stats_title: "&6拍卖统计"
  status:
    sold: "&e状态: &f已售出"
    expired: "&e状态: &f已过期"
    listing: "&e状态: &f正在上架"
  sold_price: "&e售出价格: &f%price%"
 
  # 物品信息
  start_price: "&e起拍价: &f%price%"
  current_price: "&e当前价: &f%price%"
  buyout_price: "&e一口价: &f%price%"
  remaining_time: "&e剩余时间: &f%time%"
  current_bidder: "&e当前出价者: &f%bidder%"
 
  # 已售出拍卖
  sold_title: "&6我的已售出拍卖"
  sale_price: "&e售出价格: &f%price%"
 
  # 物品邮箱
  mailbox_title: "&6物品邮箱"
  mailbox_intro: "&7这里存储:"
  mailbox_expired: "&7- 过期未售出的物品"
  mailbox_won: "&7- 竞拍成功的物品"
  mailbox_full: "&7- 背包已满时购买的物品"
  add_time: "&e添加时间: &f%time%"
  expire_time: "&e过期时间: &f%time%"

# 占位符
placeholders:
  put_item_here: "请将物品放在这里"

# 其他代码保持不变

# 拍卖相关消息
auction:
  created: '&a拍卖创建成功! 起拍价: %price% %currency%, 持续 %duration% 小时.'
  bought: '&a你成功购买了 %item% x%amount%, 价格: %price% %currency%!'
  sold: '&a你的物品 %item% x%amount% 已被 %player% 购买, 价格: %price% %currency%!'
  cancelled: '&a已成功取消拍卖,物品已返还到你的背包.'
  cancelled_inventory_full: '&e已成功取消拍卖,但你的背包已满。物品已存入待领取列表,使用 /auction collect 领取.'
  cancel_failed: '&c取消拍卖失败,请稍后再试.'
  bid_placed: '&a出价成功! 当前价格: %price% %currency%'
  outbid: '&c你的出价被 %player% 超过! 新价格: %price% %currency%'
  expired: '&e你的拍卖 %item% x%amount% 已过期! 物品已退还到你的物品邮箱.'
  not_found: '&c找不到ID为 %id% 的拍卖!'
  not_yours: '&c这不是你的拍卖!'
  already_bid: '&c该物品已有人出价,无法取消拍卖!'
  no_self_bid: '&c你不能对自己的拍卖出价!'
  too_low_bid: '&c你的出价必须高于当前价格!'
  insufficient_funds: '&c你没有足够的资金!'
  limit_reached: '&c你已达到最大拍卖数量限制!'
  wait_for_expiry: '&c请等待已上架物品售出或过期后再尝试上架新物品.'
  invalid_price: '&c无效的价格!'
  cannot_auction: '&c此物品无法拍卖!'
  cannot_afford_fee: '&c你负担不起上架费用: %fee% %currency%'

# 拍卖详情显示
auction_details:
  header: '&6===== 拍卖物品详情 ====='
  item_name: '&e物品: &f%item%'
  start_price: '&e起拍价: &f%price%'
  current_price: '&e当前价格: &f%price%'
  buyout_price: '&e一口价: &f%price%'
  current_bidder: '&e当前出价者: &f%bidder%'
  remaining_time: '&e剩余时间: &f%time%'
配置文件添加自定义全局扫描过期物品间隔时间 并且开源上传https://github.com/linghun91/GlobalShop
修复大量逻辑性BUG
后退
顶部 底部