Kolen's Chunk Limiter 1.0.1
The ultimate, lightweight, and high-performance block/entity placement limiter for modern Minecraft servers.
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 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:
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 (Item frames, armor stands, etc.)
track-entities: true
tracked-entities:
ARMOR_STAND: 10
ITEM_FRAME: 15
GLOW_ITEM_FRAME: 15
# Grant higher limits to specific permission nodes (highest limit wins)
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
FastStats: