LivePlatformCore

原创 开源 前置/API 工具 LivePlatformCore v1.0.0

完成注册/登录后下载
版权类型
原创
插件中文名称
直播平台核心
插件英文名称
LivePlatformCore
原帖地址
#
支持的核心(服务端)
  1. Paper
语言支持
多语言
适配版本(Java)
  1. 1.21
  2. 1.20
[MD]# LivePlatformCore ## 📋 项目简介 LivePlatformCore 是一个功能强大的 Paper 插件,专为直播平台与 Minecraft 服务器的深度互动而设计。它提供了稳定的直播事件处理机制和灵活的 API 接口,让开发者能够轻松构建各种直播互动插件,实现观众与游戏的实时联动。 ## ✨ 核心功能 | 功能 | 详细描述 | |------|----------| | 🔌 **多平台支持** | 支持 TikTok 直播平台(后续将扩展更多平台) | | 📡 **全面事件支持** | 支持弹幕、礼物、点赞、观众加入/离开、关注、房间信息更新等多种直播事件 | | ⚡ **高效异步处理** | 所有事件处理均在独立线程池执行,完全不阻塞游戏主线程,确保服务器流畅运行 | | 🔄 **智能重连机制** | 实现带指数退避和抖动的自动重连算法,确保直播连接稳定可靠 | | 🎯 **灵活事件系统** | 支持事件过滤、优先级管理和批量处理,满足不同场景需求 | | 📊 **实时统计监控** | 提供事件统计、性能监控和连接状态查询,便于服务器管理员监控和优化 | | 🛠️ **易用 API 设计** | 简洁明了的 API 接口,配合详细的文档和示例,降低开发者集成难度 | | 📝 **强大调试功能** | 支持多级调试日志,便于开发排查问题和服务器管理员监控运行状态 | | 🔧 **可配置性强** | 提供丰富的配置选项,允许根据服务器需求调整插件行为 | ## 📋 安装要求 | 依赖项 | 版本要求 | 说明 | |--------|----------|------| | 服务器 | Paper 1.20.1+ | 推荐使用 Paper 服务器以获得最佳性能 | | Java | Java 17+ | 必须使用 Java 17 或更高版本 | | 网络 | 可访问直播平台 API | 服务器需要能够访问直播平台的 API 服务 | ## 📦 快速安装 1. **下载插件** - 从 Releases 下载最新版本的 `LivePlatformCore.jar` 2. **安装插件** - 将下载的 `LivePlatformCore.jar` 放入服务器的 `plugins` 目录 3. **启动服务器** - 启动服务器,插件会自动生成配置文件 - 首次启动后,服务器会自动尝试连接到直播平台 4. **配置插件** - 停止服务器 - 修改 `plugins/LivePlatformCore/config.yml` 配置文件 - 根据需求调整直播平台设置、事件配置等 5. **重启服务器或重载配置** - 重启服务器,或使用 `/livecore reload` 命令重新加载配置 ## ⚙️ 配置详解 ### 主要配置文件:`config.yml` LivePlatformCore 使用 YAML 格式的配置文件,支持丰富的配置选项,以下是完整的配置文件示例及详细说明: ```yaml # LivePlatformCore 配置文件 # 版本: 1.0.0 # 语言设置 # 支持: zh_cn (简体中文), en_us (英语) language: zh_cn # 调试模式 # 设置为 true 可输出详细日志,便于开发和调试 # 默认值: false debug: false # 直播平台设置 live: # 直播平台类型 (目前仅支持 tiktok) # 默认值: tiktok platform: tiktok # TikTok 平台配置 tiktok: # TikTok 用户名 (必填,用于连接到直播间) # 默认值: "" username: your_username # TikTok 房间 ID (可选,自动获取) # 默认值: "" room_id: "" # TikTok 区域设置 (us, cn, jp, kr 等) # 默认值: "us" region: "us" # 重连机制配置 reconnect: # 初始重连延迟 (毫秒,必须大于0) # 默认值: 5000 delay: 5000 # 最大重连次数 (-1 表示无限重连) # 默认值: -1 max_attempts: -1 # 最大重连延迟 (毫秒) # 默认值: 300000 (5分钟) max_delay: 300000 # 是否启用指数退避算法 (自动调整重连间隔) # 默认值: true enable_exponential_backoff: true # 事件处理配置 events: # 是否启用事件统计 # 默认值: true enable_stats: true # 事件处理线程池大小 (根据服务器性能调整) # 默认值: 4 thread_pool_size: 4 # 启用的事件类型 enable: comments: true # 弹幕事件 gifts: true # 礼物事件 joins: true # 观众加入事件 likes: true # 点赞事件 follows: true # 关注事件 unfollows: true # 取消关注事件 room: info: true # 房间信息更新事件 stats: true # 房间统计更新事件 # 事件过滤配置 filters: # 弹幕内容过滤 (正则表达式,匹配的弹幕才会触发事件) # 为空表示不过滤 # 默认值: "" comment_pattern: "" # 最小礼物价值 (仅处理价值大于此值的礼物事件,TikTok 礼物价值单位) # 默认值: 0.0 min_gift_value: 0.0 # 性能优化配置 performance: # 事件处理超时时间 (毫秒,超过此时间的事件处理会被中断) # 默认值: 5000 event_timeout: 5000 # 事件队列大小 (防止事件堆积导致内存溢出) # 默认值: 1000 queue_size: 1000 # 是否定期清理未使用的监听器 # 默认值: true clean_unused_listeners: true # 清理间隔时间 (分钟) # 默认值: 30 cleanup_interval: 30 ``` ### 配置验证规则 LivePlatformCore 包含自动配置验证机制,确保配置文件的合法性: | 配置项 | 验证规则 | 修复措施 | |--------|----------|----------| | `live.reconnect.delay` | 必须大于0 | 重置为默认值5000毫秒 | | `live.reconnect.max_attempts` | 必须≥-1 (-1表示无限次) | 重置为默认值-1 | | `live.platform` | 必须是支持的平台 | 当前仅支持tiktok,否则重置为默认值 | | `events.thread_pool_size` | 必须≥1 | 重置为默认值4 | | `performance.queue_size` | 必须≥100 | 重置为默认值1000 | ### 配置最佳实践 1. **调试模式**: - 开发和测试阶段:设置为 `true`,获取详细日志信息 - 生产环境:设置为 `false`,减少日志开销 2. **重连机制**: - 建议保持 `enable_exponential_backoff: true`,提高重连成功率 - 对于不稳定的网络环境,可适当增加 `max_attempts` 值 3. **事件处理**: - 根据服务器性能调整 `thread_pool_size`,建议值: - 小型服务器:2-4 - 中型服务器:4-8 - 大型服务器:8-16 - 仅启用实际需要的事件类型,减少不必要的处理 4. **事件过滤**: - 使用 `comment_pattern` 过滤无效弹幕,减少事件处理量 - 对于高流量直播间,可适当提高 `min_gift_value`,只处理有价值的礼物 5. **性能优化**: - 对于高流量直播间,可适当增加 `queue_size` - 保持 `clean_unused_listeners: true`,自动清理不再使用的监听器 ### 配置重载 修改配置文件后,可以通过以下方式重载配置: 1. **命令重载**:使用 `/livecore reload` 命令(需要 `liveplatformcore.reload` 权限) 2. **重启服务器**:完全重启服务器,重新加载所有配置 配置重载后,新的配置会立即生效,无需重启插件。 ## 🎮 命令与权限 ### 命令列表 | 命令 | 描述 | 所需权限 | |------|------|----------| | `/livecore help` | 显示命令帮助信息 | `liveplatformcore.help` | | `/livecore connect` | 手动连接到直播平台 | `liveplatformcore.connect` | | `/livecore disconnect` | 手动断开直播连接 | `liveplatformcore.disconnect` | | `/livecore reload` | 重新加载配置文件 | `liveplatformcore.reload` | | `/livecore status` | 查看直播连接状态 | `liveplatformcore.status` | | `/livecore stats` | 查看总体统计信息 | `liveplatformcore.stats` | | `/livecore stats events` | 查看事件统计详情 | `liveplatformcore.stats` | | `/livecore stats performance` | 查看性能统计数据 | `liveplatformcore.stats` | | `/livecore debug on` | 启用调试模式 | `liveplatformcore.debug` | | `/livecore debug off` | 禁用调试模式 | `liveplatformcore.debug` | ### 权限节点 | 权限节点 | 描述 | 默认权限 | |----------|------|----------| | `liveplatformcore.*` | 所有 LivePlatformCore 权限(管理员权限) | OP | | `liveplatformcore.help` | 允许使用帮助命令 | 所有人 | | `liveplatformcore.status` | 允许查看连接状态 | 所有人 | | `liveplatformcore.connect` | 允许手动连接直播平台 | OP | | `liveplatformcore.disconnect` | 允许手动断开直播连接 | OP | | `liveplatformcore.reload` | 允许重新加载配置 | OP | | `liveplatformcore.stats` | 允许查看统计信息 | OP | | `liveplatformcore.debug` | 允许修改调试模式 | OP | ## 🔧 开发者 API ### 1. 依赖管理 将以下依赖添加到你的 `pom.xml` 文件中: ```xml <dependency> <groupId>com.liveinteractive</groupId> <artifactId>live-platform-core</artifactId> <version>1.0.0</version> <scope>provided</scope> </dependency> ``` ### 2. 获取 API 实例 ```java import com.liveinteractive.liveplatformcore.LivePlatformAPI; import com.liveinteractive.liveplatformcore.LivePlatformCore; import org.bukkit.plugin.java.JavaPlugin; public class YourPlugin extends JavaPlugin { private LivePlatformAPI livePlatformAPI; @Override public void onEnable() { // 尝试获取 LivePlatformCore 插件实例 org.bukkit.plugin.Plugin plugin = getServer().getPluginManager().getPlugin("LivePlatformCore"); if (plugin != null) { try { // 兼容两种获取方式,确保 API 连接稳定 if (plugin instanceof LivePlatformAPI) { this.livePlatformAPI = (LivePlatformAPI) plugin; } else { LivePlatformCore core = (LivePlatformCore) plugin; this.livePlatformAPI = core; } getLogger().info("成功连接到 LivePlatformCore API!"); } catch (ClassCastException e) { getLogger().severe("无法连接到 LivePlatformCore API: " + e.getMessage()); } } else { getLogger().severe("未找到 LivePlatformCore 插件!请确保已正确安装。"); } } // 提供获取 API 实例的方法 public LivePlatformAPI getLivePlatformAPI() { return livePlatformAPI; } } ``` ### 3. 监听直播事件 ```java import com.liveinteractive.liveplatformcore.event.LiveCommentEvent; import com.liveinteractive.liveplatformcore.event.LiveGiftEvent; import com.liveinteractive.liveplatformcore.event.LiveJoinEvent; import com.liveinteractive.liveplatformcore.event.LiveLikeEvent; import com.liveinteractive.liveplatformcore.event.LiveEventListener; // 注册弹幕事件监听器 livePlatformAPI.registerListener(LiveCommentEvent.class, new LiveEventListener<LiveCommentEvent>() { @Override public void onEvent(LiveCommentEvent event) { String username = event.getUsername(); String content = event.getContent(); long timestamp = event.getTimestamp(); // 注意:Bukkit API 操作必须在主线程执行 getServer().getScheduler().runTask(this, () -> { // 示例:在游戏中广播弹幕 getServer().broadcastMessage("§b[直播弹幕] §f" + username + ": §r" + content); }); } }); // 使用Lambda表达式注册礼物事件监听器(推荐) livePlatformAPI.registerListener(LiveGiftEvent.class, event -> { String username = event.getUsername(); String giftName = event.getGiftName(); int amount = event.getAmount(); double value = event.getValue(); getLogger().info("收到直播礼物: " + username + " 送了 " + amount + " 个 " + giftName + " (价值: " + value + ")"); // 在主线程中执行游戏内操作 getServer().getScheduler().runTask(this, () -> { // 示例:根据礼物价值给予玩家奖励 // 你的礼物处理逻辑 }); }); // 注册观众加入事件监听器 livePlatformAPI.registerListener(LiveJoinEvent.class, event -> { String username = event.getUsername(); getServer().getScheduler().runTask(this, () -> { getServer().broadcastMessage("§a欢迎直播观众 §f" + username + " §a加入直播间!"); }); }); ``` ### 4. 事件过滤示例 ```java import com.liveinteractive.liveplatformcore.event.LiveCommentEvent; import com.liveinteractive.liveplatformcore.event.LiveGiftEvent; import com.liveinteractive.liveplatformcore.event.LiveEventFilter; // 示例 1: 只监听包含命令前缀 "!" 的弹幕 livePlatformAPI.registerListener( LiveCommentEvent.class, event -> { // 处理命令弹幕 String command = event.getContent().substring(1); getLogger().info("收到直播命令: " + command + " (来自: " + event.getUsername() + ")"); }, new LiveEventFilter<LiveCommentEvent>() { @Override public boolean filter(LiveCommentEvent event) { return event.getContent().startsWith("!"); } } ); // 示例 2: 只处理价值大于 10.0 的礼物 livePlatformAPI.registerListener( LiveGiftEvent.class, event -> { // 处理高价值礼物,例如生成稀有物品或强大生物 getServer().getScheduler().runTask(this, () -> { // 高价值礼物处理逻辑 }); }, event -> event.getValue() > 10.0 // 使用Lambda表达式作为过滤器 ); // 示例 3: 组合过滤条件 livePlatformAPI.registerListener( LiveCommentEvent.class, event -> { // 处理符合条件的弹幕 }, event -> { String content = event.getContent(); // 只处理长度大于 5 且包含 "#" 标签的弹幕 return content.length() > 5 && content.contains("#"); } ); ``` ### 5. API 核心方法 | 方法名 | 描述 | |--------|------| | `connect()` | 手动连接到直播平台,返回连接是否成功 | | `disconnect()` | 手动断开直播连接,返回断开是否成功 | | `isConnected()` | 检查是否已连接到直播平台 | | `getCurrentPlatform()` | 获取当前直播平台类型(如 "tiktok") | | `getCurrentUsername()` | 获取当前监听的用户名 | | `registerListener(Class<T>, LiveEventListener<T>)` | 注册事件监听器 | | `registerListener(Class<T>, LiveEventListener<T>, LiveEventFilter<T>)` | 注册带过滤条件的事件监听器 | | `registerListener(Class<T>, LiveEventListener<T>, LiveEventFilter<T>, int)` | 注册带过滤条件和优先级的事件监听器 | | `unregisterListener(Class<T>, LiveEventListener<T>)` | 注销指定事件类型的监听器 | | `getConfigManager()` | 获取配置管理器,用于访问配置信息 | | `getStatsManager()` | 获取统计管理器,用于获取事件和性能统计 | | `enableDebugMode(boolean)` | 启用或禁用调试模式 | | `isDebugMode()` | 检查是否处于调试模式 | ## 📚 开发最佳实践 ### 1. 线程安全处理 - **务必记住**:所有涉及 Bukkit API 的操作(如发送消息、生成实体、修改方块等)**必须**在**主线程**执行 - 使用 `BukkitScheduler.runTask()` 切换到主线程执行Bukkit API操作 - 事件监听器本身在异步线程执行,切勿直接调用 Bukkit API ### 2. 事件处理优化 - 合理使用事件过滤器,减少不必要的处理开销 - 避免在事件监听器中执行耗时操作,如网络请求、复杂计算等 - 对于批量事件(如大量点赞),考虑使用批量处理机制 - 及时注销不再使用的监听器,避免内存泄漏 ### 3. 错误处理 - 为事件监听器添加适当的异常处理,防止单个监听器故障影响整个事件系统 - 记录关键操作日志,便于调试和监控 - 考虑添加降级机制,在直播连接异常时保证插件基本功能可用 ### 4. 配置管理 - 为你的插件添加 LivePlatformCore 依赖检查 - 提供清晰的错误信息,帮助服务器管理员排查配置问题 - 考虑添加自动更新检查功能,及时通知用户插件新版本 ## 📊 统计与监控 ### 查看统计信息 LivePlatformCore 提供了丰富的统计命令,帮助服务器管理员监控插件运行状态: ```bash # 查看总体统计信息 /livecore stats # 查看详细事件统计 /livecore stats events # 查看性能统计数据 /livecore stats performance ``` ### 统计信息说明 | 统计项 | 说明 | |--------|------| | 连接状态 | 显示当前直播连接状态和累计连接时长 | | 事件总数 | 各种类型事件的总处理数量 | | 事件速率 | 最近一分钟的事件处理速率 | | 平均处理时间 | 各类事件的平均处理时间 | | 队列状态 | 事件队列的当前大小和峰值 | | 线程池状态 | 线程池的活跃线程数和任务执行情况 | | 重连统计 | 重连尝试次数和成功率 | ## 🐛 常见问题与解决方案 ### Q1: 无法连接到 TikTok 直播 **可能原因:** - 配置文件中 `username` 填写错误 - 服务器网络无法访问 TikTok API - TikTok 直播间未开播 - 区域设置不正确 **解决方案:** 1. 仔细检查 `config.yml` 中的 `username` 配置,确保与直播间用户名完全一致 2. 测试服务器网络连接,确保可以访问 TikTok 相关域名 3. 确认 TikTok 直播间正在直播状态 4. 尝试修改 `region` 配置为合适的区域(如 `us`, `cn`, `jp` 等) 5. 启用调试模式 (`debug: true`),查看详细错误日志 ### Q2: 事件监听器不工作 **可能原因:** - API 实例获取失败 - 对应事件类型未在配置中启用 - 事件过滤器条件过于严格 - 监听器注册代码存在问题 **解决方案:** 1. 检查插件日志,确认 API 连接成功 2. 检查 `config.yml` 中对应事件类型的 `enable` 配置是否为 `true` 3. 调试事件过滤器,尝试放宽条件或暂时移除过滤器 4. 检查监听器注册代码,确保没有语法错误或逻辑问题 5. 查看服务器日志,确认监听器是否成功注册 ### Q3: 服务器性能下降 **可能原因:** - 事件处理逻辑耗时过长 - 事件监听器过多 - 事件队列堆积 - 线程池配置不合理 **解决方案:** 1. 优化事件监听器的处理逻辑,减少耗时操作 2. 减少不必要的监听器,合并相似功能 3. 调整 `config.yml` 中的性能参数: - 增加 `thread_pool_size` 以提高并发处理能力 - 增大 `queue_size` 以应对突发大量事件 - 调整 `event_timeout` 以防止长时间阻塞 4. 使用统计命令 `/livecore stats performance` 分析性能瓶颈 ### Q4: 礼物事件价值不准确 **可能原因:** - TikTok 礼物价值计算方式与预期不符 - 礼物价值单位理解错误 **解决方案:** 1. 注意:TikTok 礼物价值单位并非实际货币,而是平台内部价值 2. 建议通过实际测试确认不同礼物的价值范围 3. 调整 `min_gift_value` 配置以适应实际需求 ## 📝 更新日志 ### v1.0.0 (2025-12-15) - 初始版本正式发布 - 支持 TikTok 直播平台 - 实现完整的事件体系:弹幕、礼物、点赞、观众加入/离开、关注等 - 提供稳定的 API 接口,支持事件监听和过滤 - 实现智能重连机制,确保直播连接稳定 - 提供丰富的统计和监控功能 - 支持详细的调试日志 - 提供完整的配置选项 ## 🤝 贡献指南 我们非常欢迎社区开发者参与 LivePlatformCore 的开发和改进! ### 贡献流程 1. Fork 本项目仓库到你的 GitHub 账号 2. 创建一个新的功能分支:`git checkout -b feature/YourFeatureName` 3. 实现你的功能或修复,确保代码符合项目的代码风格 4. 编写或更新相关文档 5. 提交你的修改:`git commit -m "Add: 你的功能描述"` 6. 推送到你的分支:`git push origin feature/YourFeatureName` 7. 开启 Pull Request,描述你的修改内容和目的 ### 开发规范 - 代码风格遵循 Java 标准规范 - 所有公共方法和类必须添加 Javadoc 注释 - 新增功能必须包含相应的测试用例 - 遵循最小化修改原则,避免不必要的代码变动 - 确保代码兼容 Paper 1.20.1+ 版本 ## 📄 许可证 LivePlatformCore 采用 MIT 许可证开源。 ## 📞 联系方式与支持 - **问题反馈**: 请在 Issues 中提交 - **讨论交流**: 作者QQ:2919089965,申请好友记得标注其来意 ## 📦 相关项目 - **LiveBattlePlugin** - 基于 LivePlatformCore 开发的直播阵营对战插件,实现观众通过直播互动生成游戏内生物进行对战 ## 🙏 致谢 感谢以下项目和开发者对 LivePlatformCore 的贡献和启发: - [TikTokLiveJava](https://github.com/jwdeveloper/TikTokLiveJava) - 提供 TikTok 直播连接支持 - 所有参与测试和提供反馈的用户 --- **LivePlatformCore** - 连接直播与游戏的桥梁 🎮📡 *如果这个项目对你有帮助,请给我们一个 ⭐ 支持一下!*[/MD]
作者
CHL_chun
下载
11
查看
425
首次发布
最后更新

评分

0.00 星 0 次评分

CHL_chun 的其他资源

后退
顶部 底部