XiBackpack 是一个功能强大的 Minecraft 服务器插件,为玩家提供云端背包存储功能。玩家的背包数据存储在数据库中,可以在不同服务器之间同步,并支持多种高级功能。
- 云背包存储:玩家背包数据存储在数据库中,不会因服务器重启而丢失
- 跨服务器同步:玩家可以在任何连接到同一数据库的服务器上访问自己的背包
- 分页界面:支持大容量背包,通过分页界面进行管理
- 经济系统集成:通过 Vault 插件集成服务器经济系统,支持背包升级
- 背包升级:玩家可以消耗金币升级背包容量(支持段式费用和权限控制)
- 数据备份:支持手动创建和恢复背包备份
- 团队背包:允许多个玩家共享同一个背包(实时同步更新)
- 多语言支持:支持中文和英文界面,可通过配置文件切换
- 命令补全:支持命令自动补全,提升玩家使用体验
- 权限控制:细粒度的权限控制,确保插件安全使用
- 冷却时间:防止玩家频繁打开背包造成服务器压力
- 异步处理:数据库操作异步执行,避免阻塞主线程
- 加载优化:背包加载过程优化,减少玩家等待时间
- 数据库重试机制:数据库连接失败时自动重试,提高系统稳定性
/backpack或/bp或/bag- 打开个人云背包/xibackpack或/xbp或/cloudpack- 打开个人云背包/xibackpack open或/xbp open或/cloudpack open- 打开个人云背包/xibackpack upgrade或/xbp upgrade或/cloudpack upgrade- 升级背包容量/xibackpack reload或/xbp reload或/cloudpack reload- 重新加载配置文件(需要管理员权限)/xibackpack help或/xbp help或/cloudpack help- 显示帮助信息
/xibackpack backup create- 创建背包备份/xibackpack backup restore <ID>- 按ID恢复指定备份/xibackpack backup restore index <索引>- 按索引恢复备份(从1开始,最新的备份索引为1)/xibackpack backup list- 列出所有可用的备份
插件现在支持自动备份功能,可以通过配置文件设置自动备份的间隔和触发条件。
/xibackpack team create <名称>- 创建团队背包(需要权限:xibackpack.team.create)/xibackpack team gui或/xibackpack team manage- 打开团队背包管理界面/xibackpack team open <ID>- 打开指定团队背包/xibackpack team addmember <背包ID> <玩家名>- 添加成员到团队背包(需要团队背包管理员权限)/xibackpack team removemember <背包ID> <玩家名>- 从团队背包移除成员(需要团队背包管理员权限)/xibackpack team list- 列出可访问的团队背包
xibackpack.use- 允许使用基本背包功能(默认:所有玩家)xibackpack.admin- 允许使用备份功能、重载配置和全局管理权限(默认:操作员)xibackpack.bypass.cooldown- 允许绕过背包冷却时间(默认:操作员)xibackpack.team.create- 允许创建团队背包(默认:所有玩家)
xibackpack.upgrade.36- 从27格升级到36格需要的权限xibackpack.upgrade.45- 从36格升级到45格需要的权限xibackpack.upgrade.54- 从45格升级到54格需要的权限
每个团队背包都有独立的权限节点,格式为:xibackpack.team.<背包名称>.admin
xibackpack.team.<背包名称>.admin- 允许管理特定团队背包的成员和内容(默认:无)
示例:
- 如果你创建了一个名为 "生存小队" 的团队背包,那么对应的管理员权限是:
xibackpack.team.生存小队.admin - 如果你创建了一个名为 "建筑团队" 的团队背包,那么对应的管理员权限是:
xibackpack.team.建筑团队.admin
权限继承:
- 背包所有者自动拥有该背包的管理员权限
- 全局管理员 (
xibackpack.admin) 自动拥有所有团队背包的管理员权限
| 权限节点 | 描述 | 默认值 | 命令权限 |
|---|---|---|---|
| xibackpack.use | 允许使用基本背包功能 | 所有玩家 | /backpack, /xibackpack open, /xibackpack upgrade |
| xibackpack.admin | 全局管理权限 | 操作员 | /xibackpack backup, /xibackpack reload |
| xibackpack.bypass.cooldown | 绕过背包冷却时间 | 操作员 | 所有打开背包的命令 |
| xibackpack.team.create | 创建团队背包 | 所有玩家 | /xibackpack team create |
| xibackpack.team.<背包名称>.admin | 特定团队背包的管理员权限 | 无 | /xibackpack team addmember, /xibackpack team removemember |
| xibackpack.upgrade.36 | 从27格升级到36格需要的权限 | 无 | /xibackpack upgrade |
| xibackpack.upgrade.45 | 从36格升级到45格需要的权限 | 无 | /xibackpack upgrade |
| xibackpack.upgrade.54 | 从45格升级到54格需要的权限 | 无 | /xibackpack upgrade |
# 数据库配置
database:
type: "sqlite" # 数据库类型(sqlite, mysql, postgresql, mongodb)
host: "localhost" # 数据库主机(SQLite忽略)
port: 3306 # 数据库端口(SQLite忽略)
database: "xibackpack" # 数据库名称(SQLite为文件名)
username: "" # 用户名(SQLite忽略)
password: "" # 密码(SQLite忽略)
# 连接池配置
max-pool-size: 10
min-idle: 2
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
# 语言设置
language: "zh_cn" # 语言设置,可选值:zh_cn(中文)、en(英文)
# 背包配置
backpack:
size: 27 # 初始背包大小
name: "§e§l云上背包"
upgrade-cost: 1000 # 默认升级费用
# 按段设置升级费用,例如36表示从36格开始到下一个设定点之间每9格的费用
upgrade-costs:
27: 1000 # 从27格开始到下一个设定点之间每9格的费用
36: 1500 # 从36格开始到下一个设定点之间每9格的费用
45: 2000 # 从45格开始到下一个设定点之间每9格的费用
54: 2500 # 从54格开始到下一个设定点之间每9格的费用
90: 3000 # 从90格开始到下一个设定点之间每9格的费用
180: 5000 # 从180格开始到下一个设定点之间每9格的费用
270: 8000 # 从270格开始到下一个设定点之间每9格的费用
360: 10000 # 从360格开始到下一个设定点之间每9格的费用
# 自定义每个容量级别所需的权限
size-permissions:
27: "xibackpack.upgrade.36" # 从27格升级到36格需要权限
36: "xibackpack.upgrade.45" # 从36格升级到45格需要权限
45: "xibackpack.upgrade.54" # 从45格升级到54格需要权限
# 冷却时间设置(毫秒)
cooldown: 1000
# 备份设置
backup:
max-count: 10 # 最大备份数量
# 自动备份设置
auto-backup:
enabled: true # 是否启用自动备份
interval: 3600 # 自动备份间隔(秒)
notify: true # 是否在自动备份完成后通知管理员
on-quit: true # 是否在玩家退出时自动备份其背包
# 团队背包配置
team-backpack:
create-cost: 5000 # 创建团队背包所需费用
default-size: 27 # 团队背包默认大小
max-members: 10 # 团队背包最大成员数- 修复语言文件加载问题,默认语言从"zh"改为"zh_cn"以匹配实际文件名
- 修复插件依赖配置,将"VaultAPI"改为"Vault"以匹配正确的插件名称
- 修复TeamBackpackManager中的addBarrierBlocks方法调用参数错误
- 优化构建配置,确保JAR文件包含所有必要的资源文件
核心性能优化
- 将所有数据库操作移动到异步线程执行,使用CompletableFuture实现
- 实现专用数据库线程池,避免阻塞主线程,显著提升服务器性能
- 添加背包数据缓存机制,减少数据库查询次数
- 优化数据库连接池配置,提高连接复用率
- 实现异步加载界面,防止玩家在数据加载过程中进行操作
代码架构重构
- 创建BaseBackpackManager基类,提取个人背包和团队背包的公共逻辑
- 大幅简化代码结构,减少代码重复,提高可维护性
- 重构异常处理机制,创建统一的ExceptionHandler工具类
- 优化命令处理器,简化指令和权限节点
自动备份功能
- 实现AutoBackupManager自动备份管理器
- 支持定时自动备份,可配置备份间隔
- 支持玩家退出时自动备份其背包数据
- 添加备份完成通知功能
测试增强
- 添加全面的性能测试套件(PerformanceTest)
- 添加数据库操作测试(DatabaseTest)
- 添加备份功能测试(BackupTest)
- 添加团队背包功能测试(TeamBackpackTest)
- 添加背包基本功能测试(BackpackTest)
- 实现并发性能测试,验证多用户场景下的稳定性
- 添加内存使用测试,监控插件资源消耗
其他改进
- 修复语言文件默认配置错误
- 优化配置文件加载逻辑
- 改进错误处理和日志记录
- 增强插件稳定性,修复潜在BUG
- 完善文档和测试指南
- 添加命令补全功能,提升玩家使用体验
- 实现国际化,将文字存储在languages文件夹下,支持zh_cn和en语言
- 添加数据库重试机制,提高系统稳定性
- 修复CI/CD的Release Notes生成逻辑,确保只显示当前版本与上一版本之间的提交
- 优化消息加载逻辑,支持语言文件的自动复制和回退机制
- 添加背包和团队背包的异步加载功能,显著改善用户体验
- 实现加载界面,防止玩家在数据加载过程中进行操作
- 优化数据库访问性能,减少主线程阻塞
- 改进背包界面交互体验
- 修复了团队背包覆盖个人背包的BUG
- 添加团队背包功能,支持多人共享背包
- 实现实时同步机制,防止多人操作时的数据不一致问题
- 改进背包升级系统,支持段式费用和权限控制
- 设置最大背包容量限制(10页,共450格)
- 添加创建团队背包的费用配置
- 修复一些小bug
- 优化数据库连接池配置
- 添加背包冷却时间机制
- 优化背包界面交互体验
- 初始版本发布
- 实现基本云背包功能
- 添加分页界面和背包升级功能
- 集成经济系统和数据持久化
本项目采用 MIT 许可证,详情请见 LICENSE 文件。
如有任何问题或建议,请通过以下方式联系我们:
- 提交 GitHub Issue
- 联系插件开发者
- 评估插件在高负载下的性能表现
- 验证异步数据库操作的有效性
- 测试背包加载和保存的响应时间
-
单玩家性能测试
- 打开背包并进行多次操作,记录响应时间
- 测试背包升级功能的执行速度
- 测量背包数据保存的延迟
-
多玩家并发测试
- 同时让多个玩家打开和操作背包
- 测试团队背包的多用户访问性能
- 评估服务器在高并发下的稳定性
-
数据库性能测试
- 测试不同数据库类型(SQLite、MySQL)的性能差异
- 测量大量背包数据的加载和保存时间
- 验证数据库连接池的有效性
- 使用 Minecraft 服务器性能监控插件
- 利用 Bukkit 的内置性能分析工具
- 查看服务器日志中的响应时间记录
- 验证插件与其他插件的兼容性
- 测试插件在不同服务器版本上的运行情况
- 确保经济系统集成的正确性
-
基本功能测试
- 测试所有命令的执行情况
- 验证背包的正常打开和使用
- 测试背包升级和备份功能
-
团队背包测试
- 创建和管理团队背包
- 测试多成员同时访问团队背包
- 验证权限控制的有效性
-
经济系统集成测试
- 测试与 Vault 插件的集成
- 验证背包升级和团队背包创建的费用扣除
- 测试不同经济插件下的兼容性
-
自动备份测试
- 验证自动备份的定时执行
- 测试玩家退出时的自动备份触发
- 检查备份文件的完整性和恢复功能
- 不同版本的 Minecraft 服务器
- 不同类型的数据库(推荐测试 SQLite 和 MySQL)
- 常见的经济插件(如 EssentialsX Economy)
- 不同规模的玩家数量
- 验证插件在异常情况下的恢复能力
- 测试数据库连接失败时的重试机制
- 确保背包数据的安全性和一致性
-
数据库断开测试
- 在背包操作过程中断开数据库连接
- 验证插件的自动重试机制
- 检查数据是否一致
-
服务器崩溃恢复测试
- 模拟服务器崩溃场景
- 重启服务器后检查背包数据的完整性
- 验证自动备份的有效性
-
数据损坏测试
- 模拟背包数据损坏的情况
- 测试插件的错误处理和恢复机制
- 验证备份恢复功能
通过以上测试,可以确保插件在各种情况下都能稳定运行,并为玩家提供良好的使用体验。