Skip to content

XiNian-dada/XiBackpack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XiBackpack 云背包插件

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

配置文件

config.yml

# 数据库配置
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 # 团队背包最大成员数

更新日志

v1.4.1(最新版本)

  • 修复语言文件加载问题,默认语言从"zh"改为"zh_cn"以匹配实际文件名
  • 修复插件依赖配置,将"VaultAPI"改为"Vault"以匹配正确的插件名称
  • 修复TeamBackpackManager中的addBarrierBlocks方法调用参数错误
  • 优化构建配置,确保JAR文件包含所有必要的资源文件

v1.4.0(高性能重构版本)

核心性能优化

  • 将所有数据库操作移动到异步线程执行,使用CompletableFuture实现
  • 实现专用数据库线程池,避免阻塞主线程,显著提升服务器性能
  • 添加背包数据缓存机制,减少数据库查询次数
  • 优化数据库连接池配置,提高连接复用率
  • 实现异步加载界面,防止玩家在数据加载过程中进行操作

代码架构重构

  • 创建BaseBackpackManager基类,提取个人背包和团队背包的公共逻辑
  • 大幅简化代码结构,减少代码重复,提高可维护性
  • 重构异常处理机制,创建统一的ExceptionHandler工具类
  • 优化命令处理器,简化指令和权限节点

自动备份功能

  • 实现AutoBackupManager自动备份管理器
  • 支持定时自动备份,可配置备份间隔
  • 支持玩家退出时自动备份其背包数据
  • 添加备份完成通知功能

测试增强

  • 添加全面的性能测试套件(PerformanceTest)
  • 添加数据库操作测试(DatabaseTest)
  • 添加备份功能测试(BackupTest)
  • 添加团队背包功能测试(TeamBackpackTest)
  • 添加背包基本功能测试(BackpackTest)
  • 实现并发性能测试,验证多用户场景下的稳定性
  • 添加内存使用测试,监控插件资源消耗

其他改进

  • 修复语言文件默认配置错误
  • 优化配置文件加载逻辑
  • 改进错误处理和日志记录
  • 增强插件稳定性,修复潜在BUG
  • 完善文档和测试指南

v1.3.0

  • 添加命令补全功能,提升玩家使用体验
  • 实现国际化,将文字存储在languages文件夹下,支持zh_cn和en语言
  • 添加数据库重试机制,提高系统稳定性
  • 修复CI/CD的Release Notes生成逻辑,确保只显示当前版本与上一版本之间的提交
  • 优化消息加载逻辑,支持语言文件的自动复制和回退机制

v1.2.0

  • 添加背包和团队背包的异步加载功能,显著改善用户体验
  • 实现加载界面,防止玩家在数据加载过程中进行操作
  • 优化数据库访问性能,减少主线程阻塞
  • 改进背包界面交互体验
  • 修复了团队背包覆盖个人背包的BUG

v1.1.0

  • 添加团队背包功能,支持多人共享背包
  • 实现实时同步机制,防止多人操作时的数据不一致问题
  • 改进背包升级系统,支持段式费用和权限控制
  • 设置最大背包容量限制(10页,共450格)
  • 添加创建团队背包的费用配置

v1.0.2

  • 修复一些小bug
  • 优化数据库连接池配置

v1.0.1

  • 添加背包冷却时间机制
  • 优化背包界面交互体验

v1.0.0

  • 初始版本发布
  • 实现基本云背包功能
  • 添加分页界面和背包升级功能
  • 集成经济系统和数据持久化

许可证

本项目采用 MIT 许可证,详情请见 LICENSE 文件。

支持与反馈

如有任何问题或建议,请通过以下方式联系我们:

  • 提交 GitHub Issue
  • 联系插件开发者

测试指南

性能测试

测试目标

  • 评估插件在高负载下的性能表现
  • 验证异步数据库操作的有效性
  • 测试背包加载和保存的响应时间

测试方法

  1. 单玩家性能测试

    • 打开背包并进行多次操作,记录响应时间
    • 测试背包升级功能的执行速度
    • 测量背包数据保存的延迟
  2. 多玩家并发测试

    • 同时让多个玩家打开和操作背包
    • 测试团队背包的多用户访问性能
    • 评估服务器在高并发下的稳定性
  3. 数据库性能测试

    • 测试不同数据库类型(SQLite、MySQL)的性能差异
    • 测量大量背包数据的加载和保存时间
    • 验证数据库连接池的有效性

测试工具

  • 使用 Minecraft 服务器性能监控插件
  • 利用 Bukkit 的内置性能分析工具
  • 查看服务器日志中的响应时间记录

集成测试

测试目标

  • 验证插件与其他插件的兼容性
  • 测试插件在不同服务器版本上的运行情况
  • 确保经济系统集成的正确性

测试场景

  1. 基本功能测试

    • 测试所有命令的执行情况
    • 验证背包的正常打开和使用
    • 测试背包升级和备份功能
  2. 团队背包测试

    • 创建和管理团队背包
    • 测试多成员同时访问团队背包
    • 验证权限控制的有效性
  3. 经济系统集成测试

    • 测试与 Vault 插件的集成
    • 验证背包升级和团队背包创建的费用扣除
    • 测试不同经济插件下的兼容性
  4. 自动备份测试

    • 验证自动备份的定时执行
    • 测试玩家退出时的自动备份触发
    • 检查备份文件的完整性和恢复功能

测试环境

  • 不同版本的 Minecraft 服务器
  • 不同类型的数据库(推荐测试 SQLite 和 MySQL)
  • 常见的经济插件(如 EssentialsX Economy)
  • 不同规模的玩家数量

故障恢复测试

测试目标

  • 验证插件在异常情况下的恢复能力
  • 测试数据库连接失败时的重试机制
  • 确保背包数据的安全性和一致性

测试方法

  1. 数据库断开测试

    • 在背包操作过程中断开数据库连接
    • 验证插件的自动重试机制
    • 检查数据是否一致
  2. 服务器崩溃恢复测试

    • 模拟服务器崩溃场景
    • 重启服务器后检查背包数据的完整性
    • 验证自动备份的有效性
  3. 数据损坏测试

    • 模拟背包数据损坏的情况
    • 测试插件的错误处理和恢复机制
    • 验证备份恢复功能

通过以上测试,可以确保插件在各种情况下都能稳定运行,并为玩家提供良好的使用体验。

About

A Minecraft Plugin of Cloud Backpack for player

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages