COWMODSКаталог модов

GoodsTrade

A shared chest menu for exchanging items, currencies, and experience levels, with two-player confirmation and a final countdown.

Автор: polang1001обновлён 1 окт. 2026 г.
Механики игрыОбщениеУтилиты

Описание

Exchange items, money, and experience levels through a shared chest menu.

GoodsTrade gives both players separate offer areas so they can review the exchange before confirming. Once both players confirm, the plugin locks the offers and starts a configurable countdown. Closing or cancelling the trade returns the offered items.

Features

  • Trade items with another player through one inventory menu.
  • Add offers in Vault currency, PlayerPoints, ExcellentEconomy currencies, or Minecraft experience levels. One trade can include several currencies.
  • Require confirmation from both players and reset confirmation when an offer changes.
  • Send requests with /gt sendtrade <player>, or sneak-right-click when that trigger is enabled. Recipients can sneak-right-click back to accept.
  • Let players turn incoming trade requests on or off.
  • Set a per-player request cooldown and a separate request expiry time.
  • Limit trading by world and distance, with automatic cancellation when players leave the allowed area.
  • Optionally cancel trades on damage, prevent damage, or restrict movement while trading.
  • Configure item restrictions using names, lore, NBT paths, and values.
  • Customize menu materials, names, lore, amount buttons, and currency-specific button appearances.
  • Use built-in English or Chinese messages, with configurable language files.
  • Test the trade menu as an administrator without needing a second player.

Trading in game

Players put items on their own side of the menu and review the other player's offer. Confirmation and the countdown are visible to both players.

GoodsTrade item exchange and confirmation demonstration

GoodsTrade item offer areas

Requirements

  • Minecraft: 1.12–26.2.
  • Server software: Bukkit, Spigot, or Paper. Folia support is not currently claimed.
  • Java: 8 or newer.
  • Item trading: no economy plugin is required.
  • Currency trading: install the provider you want to use. Vault also needs a compatible economy plugin; PlayerPoints and ExcellentEconomy use their own balances.
  • Experience levels: no economy plugin is required.
  • PlaceholderAPI: optional, for the %goodstrade_stats% placeholder.

Installation

  1. Download the GoodsTrade-*-lite.jar build and put it in your server's plugins/ directory.
  2. Start the server to create plugins/GoodsTrade/config.yml, View.yml, and the language files.
  3. Enable the currencies and menu options you want to use.
  4. Run /gt reload after editing the configuration. Reload cancels active trades and returns their items, then clears pending requests and request cooldowns.

Missing or unavailable economy providers are skipped, so item trading remains available.

Start a trade

  1. Run /gt sendtrade <player>, or sneak-right-click the player.
  2. The recipient accepts the chat invitation, sneak-right-clicks you back, or runs /gt accept.
  3. Put items into your offer area and use the amount buttons for enabled currencies.
  4. Both players confirm their offers.
  5. After the countdown, the plugin settles the currency offers and exchanges the items.

Either player can cancel before completion. Items that do not fit in the owner's inventory are dropped at that player's location.

Commands and permissions

Normal player commands are enabled by default:

  • /gt: show help. Permission: goodstrade.command.
  • /gt sendtrade <player>: send a request. Permission: goodstrade.command.sendtrade.
  • /gt accept [player]: accept a request. Permission: goodstrade.command.accept.
  • /gt toggle [true|false]: control incoming requests. Permission: goodstrade.command.toggle.

Administrator commands default to operators:

  • /gt trade <sender> <receiver>: start a trade between two players. Permission: goodstrade.command.trade.
  • /gt test [test-name]: control both sides of a test trade. Permission: goodstrade.command.test.
  • /gt reload: reload configuration and messages. Permission: goodstrade.command.reload.

The base goodstrade.command permission is required for all commands.

Currencies and menu settings

Money and experience trading are off by default. Set Trade.Economy.Enable: true to enable them. Vault is the only currency entry enabled by default; enable other providers under Trade.Economy.Currencies as needed. Each currency supports a display name and one to four amount steps.

Left-click an amount button to increase the offer, or right-click to decrease it. Left-click the center divider to change the selected currency; existing offers remain visible in the divider. Both players must cancel confirmation before switching currencies.

Currencies are settled separately and are not converted into one another. Do not configure the same underlying account twice through different providers. Experience offers use whole levels and preserve experience bar progress.

View.yml controls menu appearances. currency-defaults sets provider defaults, while currency-buttons overrides a specific currency's buttons.

The configuration guide contains complete examples.

Trade limits and requests

Trade.Enabled-Worlds: ["*"] allows all worlds, including newly created worlds. List world names to allow only those worlds, or prefix a name with ! to exclude it. For example, ["*", "!world"] allows every world except world. An empty list disables trading everywhere. Both participants must be in allowed worlds; entering a disabled world clears related requests and cancels an active trade, returning its items.

By default, players must be in the same world and within 4 blocks to send or accept a request and open a trade. The limit during trading is 8 blocks. Distances include height. Exceeding the active limit cancels the trade and returns items. Change these settings under Trade.Distance; 0 disables a distance limit. Cross-world trading requires Same-World: false and both Start: 0 and Trading: 0.

Trade.Request.Cooldown defaults to 5 seconds after a successful request and applies across all recipients for that sender. Set it to 0 to disable the cooldown. Trade.Request.Expire independently defaults to 30 seconds. An existing request to the same player cannot be resent to extend its lifetime. Players already trading cannot send or accept requests, and starting a trade clears related requests for both participants.

Trade.Safe.Close-On-Damage: true cancels a trade when either player takes uncancelled positive damage. It is off by default. Trade.Safe.Damage enables damage immunity and takes priority; Trade.Safe.Move restricts movement during trading.

Language

The default language follows the server's system locale, with Simplified Chinese as the fallback. Set Language: en_us or Language: zh_cn in config.yml to choose explicitly, then run /gt reload.

Existing language files and translations are preserved. Missing files and translation keys are added from the bundled defaults on startup or reload. Help text and player messages can be edited under plugins/GoodsTrade/lang/.

Support

Report problems on GitHub Issues. Chinese-speaking users can also use QQ group 620224543.

GoodsTrade is available under the GNU GPL v3. If you find it useful, a ⭐ GitHub Star is appreciated.

Usage statistics

GoodsTrade bStats

Последние версии

Все версии →
release

GoodsTrade 1.2.5

1.2.5
1 окт. 2026 г.78Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3bukkit, paper, purpur, spigot
Скачать
Что нового
https://github.com/polang233/GoodsTrade/releases
release

GoodsTrade 1.1.9

1.1.9
6 сент. 2026 г.12Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, paper, purpur, spigot
Скачать
Что нового
### 主要改动 - 支持 Vault、PlayerPoints、ExcellentEconomy 和原版经验等级,同一笔交易可同时加入多种货币。经验按整数等级支付,保留经验条进度。 - 左键中央栏切换交易类型,保留已设置的数量,并显示双方需要支付的内容。金币、点券、经验等级和代币分别使用金锭、绿宝石、经验瓶和向日葵作为默认按钮。 - 修改物品或支付数量后撤销已有确认;支付失败时返还物品,并尝试退回已完成的款项。 - 修复交易请求来源与过期校验、管理员直接交易、代发权限和负数倒计时问题。 - 修复自定义按钮只更换材质时丢失名称与 Lore 的问题。分档按钮继承通用样式,自定义中央栏保留切换提示和支付明细。 ### 配置变更 - `config.yml` 新增 `Trade.Economy.Currencies`,每种类型可设置 `Enable`、`Provider`、`Name` 和 `Amounts`。旧配置继续使用 Vault,点券、代币和经验等级需按需开启。 - 经验等级使用 `Provider: experience`;ExcellentEconomy 使用 `Provider: excellenteconomy`,并填写已有币种的 `Currency` ID。同一底层账户只配置一次。 - `View.yml` 新增 `currency-defaults` 和 `currency-buttons`,可按经济类型或币种 ID 设置材质、名称、Lore、模型数据及分档外观。原有 `button.Money`、`Money-1` 至 `Money-4` 继续生效,具体币种配置优先。 - 名称和 Lore 支持 `%amount%` 和 `%currency%`,只改材质会继承其余样式。若通用 `Money` 已写死材质,移除该字段或设为 `@default@` 后即可使用按类型的默认物品。 - 新增切换提示位于语言文件的 `trade-view.currency-selected` 和 `trade-view.currency-switch`。旧语言文件缺少这些键时自动使用内置内容;自定义 Lore 中写死的“金币”等文字需要自行调整。 [默认配置](https://github.com/polang233/GoodsTrade/blob/1.1.9/src/main/resources/config.yml) · [界面配置](https://github.com/polang233/GoodsTrade/blob/1.1.9/src/main/resources/View.yml) · [使用说明](https://github.com/polang233/GoodsTrade/blob/1.1.9/README.md)
release

GoodsTrade 1.1.7

1.1.7
29 авг. 2026 г.10Minecraft: 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, paper, purpur, spigot
Скачать
Что нового
## GoodsTrade Lite 1.1.7 本次版本新增 Vault 金币交易、管理员沙盒测试和更完整的命令帮助,并加强交易确认阶段的安全处理。适合从 `1.1.5` Lite 直接升级。 ### 热修复 - 修复 Paper 26.x 上蹲下右键无法向其他玩家发起交易的问题。新核心只触发 `PlayerInteractAtEntityEvent`,旧版父类监听收不到事件。 ### Vault 金币交易 - 交易双方可通过 GUI 金币按钮调整各自需要支付的金额。 - 支持配置 1–4 档按钮金额;左键增加、右键减少。 - 可通过 `Trade.Economy.Allow-Negative` 控制是否允许负数报价;负数表示要求对方支付。 - 中央分隔板会同时显示双方最终需要支付的金额。 - 每次改价、确认和最终结算前都会检查余额,余额不足时不会允许超额报价或完成交易。 - Vault 或经济插件不可用时自动隐藏金币按钮,原有物品交易不受影响。 ### 交易安全与确认流程 - 任一方修改金币报价后,已有确认会被撤销并通知另一方重新检查。 - 双方确认后的倒计时期间继续锁定物品与金额,避免最后一刻偷偷改价。 - 结算失败时不会交换物品,并会返还交易界面中的物品。 - 增强拖拽和双方交易区域的权限检查,保持原有物品交易流程安全。 ### 管理员沙盒与命令帮助 - 新增 `/gt test [虚拟玩家名]`,管理员可独自控制交易双方区域、金额按钮和确认流程。 - 沙盒交易不会调用 Vault,也不会实际转移金币或物品;测试物品会在结束时返还。 - `/gt` 默认帮助现在显示各子命令的功能描述,并按玩家权限过滤。 - 命令说明、测试提示和金币交易文案均可在语言文件中修改。 ### 兼容性 - Minecraft:`1.12 – 26.1` - 服务端:Bukkit / Spigot / Paper - Java:8 及以上 - PlaceholderAPI:可选 - Vault 与支持 Vault 的经济插件:仅金币交易需要;未安装时仍可正常交易物品 - 当前 Lite 版不声明 Folia 兼容 ### 升级提示 1. 建议先备份 `plugins/GoodsTrade/`。 2. 停止服务器并用本版本 JAR 替换旧文件。 3. 已有 `config.yml`、`View.yml` 和语言文件不会被覆盖;如需调整金币按钮,请参考新版默认配置补充 `Trade.Economy`,并在 `View.yml` 中配置 `Money`、`Money-1` 至 `Money-4`。 4. 金币交易需要同时安装 Vault 和已接入 Vault 的经济插件;不使用金币交易时可保持未安装,或将 `Trade.Economy.Enable` 设为 `false`。 5. 升级后建议先使用 `/gt test [虚拟玩家名]` 检查金额按钮、负数报价和确认倒计时流程,再开放给普通玩家。 [查看 Lite 分支](https://github.com/polang233/GoodsTrade/tree/lite) · [英文文档](https://github.com/polang233/GoodsTrade/blob/lite/doc/README_EN.md) · [Modrinth 文案](https://github.com/polang233/GoodsTrade/blob/lite/doc/MODRINTH.md)