HopperFlow Governor

⚖️ 智能漏斗和物品转移节流,适用于 Minecraft 服务器(1.21+)。 在不破坏原版机制的情况下保持高 TPS——无 NMS,无物品丢失。

资源图片
# HopperFlow Governor > ⚖️ 为 Minecraft 服务器 (1.21+) 提供智能漏斗和物品移动限速。 > 在不破坏原版机制的情况下保持高 TPS — 无需 NMS,无物品损失。 [![Build](https://img.shields.io/github/actions/workflow/status/nolly-mc/HopperFlowGovernor/build.yml?style=for-the-badge)](https://github.com/nolly-mc/HopperFlowGovernor/actions) [![License: NFE-OSL](https://img.shields.io/badge/License-NFE--OSL-pink?style=for-the-badge)](LICENSE) [![bStats](https://img.shields.io/bstats/servers/27129?style=for-the-badge)](https://bstats.org/plugin/bukkit/HopperFlowGovernor) --- ## ✨ 功能 - 🛡️ **保护 TPS** — 只限速每个刻特中 *额外* 的漏斗/投掷器/发射器/漏斗矿车的移动次数。 - ⚙️ **完全可配置** — 每个区块、每个类型和全局限速带有脉冲令牌。 - 📊 **实时诊断** — `/hopperflow inspect`, `/detail`, `/where`, `/top`。 - 🚫 **无 NMS 技巧** — 纯 Spigot API; 在版本之间具有前向兼容性。 - 🎮 **玩家友好** — 无物品损失,附近限速发生时可选的操作栏通知。 - 🗺️ **世界保卫战整合** — 轻松排除特定区域。 - 🧩 **排除** — 按世界、区域或容器名称前缀(例如 `[FAST]` 漏斗)排除。 - 📈 **可选指标** — bStats(可选)用于希望获取使用统计信息的服务器所有者。 - 🔒 **最低开销** — 针对拥有数千个漏斗的大型服务器进行了优化。 --- help top where inspect detail actionbar --- ## 📥 安装 1. 从 [SpigotMC](https://www.spigotmc.org/resources/hopperflow-governor.128524/) / `Modrinth` 下载最新版本。 2. 将 `HopperFlowGovernor-x.x.x.jar` 放入服务器的 `plugins/` 文件夹中。 3. 重启服务器。 将创建一个默认的 `config.yml`。 --- ## ⚙️ 配置 默认的 `config.yml` 上面有很多注释: ```yml # HopperFlow Governor — 限制物品移动事件以稳定 TPS。 # 纯 Bukkit。 无物品损失。 仅取消刻特窗口中多余的移动。 # 全局每个区块默认值(当不存在每类型覆盖时使用) rate_per_chunk_per_sec: 80 # 每个区块的默认平均移动次数/秒 burst_per_chunk: 120 # 每个区块的默认短期脉冲令牌数 # 全局所有区块的上限 max_global_rate: 5000 # 允许的全局平均移动次数/秒 # 可选的每类型覆盖;省略或设置 null 以使用上面的全局默认值 per_type_limits: hopper_block: { rate: 80, burst: 120 } hopper_minecart: { rate: 40, burst: 80 } dropper: { rate: 40, burst: 80 } dispenser: { rate: 20, burst: 40 } # 根据哪些发起者进行管理? include: hopper_blocks: true # 原版区块漏斗 hopper_minecarts: false # 漏斗矿车实体 droppers: false # 向物品栏推送的投掷器 dispensers: false # 向物品栏推送的发射器 # 按类型排除名称前缀(重命名容器/矿车会绕过限速) exempt_name_prefixes: hopper_block: "[FAST]" hopper_minecart: "" dropper: "" dispenser: "" # 世界和世界保卫战排除 exempt_worlds: [ the_end ] exempt_regions: [ ] # WG 区域 ID (如果安装了世界保卫战) # 玩家反馈 notify_players_near_throttle: true notify_radius: 16 # 会计窗口 + 清理 stats_window_seconds: 60 # /inspect、/detail、/where、/top 使用的时间窗口 cleanup_after_minutes: 15 # 删除空闲区块统计数据/桶 # 遥测 (bStats) — 可选。 metrics: enabled: true ``` --- ## 🖥️ 命令 & 权限 | 命令 | 权限 | 默认 | 描述 | |-------------------------|------------------------------|---------|-------------------------------------------------| | `/hopperflow help` | `hopperflow.command.help` | OP | 显示帮助消息 | | `/hopperflow reload` | `hopperflow.command.reload` | OP | 重新加载 config.yml | | `/hopperflow inspect` | `hopperflow.command.inspect` | OP | 显示当前区块的摘要 | | `/hopperflow detail` | `hopperflow.command.detail` | OP | 各发起者(漏斗、投掷器等)的细分 | | `/hopperflow where [N]` | `hopperflow.command.where` | OP | 列出此区块中限速的前 N 个位置 | | `/hopperflow top [N]` | `hopperflow.command.top` | OP | 在最后 60 秒内对区块进行全局排名 | **别名:** `/hflow`, `/hfg` --- ## 🔍 用法示例 * 将漏斗重命名为 `[FAST]` → **它会绕过限制**(自定义分类器、农场)。 * `/hopperflow top 5` → 列出过去 60 秒内受影响最严重的 5 个区块。 * `/hopperflow where 10` → 找到正在限速的 **确切区块坐标**。 * 将漏斗放置在世界保卫战区域内 → 如果区域 ID 列出,则自动排除。 --- ## 📈 指标 * 包含 [bStats](https://bstats.org/) 整合,但 **默认禁用** (`metrics.enabled: false`)。 * 如果启用,插件会匿名报告: * HopperFlowGovernor 版本 * Minecraft 版本 * 服务器计数 * 不收集任何个人或身份识别信息。 * 使用指标是为了帮助根据使用模式来确定未来开发的优先级。 --- ## 🔧 性能说明 * 此插件 **不会** 删除或作废物品。 * 它只会取消超过配置阈值范围内的 *额外* `InventoryMoveItemEvent` 调用。 * 与 ClearLag、WorldGuard 和 Paper 的异步区块系统等插件安全地协同工作。 --- ## 📚 API / 兼容性 * 纯 **Bukkit/Spigot API** — 无 Paper 专用挂钩,无 NMS。 * 与 Paper、Spigot、Purpur 兼容(在 1.21+ 上测试过)。 * 世界保卫战整合是可选的(软依赖)。 --- ## 🤝 贡献 1. 分叉此仓库 & 克隆到本地。 2. 运行 `mvn package` 以构建。 3. 在本地 Paper 服务器上进行测试 (`/plugins/`)。 4. 提交具有清晰提交历史记录的拉取请求。 Bug 报告和功能请求 → [GitHub Issues](https://github.com/nolly-mc/HopperFlowGovernor/issues)。 --- ## 📜 许可证 本项目的许可证为 [NFE-OSL 许可证](https://github.com/Nolly-MC/HopperFlowGovernor/blob/main/LICENSE)。 --- ## ❤️ 鸣谢 * 由 **Nolly** ([@TheNolle](https://github.com/thenolle)) 开发 * 灵感来自社区对漏斗滞后的反馈 * 感谢 [bStats](https://bstats.org/) 和 [SpigotMC](https://spigotmc.org/) 提供的工具