Chunk Analyzer

一键查看你的服务器加载了哪些区块!

资源图片
![Background](https://cdn.modrinth.com/data/kJgPPmXk/images/e3b5326187178c7c7ec7a318dde55e12b245043b.png) # ChunkAnalyzer **ChunkAnalyzer** 是一个适用于运行 **Spigot/Paper 1.16.x - 1.21.1** 的 Minecraft 服务器的轻量级且高效的插件。它赋予服务器管理员监控和优化服务器性能的能力,通过分析已加载区块中的潜在滞后源,例如实体数量过多、红石装置或资源密集型方块。ChunkAnalyzer 具有用户友好的 GUI、可配置的设置和多语言支持,是维护流畅且无滞后的服务器体验的必备工具。 ## ✨ 特点 - ✅ **区块监控**: 跟踪已加载区块中的实体、玩家、瓦片实体、盔甲架、红石组件、漏斗等等。 - 🚨 **滞后机器检测**: 识别存在过多实体(>500)、盔甲架(>50)、红石方块(>100)或漏斗(>20)的麻烦区块。 - 📊 **GUI 菜单**: 以加载得分显示区块数据,提供世界过滤器(主世界、下界、末地),并可点击传送至区块进行检查。 - 🌍 **多语言支持**: 包含英语 (`en`) 和俄语 (`ru`) 翻译,可通过 `config.yml` 自定义。 - 🔎 **深度分析选项**: 扫描红石、漏斗、可更新方块和光源以获取详细的性能洞察(可切换)。 - 💾 **数据缓存**: 将区块数据保存在 `cache.yml` 中,以便快速访问并减少服务器负载。 - 🔄 **后台扫描**: 每秒扫描 5 个批次的区块,每个区块冷却时间为 30 秒,以最大程度地减少性能影响。 - 📡 **事件跟踪**: 监控实体生成、消灭、传送以及区块加载/卸载事件,以获得实时准确性。 - ⚙️ **可配置**: 在 `config.yml` 中调整扫描行为、语言和显示选项。 ## 📜 指令 | 指令 | 描述 | 权限 | |--------------|---------------------------------------|------------------------| | `/ca menu` | 打开区块分析 GUI。 | `chunkanalyzer.menu` | ## 🔍 示例用法 - **打开 GUI**: 使用 `/ca menu` 查看区块列表,按加载得分进行颜色编码(绿色表示低,黄色/橙色/红色表示中/高,岩浆色表示滞后机器)。 - **按世界过滤**: 点击主世界、下界或末地的按钮以专注于特定世界。 - **检查详情**: 悬停在区块项目上以查看其实体数量、玩家数量、瓦片实体以及(如果启用)红石/漏斗详情。 - **传送**: 点击区块以传送至其中心(安全最高的 Y 坐标)。 示例消息:*传送至区块 [12, -34]*。 - **识别滞后**: 被标记为滞后机器的区块会显示警告: *警告:可能存在滞后机器在 [12, -34]*。 ## ⚙️ 配置 插件将会在 `plugins/ChunkAnalyzer` 目录下生成一个 `config.yml` 文件,其中包含以下设置: ```yaml show-green-chunks: false deep-analyze: true language: en messages: en: player_only: "This command is for players only!" usage: "Usage: /ca menu" teleport: "Teleported to chunk [%s, %s]" lag_machine_warning: "Warning: Possible lag machine at [%s, %s]" menu_title: "Chunk Analyzer - %d" world_overworld: "Overworld" world_nether: "Nether" world_the_end: "The End" button_previous: "Previous page" button_next: "Next page" button_current_world: "Current world" chunk_info: "Chunk [%s, %s]" world: "World: %s" coordinates: "Coordinates: %s, %s" entities: "Entities: %s" players: "Players: %s" tile_entities: "Tile Entities: %s" armor_stands: "Armor Stands: %s" redstone_blocks: "Redstone blocks: %s" hoppers: "Hoppers: %s" updatable_blocks: "Updatable blocks: %s" light_sources: "Light sources: %s" load_score: "Load score: %s" click_to_teleport: "Click to teleport" ru: player_only: "Эта команда только для игроков!" usage: "Использование: /ca menu" teleport: "Телепортирован в чанк [%s, %s]" lag_machine_warning: "Предупреждение: Возможная лаг-машина в [%s, %s]" menu_title: "Анализатор чанков - %d" world_overworld: "Верхний мир" world_nether: "Ад" world_the_end: "Энд" button_previous: "Предыдущая страница" button_next: "Следующая страница" button_current_world: "Текущий мир" chunk_info: "Чанк [%s, %s]" world: "Мир: %s" coordinates: "Координаты: %s, %s" entities: "Сущности: %s" players: "Игроки: %s" tile_entities: "Tile Entities: %s" armor_stands: "Armor Stands: %s" redstone_blocks: "Редстоун блоки: %s" hoppers: "Воронки: %s" updatable_blocks: "Обновляемые блоки: %s" light_sources: "Источники света: %s" load_score: "Оценка нагрузки: %s" click_to_teleport: "Нажмите для телепортации" ``` ### 关键设置 - **show-green-chunks**: 设置为 `true` 以显示低影响区块(得分 ≤ 50)。默认:`false` 以专注于问题区块。 - **deep-analyze**: 启用 (`true`) 以扫描红石、漏斗、可更新方块和光源以获取详细的性能洞察。禁用以提高大型服务器的性能。 - **language**: 选择 `en` (英语)、`ru` (俄语) 或在 `messages` 下添加自定义语言。 ## 📥 安装 1. 下载 ChunkAnalyzer `.jar` 文件,来自 [SpigotMC/Modrinth,如果可用]。 2. 将 `.jar` 文件放入服务器的 `plugins` 文件夹中。 3. 重新启动服务器或使用插件管理器加载插件。 4. 编辑 `plugins/ChunkAnalyzer` 中的 `config.yml` 以自定义设置。 5. 将 `chunkanalyzer.menu` 权限授予管理员(例如,使用 LuckPerms)。 ## 🛠️ 工作原理 - **后台扫描器**: 每秒扫描 5 个区块,并以 30 秒的区块冷却时间来避免滞后。 - **加载得分**: - 玩家:每个 20 分 - 非玩家实体:每个 1 分 - 瓦片实体:每个 10 分 - (启用 `deep-analyze` 时):红石方块:3 分,漏斗:5 分,可更新方块:2 分,光源:1 分 - **滞后检测**: 如果实体、盔甲架、红石或漏斗超过阈值,则将区块标记为滞后机器。 - **GUI**: 按分数排序显示区块,并使用分页和世界过滤器进行颜色编码(绿色/黄色/橙色/红色/岩浆色)。 - **缓存**: 将数据保存到 `cache.yml` 中以实现持久性。 ## 💡 管理员技巧 - 在实体数量成千上万的服务器上禁用 `deep-analyze` 以降低 CPU 使用率。 - 在 GUI 中优先处理岩浆区块,因为它们表示严重的滞后风险。 - 使用世界过滤器来专注于主世界等高流量区域。 - 在高峰玩家时段期间检查 GUI 以尽早发现滞后源。 ## 🌐 添加语言 要添加新的语言(例如,西班牙语): 1. 在 `config.yml` 中,添加一个 `messages.es` 部分。 2. 复制 `en` 或 `ru` 消息并进行翻译。 3. 设置 `language: es`。 示例: ```yaml messages: es: player_only: "¡Este comando es solo para jugadores!" usage: "Uso: /ca menu" teleport: "Teletransportado al chunk [%s, %s]" # ... 其他翻译 ``` ## 🐞 支持和问题 如果您有任何问题、错误报告或功能请求,请联系:**mr_catcraft** 在 Discord 上。请提供: - 服务器版本(例如,Paper 1.20.4) - 插件版本 - 问题描述 - 从 `logs/latest.log` 中的相关日志 ## ⚙️ 技术说明 - **依赖项**: 无。适用于 Spigot/Paper 1.16.x - 1.21.1。 - **性能**: 使用 `ConcurrentHashMap` 和 `ConcurrentLinkedQueue` 实现线程安全。分批扫描和冷却时间最大限度地减少了影响。 - **事件**: 监听实体生成/消灭、传送以及区块加载/卸载。 - **存储**: 区块数据被缓存到 `cache.yml` 中,以实现持久性。 ## 📄 许可证 ChunkAnalyzer 遵循 [MIT 许可证]。 详情请参阅 `LICENSE` 文件。