
轻松交易
一个Hytale服务器插件,用于安全的玩家间物品交易,具有交互式用户界面和原子交易功能。
查看大图EasyTrade
一款 Hytale 服务器插件,用于安全的玩家间物品交易,具有交互式 UI 和原子事务支持。
功能特性
- 交互式交易 UI - 可选物品并控制数量
- 安全原子事务 - 物品要么同时交换,要么全部不交换
- 智能背包验证 - 智能检查物品是否能与现有背包物品堆叠
- 倒计时系统 - 交易执行前 3 秒倒计时,防止误操作
- 可自定义消息 - 完全可翻译的消息系统,支持颜色代码
- 测试模式 - 用于开发和调试的单独测试
- 更新检查器 - 自动检查 GitHub 和 CurseForge 的新版本
- 调试模式 - 详细的故障排查日志
工作原理
- 玩家 A 向玩家 B 发送交易请求:
/trade request PlayerB - 玩家 B 接受请求:
/trade accept - 双方打开交易 UI 并添加物品到报价中
- 双方准备就绪后点击 ACCEPT
- 3 秒倒计时开始 - 双方仍可取消
- 倒计时结束后,双方点击 CONFIRM 完成交易
- 物品原子交换(全有或全无)
命令
| 命令 | 描述 | 权限 |
|---|---|---|
/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 个物品
交易状态(用于调试)
- NEGOTIATING - 双方均可修改报价
- ONE_ACCEPTED - 一方已接受,等待另一方
- BOTH_ACCEPTED_COUNTDOWN - 倒计时进行中(3 秒)
- EXECUTING - 交易正在执行(原子事务)
- COMPLETED - 交易成功
- CANCELLED - 交易已取消
- 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)
只有当您想要限制交易命令的访问权限时,才需要配置权限。
安装
- 构建插件的 JAR 文件或从发布版下载
- 将 JAR 放置到服务器
mods文件夹中 - 启动/重启服务器
- 配置文件和消息文件会自动生成
- 根据需要自定义
plugins/EasyTrade/messages.json中的消息和mods/Toskan4134_EasyTrade/EasyTrade.json中的配置
构建
./gradlew build
编译后的 JAR 文件位于 build/libs/ 目录中。
开发环境设置
- 克隆仓库
- 以 Gradle 项目形式导入 IntelliJ IDEA
- 配置运行配置指向 Hytale 服务器
- 在配置中启用调试模式以获得详细日志
更新检查器
插件会自动检查 GitHub 和 CurseForge 的更新:
- 在服务器启动时检查
- 服务器运行期间每 12 小时检查一次
- 新版本可用时记录到控制台
- 当操作员(拥有
*权限的玩家)加入时通知
在配置中将 CheckForUpdates 设置为 false 以禁用。
许可证
MIT 许可证
作者
Toskan4134

还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。