NewCraftRank SitesA free website and storeMake yours ›
AshlarFree server software built on Paper, with DDoS and backdoor protection See Ashlar ›CommunityAsk questions, share builds and find people to play with Join the forum ›
Resources / Plugins / PlayerCulling

PlayerCulling

A culling paper/folia plugin and fabric mod designed to prevent players from seeing each other through walls using cheats (Anti-ESP).

PluginsFree1.21 – 26.x
by booky10 · listed from Modrinth
Download ›

Direct download from Modrinth · 23,252 downloads

What it does

PlayerCulling is a plugin for Paper / Spigot servers, made by booky10. A culling paper/folia plugin and fabric mod designed to prevent players from seeing each other through walls using cheats (Anti-ESP).

It supports Minecraft 1.21 – 26.x. It has been downloaded 23,252 times on Modrinth. That puts it at #227 of the 405 utility plugins listed here. The last update came out on Sep 29, 2026.

Supported versions

26.x1.21

Release history

PlayerCulling has had 22 releases on Modrinth since May 21, 2025. 8 of them came out in the past year. The newest is 2.1.6+fabric, released on Sep 29, 2026. It is made for Minecraft 1.21.4 – 26.3. It runs on Fabric. The download is 2.5 MB.

VersionReleasedMinecraftType
2.1.6+fabricSep 29, 20261.21.4 – 26.3Beta
2.1.6+paperSep 29, 20261.21 – 26.3Beta
2.1.5+fabricJul 3, 20261.21.4 – 26.2Beta
2.1.5+paperJul 3, 20261.21 – 26.2Beta
2.1.4+fabricFeb 14, 20261.21.4 – 1.21.11Alpha

Commands

The commands named on the Modrinth page of PlayerCulling:

/playerculling/execute

Permissions

Permission nodes named there, to give with a plugin like LuckPerms:

playerculling.update-notifyplayerculling.bypassplayerculling.command.blockdebugplayerculling.command.chunkcacheplayerculling.command.chunksizesplayerculling.command.cleancontainersplayerculling.command.viewcontainersplayerculling.command.hiddenplayerculling.command.performanceplayerculling.command.raycastdebugplayerculling.command.reloadconfigplayerculling.command.toggleplayerculling.command.toggle.globalplayerculling.command.toggle.playerplayercullingapi.classplayer.getuniqueid

Latest release on GitHub

PlayerCulling is open source. Its newest release on GitHub is v2.1.6, published on Sep 29, 2026.

Full Changelog: v2.1.5...v2.1.6

Before that: v2.1.5 (Jul 3, 2026), v2.1.4 (Feb 14, 2026).

Description from the author on Modrinth

PlayerCulling

Description

PlayerCulling is an anti-cheat plugin and mod for Minecraft servers. It prevents players from seeing other players
through walls using cheats. It utilizes a unique allocationless asynchronous voxel stepping-faced-ray-casting algorithm.

Features

  • Asynchronous, multithreaded culling
  • Allocationsless voxel raycasting algorithm
  • Advanced scheduler system
  • Support for nametag visibility, potions, glowing and spectating
  • 2x2x2-scale voxel occlusion for non-full blocks
  • Efficient storage of occlusion block data
  • Nearly instant block updates
  • Easily enable/disable culling globally/per-player

Scheduler Overview
PlayerCulling uses a custom multi-threaded culling execution system. Using this system, PlayerCulling is able to scale
according to server load, and can cull both very few players and very many players, as long as enough CPU is available.
The scheduler will dynamically start/stop threads ("containers") based on how many threads are needed.

To limit the amount of resources PlayerCulling can use, see the thread limit in the plugin configuration.
By default it limits itself to (number of CPU threads / 3).

Here are some examples on how the PlayerCulling scheduler works.
The following examples were tested on an arch linux desktop environment with an AMD Ryzen 5 3600X CPU:

-

One Container
One container is able to handle the load of 42 players without many problems.

-

Two Containers
If the load increases, the scheduler will automatically create a second
container and distribute the players to maintain a buffer. In this example, a total of 55 players are together in an area.

-

Cleanup of Containers
If a container is no longer used because the load decreased, it gets parked first.
After its time-to-live (TTL) runs out because the load didn't increase again,
it will get cleaned up automatically.

-

Heavy Load
The scheduling system is theoretically able to scale to an infinite amount of containers.
As long as the load increases (and the limit of containers hasn't been reached yet), the scheduler
will automatically continue to add more containers. In this example, a total of 112 players are together in an area.

-

Merging of Containers
If the load of multiple containers is too low, they will be
merged together after a few seconds.

Performance Overview
Using this view you can keep track of PlayerCulling's performance.

The first bossbar shows info about the container with the highest load and general
container scheduling statistics:

  • The count of Running containers
  • The count of Parked containers
  • The count of total container Threads
  • The count of total Raysteps per cull tick

The second bossbar shows the load of the occlusion world cache,
the working threads, amount of Completed tasks,
amount of Stored chunks and the chunk cache size in bytes.

The third bossbar shows info about culled players. The maximum amount
of culled players can be calculated by (playercount) * (playercount - 1).

In this example, a total of 112 players are together in an area. The server was running in an arch linux desktop
environment with an AMD Ryzen 5 3600X CPU.

Supported Software

Server Version · Paper · Folia · Fabric
26.3.x · ✅ · ❌ · ✅
26.2.x · ✅ · ✅ · ✅
26.1.x · ✅ · ✅ · ✅
1.21.11 · ✅ · ✅ · ✅
1.21.10 · ✅ · ✅ · ✅
1.21.9 · ✅ · ✅ · ✅
1.21.8 · ✅ · ✅ · ✅
1.21.7 · ✅ · ✅ · ✅
1.21.6 · ✅ · ✅ · ✅
1.21.5 · ✅ · ✅ · ✅
1.21.4 · ✅ · ✅ · ✅
1.21.3 · ✅ · ❌ · ❌
1.21.2 · ✅ · ❌ · ❌
1.21.1 · ✅ · ❌ · ❌
1.21 · ✅ · ❌ · ❌

Dependencies on Fabric:

Usage

PlayerCulling can be installed like any other bukkit plugin.
Place the jar file in your plugins directory. On Fabric as well, just place the jar file and the dependencies listed
above in your
mods directory and restart your server.

Configuration

After the first start, PlayerCulling will automatically create a configuration file. On paper under
plugins/PlayerCulling/config.yml or on Fabric config/playerculling.yml. In there, you are able to configure the
following options:

  • config-version: Don't touch this
  • scheduler:
  • max-threads: The maximum amount of threads allowed to use (default: cpu threads / 3)
  • cleanup-interval: The interval to check for cleanup of threads in seconds (default: 30)
  • container-ttl: The time-to-live of unused threads (default: 30)
  • max-cull-time: The maximum time a thread is allowed to have in milliseconds (default: 45)
  • max-transfer-factor: If the load percentage of a thread is below this factor, it is allowed to accept more tasks

from other overloaded threads (default: 0.7)

  • max-merge-factor: If the combined load percentage of two threads is below this factor, the two threads are

allowed to merge together (default: 0.5)

  • culling:
  • nametag-visibility-distance: The distance in blocks PlayerCulling will check for nametag visibility. Set to 0 to

ignore nametags completely (default: 64, vanilla)

  • blacklisted_worlds: A list of worlds where PlayerCulling should be disabled (default: [])
  • updater:
  • enabled: Enables/disables the update checker (default: true)
  • notify-admins: Whether to notify admins about new PlayerCulling releases (default: true)
  • interval-hours: The update check interval in hours (default: 24)
  • waypoint-mode: The mode for the waypoint system, see the [Locator Bar / Waypoints](#locator-bar--waypoints) section

for more information. (default: HIDDEN)

Note: If you're not sure what a configuration option does, it's best to leave it at its default value.

Locator Bar / Waypoints

The locator bar was introduced in Minecraft 1.21.6 and allows players to see the direction of other players. As this
would reveal the real location of players and defeat the purpose of PlayerCulling, PlayerCulling will disable all player
related waypoints by default. If you still want to use the locator bar, you can use the waypoint-mode option in the
configuration file, see below for more info.

Note: Players can still triangulate the real X and Z coordinates of players, use the hidden mode to prevent
this

The following modes are available:

Mode · Description
HIDDEN · PlayerCulling will disable all player related waypoints (default)
AZIMUTH · PlayerCulling will send the angle between players to the viewer
CULLED_AZIMUTH · PlayerCulling will send the angle between players to the viewer, if the other player is visible to the viewer
VANILLA · The locator bar will not be changed by PlayerCulling, this makes PlayerCulling effectively useless

Permissions

Permission · Description
playerculling.update-notify · If not disabled, players with this permission will receive update notifications
playerculling.bypass · Players with this permission will be ignored by PlayerCulling and therefore be able to always see anyone. Use commands (/playerculling toggle) or API instead of this permission if possible

See the table below for command permissions.

Commands

Command · Description · Permission
| /playerculling blockdebug [raw] [block]
/playerculling blockdebug [block] | Checks the occluding status of a block in sight of the target entity or specified by the block argument. The raw argument specifies, if true get status from minecraft world, if false get status from PlayerCulling occlusion cache. | playerculling.command.blockdebug |
/playerculling chunkcache · Gives information about the stored chunks in the PlayerCulling occlusion cache. If the executor is an entity, you will get more information about the entity's chunk. · playerculling.command.chunkcache
/playerculling chunksizes · Gives the byte size of each chunk in the executors world. You can click on a chunky entry to teleport. · playerculling.command.chunksizes
/playerculling cleancontainers [force] · Triggers the cleanup process manually. The force argument decides if you check for the ttl or not. · playerculling.command.cleancontainers
/playerculling viewcontainers · Toggles the view of the container scheduler. It shows the status, load and player count. Please note: The boss bar count is limited by your gui size, minecraft only renders boss bars over one third of the windows size. · playerculling.command.viewcontainers
/playerculling hidden · Shows the hidden list of the executor. · playerculling.command.hidden
/playerculling performance · Toggles the view of the PlayerCulling performance, overall occlusion cache size, and culled players count. Please note: The boss bar count is limited by your gui size, minecraft only renders boss bars over one third of the windows size. · playerculling.command.performance
| /playerculling raycastdebug [showRay]
/playerculling raycastdebug [blocks]
/playerculling raycastdebug [blocks] [showRay] | Checks if the executor can see the target-player, the executor must be a player. The showRay argument enables particles of the rays. The blocks arguments prints all checked blocks in the ray. | playerculling.command.raycastdebug |
/playerculling reloadconfig · Reloads the configuration. · playerculling.command.reloadconfig
| /playerculling toggle global [enabled]
/playerculling toggle player [enabled] | Toggles PlayerCulling either for a player-list or global. The enabled argument can be used to always enable (true) or disable (false) PlayerCulling for the target -> no toggle. | playerculling.command.toggle, playerculling.command.toggle.global, playerculling.command.toggle.player |

Note: [...] is an optional argument, `` is a required argument

PlayerCulling uses brigadier for commands which means command blocks and datapacks are also able to use these commands.
Additionally, this also means /execute can recognize these commands and you are able to change the executor/location
of the executed command. For example:

  • /execute as Notch run playerculling hidden will show you the hidden players of the player Notch, if online
  • /execute as @a run playerculling hidden will show you the hidden players of everyone online

API setup

PlayerCulling has to be added as a dependency to the plugin.yml regardless of the build system used. On Fabric add
playerculling to the fabric.mod.json file.

Maven

minceraft
repo.minceraft.dev/releases/

de.pianoman911
playerculling-api
2.1.5
provided

Gradle (groovy)

repositories {
maven {
url = 'repo.minceraft.dev/releases/';
name = 'minceraft'
}
}

dependencies {
compileOnly 'de.pianoman911:playerculling-api:2.1.5'
}

Gradle (kotlin)

repositories {
maven("repo.minceraft.dev/releases/";) {
name = "minceraft"
}
}

dependencies {
compileOnly("de.pianoman911:playerculling-api:2.1.5")
}

API usage

Basic paper plugin example:

public class ExamplePlugin extends JavaPlugin {

@Override
public void onEnable() {
// this loads the player culling api from bukkit's services manager
PlayerCullingApi api = Bukkit.getServicesManager().load(PlayerCullingApi.class);

// example: disable culling for the player "Notch", if online
Player player = Bukkit.getPlayer("Notch");
if (player != null) {
api.setCullingEnabled(player.getUniqueId(), false);
}
}
}

Basic fabric mod example:

public class ExampleMod implements ModInitializer {

@Override
public void onInitialize() {
FabricLoader.getInstance().getObjectShare().whenAvailable("playerculling:api", (__, obj) -> {
if (!(obj instanceof PlayerCullingApi api)) {
return;
}
// Toggle global culling
api.setCullingEnabled(false);
});
}
}

Building

  1. Clone the project (git clone github.com/MinceraftMC/PlayerCulling.git)
  2. Go to the cloned directory (cd PlayerCulling)
  3. Build the jar (./gradlew build on Lin

Written by booky10. Read it with pictures on Modrinth.

How to install PlayerCulling

  1. Make sure your server runs Paper and Spigot on Minecraft 1.21 – 26.x.

  2. Download the .jar file from Modrinth and put it in the plugins folder of your server.

  3. Restart the server. Avoid /reload, many plugins do not handle it well.

  4. Type /plugins in the console: PlayerCulling should be listed in green. Its config files are created in the plugins folder on the first start.

Full guide: How to install plugins on a Minecraft server

Compatibility

Minecraft versions
26.x, 1.21
Runs on
Paper, Spigot
Edition
Java
Needs
Nothing else
License
GPL
Price
Free
Upkeep
Actively updated (Nov 13, 2026)

PlayerCulling compared with similar ones Compare all alternatives

ResourceDownloadsVersionsLast updatePrice
PlayerCullingthe one you looked at23K1.21 – 26.xSep 29, 2026Free
MtnEnderFixMartinii_83381.20 – 26.x28 days agoFree
FoxAddition Anti-CheatZowi76K1.8 – 26.xOct 6, 2024Free
Anti-DupeCraniX31K1.21 – 26.xSep 17, 2026Free

Questions

Does PlayerCulling work on Minecraft 26.x?

Yes. PlayerCulling supports Minecraft 26.x. All supported versions: 26.x, 1.21.

Is PlayerCulling free?

Yes. PlayerCulling is free to download from Modrinth.

Which server software does PlayerCulling run on?

PlayerCulling runs on Paper and Spigot servers.

Is PlayerCulling still updated?

Yes. The last update came out in the past day.

What are the best alternatives to PlayerCulling?

The closest ones are MtnEnderFix, FoxAddition Anti-Cheat and Anti-Dupe. Compare all alternatives

Alternatives to PlayerCulling

MtnEnderFixPlugins · 1.20 – 26.x

MtnEnderFix prevents players from clipping through walls, corners, ceilings, and ladders using Ender Pearls. Features smart push-back relocation and pre-throw…

Free38 downloads
TPAPlugins · 1.8 – 26.x

A simple teleportation plugin that supports Folia, compatible with Bukkit/Spigot/Paper/Folia.

Free152,808 downloads
Open InventoryPlugins · 1.16 – 26.x

OpenInv is a powerful Minecraft admin plugin that lets staff view and edit player inventories and ender chests using /inv commands, featuring a modern GUI…

Free55,125 downloads
Compare all alternatives ›

Reviews

–★★★★★
0 reviews
50
40
30
20
10

Log in to leave a review.