[](https://github.com/MinceraftMC/PlayerCulling)
[](https://opensource.org/license/agpl-v3/)

[](https://discord.gg/zC8xjtSPKC)
## 描述
PlayerCulling 是一个 Minecraft 服务器的反作弊插件和模组。它防止玩家使用作弊透视墙外的其他玩家。它利用了一种独特的无分配异步体素步进面对射线投射算法。
## 特性
- 异步、多线程剔除
- 无分配体素射线投射算法
- 高级调度系统
- 支持标签可见性、药水、发光和旁观
- 2x2x2 比例的体素遮挡,用于非完整方块
- 高效存储遮挡方块数据
- 几乎即时的方块更新
- 轻松启用/禁用全局/每个玩家的剔除
调度器概述
PlayerCulling 使用自定义的多线程剔除执行系统。通过该系统,PlayerCulling 可以根据服务器负载进行缩放,并且可以剔除很少的玩家和很多玩家,只要有足够的 CPU 可用。 调度器将根据需要的线程数量动态地启动/停止线程(“容器”)。 为了限制 PlayerCulling 可以使用的资源量,请参阅插件配置中的线程限制。 默认情况下,它将其限制为 (CPU 线程数 / 3)。 以下是一些关于 PlayerCulling 调度器工作方式的例子。 以下示例是在具有 AMD Ryzen 5 3600X CPU 的 arch linux 桌面环境中测试的:-
一个容器
一个容器能够在没有很多问题的情况下处理 42 个玩家的负载。
-
两个容器
如果负载增加,调度器将自动创建第二个 容器并将玩家分发以保持缓冲区。在此示例中,在区域内共有 55 名玩家。
-
容器清理
如果容器不再被使用,因为负载降低,它将被暂停。 在它的生存时间 (TTL) 过期并且负载没有再次增加之后, 它将被自动清理。
-
高负载
调度系统在理论上能够扩展到无限数量的容器。 只要负载增加(并且容器数量限制尚未达到),调度器 将自动继续添加更多容器。在此示例中,在区域内共有 112 名玩家。
-
容器合并
如果多个容器的负载过低,它们将被 在几秒钟后合并在一起。
性能概述
使用此视图可以跟踪 PlayerCulling 的性能。 第一个 Boss 栏显示有关负载最高的容器以及通用 容器调度统计信息: - **R**unning 容器数 - **P**arked 容器数 - 总容器 **T**hreads 数 - 每剔除周期总 **R**aysteps 数 第二个 Boss 栏显示遮挡世界缓存的负载, 工作线程、**C**ompleted 任务数量、 存储的 **S**tored 块数量以及以字节为单位的块缓存大小。 第三个 Boss 栏显示有关剔除玩家的信息。最大数量 剔除玩家可以计算为 (玩家数量) * (玩家数量 - 1)。 在此示例中,在区域内共有 112 名玩家。服务器运行在具有 AMD Ryzen 5 3600X CPU 的 arch linux 桌面 环境中。
`/playerculling blockdebug [block]` | 检查目标实体视线内的块的遮挡状态或由 `block` 参数指定的块。 `raw` 参数指定,如果为 `true` 获取 minecraft 世界的状态,如果为 `false` 获取 PlayerCulling 遮挡缓存的状态。 | `playerculling.command.blockdebug` | | `/playerculling chunkcache` | 提供有关 PlayerCulling 遮挡缓存中存储的块的信息。 如果执行者是实体,你将获得更多关于实体块的信息。 | `playerculling.command.chunkcache` | | `/playerculling chunksizes` | 提供执行者世界中每个块的字节大小。 你可以点击块条目以传送。 | `playerculling.command.chunksizes` | | `/playerculling cleancontainers [force]` | 手动触发清理过程。 `force` 参数决定是否检查 TTL 或不检查。 | `playerculling.command.cleancontainers` | | `/playerculling viewcontainers` | 切换容器调度器的视图。 它显示状态、负载和玩家计数。 请注意:Boss 栏计数受你的 GUI 大小限制,minecraft 只会渲染窗口上三分之一大小的 Boss 栏。 | `playerculling.command.viewcontainers` | | `/playerculling hidden` | 显示执行者的隐藏列表。 | `playerculling.command.hidden` | | `/playerculling performance` | 切换 PlayerCulling 性能视图、整体遮挡缓存大小和剔除玩家数。 请注意:Boss 栏计数受你的 GUI 大小限制,minecraft 只会渲染窗口上三分之一大小的 Boss 栏。 | `playerculling.command.performance` | | `/playerculling raycastdebug
`/playerculling raycastdebug
`/playerculling raycastdebug
`/playerculling toggle player
Maven
```xmlGradle (groovy)
```groovy repositories { maven { url = 'https://repo.minceraft.dev/releases/' name = 'minceraft' } } dependencies { compileOnly 'de.pianoman911:playerculling-api:2.1.0-SNAPSHOT' } ```Gradle (kotlin)
```kotlin repositories { maven("https://repo.minceraft.dev/releases/") { name = "minceraft" } } dependencies { compileOnly("de.pianoman911:playerculling-api:2.1.0-SNAPSHOT") } ```请注意,在开发环境运行时,更新检查器将自动禁用。