You finished the build, walked away, came back, and the iron farm is silent. The piston door has one piston still extended. Half the hopper chain has items piled up and the other half is empty. Nothing's broken, exactly — your redstone just stopped running while you weren't looking.
The cause is almost always the same: chunk borders.
This is the long version, version-pinned to Minecraft 1.21.4 Java Edition, with the fixes ranked from "free" to "needs a mod."
TL;DR
Redstone runs only inside chunks that are entity-ticking (ticket level 31 or lower). When a contraption straddles a border and the neighbour chunk drops to BLOCK_TICKING or BORDER, pistons stall, hoppers freeze, observers miss pulses.
Easiest fix: keep the build inside one chunk (F3+G to see borders).
Best general fix: /forceload add the chunks you care about.
The big 2024 change: spawn chunks shrank from 19×19 to 3×3 in 1.20.5 — many older farms designed for the old spawn region silently broke. Restore with /gamerule spawnChunkRadius 11 or larger.
What "loaded" actually means
Most players think a chunk is either loaded or not. The reality is four states, each with different rules about what gets to tick:
| Ticket level | Name | Redstone runs? | Mobs tick? | Block entities tick? |
|---|---|---|---|---|
| ≤ 31 | ENTITY_TICKING | Yes | Yes | Yes |
| 32 | BLOCK_TICKING | Yes | No | Partial |
| 33 | BORDER | No | No | No |
| 34+ | INACCESSIBLE | No (unloaded) | No | No |
When you walk away from a build, its chunks don't unload all at once. They degrade through these levels as you move further. The visible chunk on your screen at the edge of view distance is almost always at BORDER — loaded enough to render, not loaded enough to tick anything.
This is the model that's been in place since 1.14 and refined through 1.17/1.18. No fundamental rewrite happened in 1.21.x. Old wisdom about chunk-loading still applies — with one big exception we'll get to in a moment.
Simulation distance ≠ view distance
In server.properties:
view-distance=12 # chunks rendered to the client (visual only)
simulation-distance=10 # chunks that actually tick around each player
These are independent. A chunk inside your view distance but outside simulation distance shows the world but doesn't run redstone, doesn't spawn mobs, and won't move pistons. If your farm sits 11 chunks from where you AFK and your simulation distance is 10, the farm is on visual life support — you'll see it, it just won't work.
The default on most servers is simulation-distance=10. On Realms it's lower. On many shared hosts it's been silenced to 6–8 to save CPU.
What actually fails
Here's the specific damage when a contraption straddles a border and one side falls below ENTITY_TICKING:
- Pistons retract halfway and jam. The one on the live chunk fires, the one on the lazy chunk doesn't.
- Hoppers stop transferring across the border. Items pile up in the last hopper of the live side; the chain on the other side starves.
- Observers miss pulses generated on the lazy side, so observer-clock flying machines desync and stop.
- Comparators that read containers across the border read stale values.
- Mob farms outside simulation range don't spawn mobs at all — villagers don't tick the AI loop that produces iron golems.
- Dispensers and droppers stall on cooldown that never decrements.
This is all documented behaviour, captured in MC-155747 and MC-235967 on Mojira. Mojang's position is consistent: this is intentional, the cost of loading more chunks per player isn't worth the convenience.
The 1.20.5 spawn-chunk shrink
If your farm worked in 1.19 and stopped working sometime around late 2024, this is probably why.
Before snapshot 24w03a (released January 2024, shipped in 1.20.5), spawn chunks were 19×19 = 361 chunks, all permanently entity-ticking around world spawn. People built their iron farms, AFK fishing setups, and tree farms inside this region knowing they'd run whether anyone was logged in or not.
Then Mojang shrank it to 3×3 chunks (radius 2) — a ~98% reduction. The intent was performance, especially for servers running modded packs. The side effect: every "always-on" farm that depended on the old spawn region silently stopped working.
You can restore the old behaviour, partially or fully:
/gamerule spawnChunkRadius 11 # back to the old 23×23 region
/gamerule spawnChunkRadius 0 # disable spawn chunks entirely
Default is 2. Maximum is 32. Set the value once and it persists in the world.
The fixes, ranked
| Fix | Effort | Mods needed | Persists? | Best for |
|---|---|---|---|---|
| Keep the build inside one chunk | Easy | No | Always | Small piston doors, single-cell farms |
Raise simulation-distance |
Easy | No (server config) | Yes | All redstone within your AFK radius |
/gamerule spawnChunkRadius higher |
Easy | No | Yes | Builds at world spawn |
/forceload add |
Medium | No | Yes | Farms anywhere, surgical control |
| Nether-portal minecart loader | Medium | No | 1.21.5+ only | Cross-dimension always-on |
Carpet /player … spawn (fake player) |
Hard | Carpet | While script runs | Development testing, advanced setups |
| FTB Chunks / Chicken Chunks block | Hard | Yes | Yes | Modded packs, per-team claims |
Free, no commands: build inside one chunk
Press F3+G. Yellow lines appear showing chunk boundaries (16×16 columns from bedrock to build limit). If your entire build fits inside one chunk, chunk borders cannot break it — the contraption either runs entirely or doesn't run at all.
For small piston doors, hidden bases, single-cell farms, this is the right answer.
Server config: raise simulation distance
If you run the server, edit server.properties:
simulation-distance=16
Each step up adds CPU load roughly quadratically (chunks tick in a square around each player). On a host with weak CPU, going past 12 can drop TPS — keep an eye on /tick health or your panel's TPS meter.
/forceload — the surgical option
/forceload add 100 -200 # force-load the chunk containing block (100, -200)
/forceload add 100 -200 116 -184 # force a 2x2 area
/forceload remove 100 -200
/forceload query # list everything currently forced in this dimension
A few important facts:
- Coordinates are block coordinates. The command finds the chunk containing each coord.
- Cap is 256 forceloaded chunks per dimension. Plenty for most projects, but if you have ten huge farms you'll bump it.
- The state persists across server restarts — set it once.
- Forceloaded chunks get a ticket at level 31 = the same as a player would grant. Full ENTITY_TICKING, including crop growth, mob spawning, hoppers, redstone.
This is what most technical players use in vanilla 1.21.4. No mods, no setup, surgical.
Nether-portal loaders
These exploit the fact that an entity crossing a portal forces a chunk-load on the destination side. A looping minecart bouncing between two portals at the right interval keeps a small region of both dimensions entity-ticking.
Two changes you should know about:
- 1.21.2 dropped the vehicle portal cooldown from 15 seconds to 0.5 seconds, which made minecart-loop loaders far easier to build.
- 1.21.5 persists the loaded state across world reloads. On 1.21.4 specifically (what we're version-pinned to), nether-portal loaders stop working after a server restart until something re-primes them — usually a player walking through, or an automated tripwire that sends a minecart again.
For 1.21.4, /forceload is more reliable. Save nether-portal loaders for situations where you genuinely can't use commands (multiplayer realms, no-cheats whitelists).
Minecraft Wiki — Tutorial: Chunk loader.
Modded: FTB Chunks, Chicken Chunks, Carpet
If you're on a modpack with FTB Chunks, claim your chunks and chunk-load them through the FTB interface — no command quota, persists per-team, integrates with team permissions. Chicken Chunks works the same way with a placeable block.
For technical/test environments, Carpet lets you /player <name> spawn a fake player, which grants the same ENTITY_TICKING radius as a real one. Useful for redstone testing servers where you want a permanent "AFK player" without a real client connected.
Diagnostic tools
When something seems off, walk through these before tearing down the build:
- F3+G — show chunk boundaries. Is your contraption straddling?
- F3 — top-right shows your current chunk and the server-side chunk count. If chunks are dropping out as you stand still, something's wrong with the server's keep-alive.
/forceload query— am I sure this chunk is actually forced?/tick health— added in vanilla 1.20.3, shows tick rate and hotspots. Predecessor was Carpet's/tick, now superseded by the vanilla command. (gnembon's note)- Paper servers:
/timings pastefor chunk-related profile data.
A practical recipe for an always-on farm
For a typical iron farm at coordinates (2400, 64, -1800) on a 1.21.4 server:
- Press F3+G, walk around the farm footprint, write down every chunk corner it touches.
- Run
/forceload add 2400 -1800 2416 -1784(extend to cover all chunks the farm spans, including any villager AI ranges — golem spawn radius is up to 16 blocks). - Confirm with
/forceload querythat everything is listed. - Walk far away (more than
simulation-distance + 4chunks) and check it's still producing iron via a hopper-counter. - If iron flow stops, add the spawning chunk to the forceload set — villager pathing can wander out of the original footprint.
Total commands: 2. Persists forever. No mods, no nether portals, no AFK player.
What's actually changing in 1.21.x
The chunk-ticket system is stable. The notable redstone-relevant changes since 1.21 launched:
- 1.21.2 — vehicle portal cooldown drop (0.5s), making nether-portal loaders viable again.
- 1.21.5 — portal-loader persistence across restarts.
Beyond these, nothing fundamental has moved. Tutorials and old wiki advice from 1.19+ era still apply, with the one big footnote about the 1.20.5 spawn-chunk shrink.
If your redstone broke between summer 2024 and now and you can't figure out why — check /gamerule spawnChunkRadius first.
Sources & further reading:

