轻松交易

轻松交易

一个Hytale服务器插件,用于安全的玩家间物品交易,具有交互式用户界面和原子交易功能。

实用

EasyTrade

一款 Hytale 服务器插件,用于安全的玩家间物品交易,具有交互式 UI 和原子事务支持。

功能特性

  • 交互式交易 UI - 可选物品并控制数量
  • 安全原子事务 - 物品要么同时交换,要么全部不交换
  • 智能背包验证 - 智能检查物品是否能与现有背包物品堆叠
  • 倒计时系统 - 交易执行前 3 秒倒计时,防止误操作
  • 可自定义消息 - 完全可翻译的消息系统,支持颜色代码
  • 测试模式 - 用于开发和调试的单独测试
  • 更新检查器 - 自动检查 GitHub 和 CurseForge 的新版本
  • 调试模式 - 详细的故障排查日志

工作原理

  1. 玩家 A 向玩家 B 发送交易请求:/trade request PlayerB
  2. 玩家 B 接受请求:/trade accept
  3. 双方打开交易 UI 并添加物品到报价中
  4. 双方准备就绪后点击 ACCEPT
  5. 3 秒倒计时开始 - 双方仍可取消
  6. 倒计时结束后,双方点击 CONFIRM 完成交易
  7. 物品原子交换(全有或全无)

命令

命令 描述 权限
/trade request <玩家> 向其他玩家发送交易请求 easytrade.trade.request
/trade accept 接受待处理的交易请求 easytrade.trade.accept
/trade decline 拒绝待处理的交易请求 easytrade.trade.decline
/trade cancel 取消当前交易 easytrade.trade.cancel
/trade confirm 倒计时后确认交易 easytrade.trade.confirm
/trade open 打开交易 UI easytrade.trade.open
/trade reload 重载配置文件和消息文件 easytrade.admin.reload
/trade test 开始单人测试交易(仅调试模式) easytrade.admin.test
/trade help 显示帮助信息 easytrade.trade.help

注意: 除管理员命令外,所有权限默认对所有玩家启用。

配置

配置文件自动保存到 mods/Toskan4134_EasyTrade/EasyTrade.json

选项 默认值 描述
Debug false 启用详细调试日志
RequestTimeoutSeconds 30000 交易请求过期时间(毫秒)
CountdownDurationSeconds 3000 交易执行前倒计时时长(毫秒)
CheckForUpdates true 启动时检查插件更新

示例配置

{
  "CountdownDuration": 3000,
  "RequestTimeout": 30000,
  "CheckForUpdates": true,
  "Debug": true
}

消息

消息存储在 plugins/EasyTrade/messages.json,支持颜色代码和占位符。

颜色代码

  • &0-9, &a-f - 标准 Minecraft 颜色
  • &#RRGGBB - 十六进制颜色(例如:&#FF0000 表示红色)
  • &l - 粗体文本
  • &r - 重置格式

占位符

  • {player} - 玩家名称
  • {target} - 目标玩家名称
  • {seconds} - 倒计时/超时秒数
  • {version} - 插件版本

示例消息

trade.request.sent=&a交易请求已发送给 &f{target}
trade.request.received=&e收到来自 &f{initiator}&e 的交易请求,使用 &6/trade accept &7 接受。
trade.status.countdown=&a双方已接受!&f{seconds}秒&a后完成...
ui.status.notEnoughSpace=您的背包空间不足

您可以在此处找到一些 messages.json 示例:链接

交易 UI

交易 UI 分为几个区域:

  • 您的背包 - 可提供的物品。从背包、快捷栏和背包(底部)中搜索
  • 您的报价 - 您正在提供的物品(左侧)
  • 对方报价 - 对方正在提供的物品(右侧)
  • 状态消息 - 显示交易状态和操作提示
  • 操作按钮 - ACCEPT、CONFIRM、CANCEL

添加物品到报价

  • 点击物品 - 添加一整组
  • 点击 +1 按钮 - 向现有报价中添加 1 个物品
  • 点击 +10 按钮 - 向现有报价中添加 10 个物品

从报价中移除物品

  • 点击已报价物品 - 移除一整组
  • 点击 -1 按钮 - 从报价中移除 1 个物品
  • 点击 -10 按钮 - 从报价中移除 10 个物品

交易状态(用于调试)

  1. NEGOTIATING - 双方均可修改报价
  2. ONE_ACCEPTED - 一方已接受,等待另一方
  3. BOTH_ACCEPTED_COUNTDOWN - 倒计时进行中(3 秒)
  4. EXECUTING - 交易正在执行(原子事务)
  5. COMPLETED - 交易成功
  6. CANCELLED - 交易已取消
  7. FAILED - 交易失败(验证错误、背包问题)

安全功能

  • 自动取消接受 - 如果背包发生变化,接受状态自动撤销
  • 背包验证 - 在执行前检查物品是否仍然可用
  • 智能空间验证 - 智能检查物品是否能与现有背包物品堆叠
  • 原子事务 - 要么所有物品都被交换,要么都不交换(失败时回滚)
  • 对方断线处理 - 如果对方断线,交易取消并关闭 UI

权限

所有权限遵循模式 easytrade.<分类>.<命令>。您可以使用 /perm group/user list/add/remove <组/用户> 修改权限。

默认权限(所有玩家)

这些权限应授予所有人:

easytrade.trade.request   - 发送交易请求
easytrade.trade.accept    - 接受交易请求
easytrade.trade.decline   - 拒绝交易请求
easytrade.trade.cancel    - 取消进行中的交易
easytrade.trade.confirm   - 倒计时后确认交易
easytrade.trade.open      - 打开交易 UI
easytrade.trade.help      - 查看帮助信息

管理员权限

这些权限应仅限于管理员/操作员:

easytrade.admin.reload    - 重载配置文件和消息文件
easytrade.admin.test      - 开始单人测试交易(需要调试模式)

默认行为

默认情况下,无需任何权限:

  • ✅ 所有玩家均可使用所有交易命令(无需权限)
  • ❌ 仅 /trade reload 需要权限(easytrade.admin.reload
  • 🐞 命令 /trade test 需要配置中 debug=true 以及权限(easytrade.admin.test

只有当您想要限制交易命令的访问权限时,才需要配置权限。

安装

  1. 构建插件的 JAR 文件或从发布版下载
  2. 将 JAR 放置到服务器 mods 文件夹中
  3. 启动/重启服务器
  4. 配置文件和消息文件会自动生成
  5. 根据需要自定义 plugins/EasyTrade/messages.json 中的消息和 mods/Toskan4134_EasyTrade/EasyTrade.json 中的配置

构建

./gradlew build

编译后的 JAR 文件位于 build/libs/ 目录中。

开发环境设置

  1. 克隆仓库
  2. 以 Gradle 项目形式导入 IntelliJ IDEA
  3. 配置运行配置指向 Hytale 服务器
  4. 在配置中启用调试模式以获得详细日志

更新检查器

插件会自动检查 GitHub 和 CurseForge 的更新:

  • 在服务器启动时检查
  • 服务器运行期间每 12 小时检查一次
  • 新版本可用时记录到控制台
  • 当操作员(拥有 * 权限的玩家)加入时通知

在配置中将 CheckForUpdates 设置为 false 以禁用。

许可证

MIT 许可证

作者

Toskan4134

链接