WeFriends

一个为 Minecraft 服务器提供全面的朋友和派对管理系统的功能,支持跨服务器,为 Paper/Spigot 和 Folia 构建。

资源图片
# We-Friends [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Java](https://img.shields.io/badge/Java-17+-orange.svg)](https://www.oracle.com/java/) [![Paper](https://img.shields.io/badge/Paper-1.21.1+-blue.svg)](https://papermc.io/) [![Folia](https://img.shields.io/badge/Folia-Supported-green.svg)](https://github.com/PaperMC/Folia) 一个为 Minecraft 服务器提供全面的朋友和派对管理系统的插件,支持跨服务器,适用于 Paper/Spigot 和 Folia。 ## ✨ 特性 ### 🤝 朋友系统 - **好友请求**: 发送、接受和拒绝好友请求 - **好友列表**: 查看在线/离线好友以及状态指示器 - **好友聊天**: 私人消息和好友群组聊天 - **加入/退出通知**: 在好友加入或离开时收到通知 - **请求切换**: 启用/禁用接收好友请求 - **跨服务器支持**: 好友可以在多个服务器之间互动 ### 🎉 派对系统 - **派对创建**: 创建和管理派对以及好友 - **派对邀请**: 邀请好友加入你的派对 - **派对聊天**: 专用的派对聊天频道 - **派对角色**: 领导者和成员角色以及权限 - **派对管理**: 踢出、晋升、转移领导权和解散 - **跨服务器派对**: 派对成员可以在不同的服务器上 ### 🌐 跨服务器支持 - **多服务器网络**: 使用 Redis 连接多个服务器 - **实时同步**: 服务器之间的即时通知 - **服务器标识**: 查看好友/派对成员所在的服务器 - **无缝体验**: 在整个网络上聊天和互动 ### 🔧 高级特性 - **数据库支持**: SQLite 和 MySQL 支持 - **Redis 集成**: 用于跨服务器通信 - **PlaceholderAPI**: 为其他插件提供自定义占位符 - **Folia 支持**: 完全兼容 Folia 服务器 - **聊天监听**: 工作人员可以监控好友/派对聊天 - **聊天模式**: 在普通、好友和派对聊天模式之间切换 ## 📋 要求 - **Java**: 17 或更高版本 - **服务器软件**: Paper 1.21.1+ 或 Folia - **数据库**: SQLite(包含)或 MySQL - **Redis**: 需要跨服务器功能(可选) ## 🚀 安装 1. **下载** 最新版本从 [Releases](https://github.com/WeThink25/We-Friends/releases) 2. **放置** JAR 文件在服务器的 `plugins` 文件夹中 3. **启动** 你的服务器以生成配置文件 4. **配置** 插件(参见配置部分) 5. **重启** 你的服务器 ## ⚙️ 配置 ### 基本设置(单服务器) ```yaml # config.yml database: type: sqlite # 使用 SQLite 用于单服务器 server: name: lobby # 你的服务器名称 cross-server: enabled: false # 对于单服务器禁用 redis: enabled: false # 单服务器不需要 ``` ### 多服务器设置 ```yaml # config.yml database: type: mysql # 多服务器需要 mysql: host: localhost port: 3306 database: wefriends username: root password: "your_password" server: name: lobby # 每个服务器的唯一名称 cross-server: enabled: true # 启用跨服务器功能 sync-interval: 30 notification-timeout: 5 redis: enabled: true # 跨服务器需要 host: localhost port: 6379 password: "" channel: wefriends:events limits: max-friends: 200 max-party-size: 8 ``` ### 数据库设置 (MySQL) ```sql CREATE DATABASE wefriends; CREATE USER 'wefriends'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON wefriends.* TO 'wefriends'@'%'; FLUSH PRIVILEGES; ``` ## 🎮 命令 ### 朋友命令 - `/friend add <玩家>` - 发送好友请求 - `/friend accept <玩家>` - 接受好友请求 - `/friend deny <玩家>` - 拒绝好友请求 - `/friend remove <玩家>` - 删除好友 - `/friend list` - 查看你的好友列表 - `/friend requests` - 查看挂起的请求 - `/friend toggle` - 切换好友请求的开关 - `/fchat <消息>` - 向所有好友发送消息 - `/fmsg <好友> <消息>` - 向好友发送私人消息 ### 派对命令 - `/party create` - 创建一个新的派对 - `/party invite <玩家>` - 邀请好友加入你的派对 - `/party accept <玩家>` - 接受派对邀请 - `/party deny <玩家>` - 拒绝派对邀请 - `/party leave` - 离开你当前的派对 - `/party kick <玩家>` - 从派对中踢出成员(仅限领导者) - `/party promote <玩家>` - 晋升成员为领导者(仅限领导者) - `/party transfer <玩家>` - 转移领导权(仅限领导者) - `/party disband` - 解散派对(仅限领导者) - `/pc <消息>` - 向派对成员发送消息 ### 聊天模式命令 - `/fchatmode` - 切换好友聊天模式 - `/pchatmode` - 切换派对聊天模式 - `/chatmode` - 查看当前聊天模式 ### 管理员命令 - `/fchatspy` - 切换好友聊天监听(需要权限) - `/partyspy` - 切换派对聊天监听(需要权限) - `/wefriends reload` - 重新加载插件配置 ## 🔑 权限 ### 玩家权限 - `wefriends.friend.use` - 使用朋友命令 - `wefriends.party.use` - 使用派对命令 - `wefriends.chat.friend` - 使用好友聊天 - `wefriends.chat.party` - 使用派对聊天 ### 管理员权限 - `wefriends.admin` - 访问管理员命令 - `wefriends.spy.friend` - 监控好友聊天 - `wefriends.spy.party` - 监控派对聊天 - `wefriends.reload` - 重新加载插件配置 ## 📊 PlaceholderAPI 该插件提供占位符,用于与 PlaceholderAPI 一起使用: - `%wefriends_friends_online%` - 在线好友数量 - `%wefriends_friends_total%` - 总好友数量 - `%wefriends_party_size%` - 当前派对大小 - `%wefriends_party_leader%` - 派对领导者姓名 - `%wefriends_in_party%` - 玩家是否在派对中(true/false) ## 🔧 API 使用 ### Maven 依赖项 ```xml me.wethink wefriends 1.0.0 provided ``` ### 基本 API 示例 ```java // 获取插件实例 WeFriends plugin = WeFriends.getInstance(); // 检查两个玩家是否是朋友 boolean areFriends = plugin.getFriendManager().areFriends(player1UUID, player2UUID); // 获取玩家的好友 Set friends = plugin.getFriendManager().getFriendUuidsPublic(playerUUID); // 获取派对信息 String partyId = plugin.getPartyManager().getPartyIdPublic(playerUUID); List partyMembers = plugin.getPartyManager().getPartyMembers(partyId); ``` ## 🌐 跨服务器设置指南 ### 第一步:数据库配置 设置可供所有服务器访问的共享 MySQL 数据库: ```yaml database: type: mysql mysql: host: your-database-host port: 3306 database: wefriends_network username: wefriends_user password: secure_password ``` ### 第二步:Redis 配置 配置 Redis 以实现实时通信: ```yaml redis: enabled: true host: your-redis-host port: 6379 password: redis_password channel: wefriends:network ``` ### 第三步:服务器标识 为每个服务器指定一个唯一的名称: ```yaml server: name: lobby # 对于大堂服务器 name: survival # 对于生存服务器 name: creative # 对于创造服务器 ``` ### 第四步:启用跨服务器功能 ```yaml cross-server: enabled: true sync-interval: 30 notification-timeout: 5 ``` ## 🐛 故障排除 ### 常见问题 **数据库连接失败** - 验证 MySQL 凭据和主机可访问性 - 检查防火墙设置 - 确保数据库存在并且用户具有适当的权限 **Redis 连接失败** - 验证 Redis 服务器是否正在运行 - 检查 Redis 主机和端口配置 - 验证如果启用了身份验证,Redis 密码是否正确 **跨服务器无法工作** - 确保所有服务器都使用相同的 MySQL 数据库 - 验证 Redis 配置在所有服务器上是否相同 - 检查服务器名称是否唯一 - 确认 `cross-server.enabled` 为 true **插件无法加载** - 验证是否安装了 Java 17+ - 检查服务器软件兼容性 (Paper 1.21.1+) - 查看服务器日志以获取错误消息 ## 🤝 贡献 我们欢迎贡献!请遵循以下步骤: 1. **Fork** 存储库 2. **创建** 一个功能分支 (`git checkout -b feature/amazing-feature`) 3. **提交** 您的更改 (`git commit -m 'Add amazing feature'`) 4. **推送到** 分支 (`git push origin feature/amazing-feature`) 5. **打开** 一个拉取请求 ### 开发设置 1. 克隆存储库 2. 导入到您的 IDE (IntelliJ IDEA 推荐) 3. 运行 `mvn clean install` 以构建 4. 在 Paper 1.21.1+ 服务器上进行测试 ## 📝 许可 本项目使用 MIT 许可协议进行许可 - 请参阅 [LICENSE](LICENSE) 文件以了解详情。 ## 🙏 鸣谢 - **Paper 团队** - 为优秀的服务器软件 - **Folia 团队** - 为多线程服务器支持 - **PlaceholderAPI** - 用于占位符集成 - **HikariCP** - 用于数据库连接池 - **Jedis** - 用于 Redis 连接性 ## 📞 支持 - **问题**: [GitHub Issues](https://github.com/WeThink25/We-Friends/issues) - **讨论**: [GitHub Discussions](https://github.com/WeThink25/We-Friends/discussions) --- ❤️ 由 [WeThink](https://github.com/WeThink25) 制作