- 版权类型
- 原创
- 插件中文名称
- 区块实体限制
- 插件英文名称
- ChunkEntityLimiter
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- Leaves
- 其他核心
- 语言支持
- 多语言
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
[MD]
# ChunkEntityLimiter
**高性能实体与物品限制器,适用于 Folia、Paper、Bukkit、Purpur 和 Spigot。**
本插件通过智能限制实体和物品数量来优化服务器性能。它采用**双重检查系统**(单个区块限制 + 玩家周围区块限制),既能防止因刷怪塔或大量物品掉落导致的卡顿,又能确保重要实体受到保护。
## 主要特性
* **原生 Folia 支持:** 完全适配 Folia 的区域线程架构。
* **智能清理逻辑:** **优先清理最老的实体**。根据实体生成时间进行移除,保留新生成的生物,清理存活时间最长的实体。
* **双重限制机制:** 同时对单个区块*和*玩家周围一组区块的实体总量进行限制。
* **精确物品计数:** 可配置选项,按物品堆叠的实际数量计数(例如,一组64个圆石计为64,而不是1)。
* **细致的通知控制:** 分别为**清理报告**和**超限警告**提供通知控制,并可配置通知范围(无、仅管理员、或附近所有玩家)。
* **性能监控:** 内置性能分析器,用于追踪清理各阶段的耗时。
------------------------------------------------------------------------------------------------------
## 清理逻辑
1. **分类:** 将实体分为"受保护"和"可清理"两类。
2. **保护检查:** 跳过得保护的实体(被命名、被拴住、被驯服、有装备、Boss等),除非启用了 `clean-protected-if-over-limit`。
3. **排序:** 对可清理实体按**生成时间**进行排序。
4. **执行:** 插件从**最早生成(最老)** 的实体开始移除,直到数量降至限制以下。
------------------------------------------------------------------------------------------------------
## 命令与权限
**主命令:** `/chunklimit`
**命令别名:** `/cl`, `/climit`
| 命令 | 描述 | 权限 |
| :--- | :--- | :--- |
| **`/chunklimit reload`** | 重新加载配置文件。 | `chunklimiter.reload` (默认:op) |
| **`/chunklimit stats`** | 显示当前区块及指定半径内周围区块的详细实体统计信息。 | `chunklimiter.stats` (默认:true) |
| **`/chunklimit notify [类型] [范围]`** | 设置通知偏好。<br>• **类型:** `report` (清理结果) 或 `warning` (接近上限)<br>• **范围:** `none` (关闭), `op` (仅管理员), `all` (附近所有人)<br>_示例:_ `/cl notify report op` | `chunklimiter.notify` (默认:op) |
| **`/chunklimit performance [reset]`** | 查看性能指标(分类、清理等阶段的执行时间)。 | `chunklimiter.performance` (默认:op) |
------------------------------------------------------------------------------------------------------
#### config.yml
```
# 实体和物品掉落限制配置。它只会清理超出限制的部分。
entity-limits:
# 每个区块允许的最大实体数量(除特殊配置外的所有实体)
default-limit: 100
# 物品实体的最大数量限制(掉落物)
item-limit: 300
# 检查间隔(单位:游戏刻,20 ticks = 1秒)
# 为节省性能,推荐设置:600 (30秒) 或 1200 (60秒)
check-interval-ticks: 600
# 是否检查玩家周围的区块。0 表示禁用。
# 例如:如果 chunk-check-radius: 1,则计算玩家周围半径 1 内所有区块(3x3)的总上限。
chunk-check-radius: 2
# 玩家周围区块实体限制的倍数。
# 例如:设置为 1.5,则周围区块的实体上限是默认值的 1.5 倍。
chunk_entity_multiplier: 1.5
# 玩家周围区块物品实体限制的倍数。
chunk_item_multiplier: 1.5
# 是否计算物品堆叠数量
# 若为 true,一组64个物品算作64。若为 false,算作1个实体。
count-item-stack-amount: false
# 忽略的实体类型(不会被计数和清理)
ignored-types:
- IRON_GOLEM # 铁傀儡
- VILLAGER # 村民
# 忽略的物品类型(不会被计数和清理)
ignored-items:
- DIAMOND # 钻石
- NETHERITE_INGOT # 下界合金锭
- ENCHANTED_GOLDEN_APPLE # 附魔金苹果
# 自定义实体限制(覆盖默认限制)
custom-limits:
ZOMBIE: 200 # 僵尸最大数量
CREEPER: 200 # 苦力怕最大数量
ZOMBIFIED_PIGLIN: 200 # 僵尸猪灵最大数量
# 保护设置,当实体超限时,受保护实体不会被优先清理,但若受保护实体数量过多导致仍超限,它们也可能被清理。
protection:
# 保护被命名的实体
protect-named-entities: true
# 保护被拴住的实体(默认排除马/驴)
protect-leashed-entities: true
# 保护驯服的动物(狗/猫/鹦鹉等)
protect-tamed-animals: true
# 保护有装备的实体(包括掉落的装备)
protect-equipped-entities: true
# 保护Boss类实体(末影龙、凋灵等)
protect-boss-entities: true
# 通知设置
settings:
# 当数量超限时,是否强制清理受保护的实体
# 若为 true:先清理普通实体,若仍超限则清理受保护实体。
# 若为 false:受保护实体永远不会被清理(但会占用数量名额)。
clean-protected-if-over-limit: true
# 是否启用全局单区块清理(阶段1)。
# 若为 false:跳过全局扫描,仅清理玩家附近的区块(阶段2)。对于 Folia 服务端,建议设为 false 以提升性能。
clean-all-loaded-chunks: true
# 清理报告通知范围(当实体被清理时)
# 选项: NONE (禁用), OP (仅管理员), ALL (所有玩家)
cleanup-report-scope: ALL
# 超限预警通知范围(当接近上限时)
# 选项: NONE (禁用), OP (仅管理员), ALL (所有玩家)
overload-warning-scope: ALL
# 是否向管理员 (OP) 发送全局清理报告通知(全服广播给OP)
# 若为 true:OP 接收所有区块的报告。若为 false:OP 必须在附近才能收到。
op-global-cleanup-report: true
# 是否向管理员 (OP) 发送全局超限预警通知(全服广播给OP)
# 若为 true:OP 接收所有区块的预警。若为 false:OP 必须在附近才能收到。
op-global-overload-warning: false
# 是否将清理报告发送到服务器控制台
console-cleanup-report: true
# 预警通知百分比(0-100)。当实体数量达到限制的百分比时触发警告。
notify-threshold: 90
# 预警冷却时间,单位秒(防止通知刷屏)
notify-cooldown: 10
# 玩家通知范围半径(单位:方块)。在此范围内的玩家会收到通知。
notification-radius: 128.0
# 设为 true 启用性能监控
performance-monitoring: false
# 设为 true 启用调试模式(输出详细日志)
debug-mode: false
# 语言选项(en/zh)
language: en
```
----------------------------------------------------------------------------------------------------------
### bStats

[/MD]