Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
️ChunkLimiter ️
The ultimate, lightweight, and high-performance block/entity placement limiter for modern Minecraft servers.
About ChunkLimiter Are redstone contraptions, mob farms, armor stands, or shulker-filled chunks tanking your server’s TPS? ChunkLimiter is a state-of-the-art solution designed to track, control, and limit how many performance-heavy blocks and entities players can place inside a single chunk.
Unlike older, unoptimized plugins, ChunkLimiter is built from the ground up for modern servers running Paper, Purpur, or Folia (Minecraft 1.20+ through 26.1+). It utilizes a non-blocking asynchronous architecture with a dedicated worker thread queue to guarantee zero impact on server ticks (TPS), even under heavy load.
✨ Features
Multiple Limit Modes:
Per Player (per-player): Every player gets their own independent allocation per chunk (e.g., maximum 5 hoppers per player, per chunk).
Per Chunk Total (per-chunk-total): Players share a collective limit in a chunk (e.g., maximum 20 spawners total in a chunk, regardless of who placed them).
Smart Block Tracking: Fine-grained limits for any block type (e.g., HOPPER, SPAWNER, BEACON, OBSERVER).
Automatic Grouping: Specify SHULKER_BOX in the configuration, and ChunkLimiter automatically expands it to cover all 16 colored variants!
️Entity Placement Tracking: Track and limit entity-based placements such as Item Frames, Glow Item Frames, Armor Stands, and Paintings.
️ Permission-Based Tiers: Reward VIPs or staff by granting higher limits via permission nodes (e.g., chunklimiter.tier.vip).
Dual Storage Backends:
SQLite: Simple, zero-setup local file storage (data.db).
MySQL: High-speed, HikariCP-pooled database backend for multi-server setups.
⚡ TPS-Friendly Async Architecture:
All database tasks (chunk load, chunk unload, flush, bypass/override modifications) are managed sequentially on a single-threaded background executor.
No locks, no lag, and no race conditions.
Adventure API Integration: Crisp, modern feedback messages utilizing clean MiniMessage/Legacy formatting in chat, action bars, or titles.
️ Commands & Permissions Manage everything on the fly with command tab-completion!
Command Description Permission /chunklimiter bypass <player> <true/false> Grants/revokes placement limits bypass for a player. chunklimiter.admin /chunklimiter limit <player> <material> <limit> Sets a per-player limit override. chunklimiter.admin /chunklimiter reset <player> [current_chunk] Resets a player's placement counters. chunklimiter.admin /chunklimiter info Views the current chunk's counters and limits. chunklimiter.admin /chunklimiter reload Reloads the configuration and restarts services. chunklimiter.admin ⚙️ Configuration Customize limits, messaging style, and storage settings inside a clean config.yml:
Code (Text):
storage: type: "sqlite" # "sqlite" or "mysql" mysql: host: "localhost" port: 3306 database: "chunklimiter" username: "root" password: "" flush-interval-seconds: 60 limits: mode: "per-chunk-total" # Options: "per-player", "per-chunk-total" decrement-on-break: true override-scope: "global"
Tracked block limits
tracked-blocks: HOPPER: 10 SPAWNER: 5 BEACON: 2 SHULKER_BOX: 8 # Automatically expands to all colored variants
Tracked entity limits
track-entities: true tracked-entities: ARMOR_STAND: 10 ITEM_FRAME: 15 GLOW_ITEM_FRAME: 15
Grant higher limits to specific permission nodes
permission-tiers: chunklimiter.tier.vip: HOPPER: 15 SPAWNER: 8 chunklimiter.tier.mvp: HOPPER: 20 SPAWNER: 12 messages: feedback-type: "actionbar" # Options: "actionbar", "chat", "title", "none" progress: "<yellow>Chunk limit: <white>{count}/{limit} blocks placed <gray>({remaining} remaining)" denied: "<red>You've reached the placement limit ({limit}) for tracked blocks in this chunk!" Why ChunkLimiter? Many block limiters suffer from database race conditions where rapidly loading and unloading chunks leads to players' block counters resetting back to zero, allowing them to place unlimited blocks.
ChunkLimiter completely resolves this by serializing database operations sequentially on a background thread. Plus, it dynamically scans and loads all pre-existing chunks upon enabling, ensuring your spawn chunks and already-loaded areas are always accurately accounted for from the second the server starts.
Support & Community Need help configuring ChunkLimiter or want to report a bug? Join our official support channel:
Join my Discord Community Discord Invite


