The world ages as you use it. Walked routes wear grass into dirt paths, stone beside lava chars to blackstone, logs by water grow moss. A TPS-friendly aging system for Paper, Spigot, Bukkit, and Purpur 1.21+.
The world ages as you use it. Walk the same route enough times and the grass wears down to dirt,
then to a packed dirt path. Stone left next to lava chars to blackstone. Water sitting against logs
grows moss, and cobblestone in a dark, damp corner turns mossy over time.
Trodden paths
A block counts your steps only when you actually move onto it from another block. Grass blocks (plus
configurable soft ground like mycelium, podzol, coarse dirt, and rooted dirt) wear to dirt, and dirt
wears into a dirt path. Sprinting wears the ground faster. You can set sneaking to leave no trail.
Environmental aging
A periodic sweeper runs near players and ages blocks in place:
Every change runs on the main thread, only in loaded chunks, and is capped per sweep so your TPS
stays protected.
Environmental aging does not tell the difference between player builds and naturally placed blocks.
Stone near a lava feature will char, and cobble in a dark, damp base can go mossy, whether or not you
placed it. If that is not what you want, you can turn environmental aging off
(environment.enabled: false) and keep only the trodden paths, or tune the sweep settings. The
footstep map is kept in memory, so accumulated paths reset when the server restarts.
/patina (aliases: /livingpatina, /lp)
| Subcommand | Permission | Description |
|---|---|---|
/patina info |
patina.use |
Plugin info and live totals (entries tracked, blocks aged). |
/patina stats |
patina.use |
Step count recorded for the block directly under you. |
/patina reload |
patina.admin |
Reload config.yml and restart the timers. |
/patina sweep |
patina.admin |
Force one environmental sweep right now. |
/patina clear |
patina.admin |
Clear the in-memory step map. |
| Node | Default | Grants |
|---|---|---|
patina.use |
true |
The informational subcommands. |
patina.admin |
op |
reload, sweep, clear (plus patina.use). |
config.yml)Key tunables (see the file for the full annotated set):
paths.steps-to-dirt, paths.steps-to-path set the wear thresholds.paths.sprint-multiplier, paths.wear-while-sneaking, paths.also-wear-to-dirt.environment.sweep-interval-ticks, environment.chunk-radius, environment.max-changes-per-sweep,environment.samples-per-chunk, environment.vertical-radius.environment.lava-charring, environment.water-moss, environment.damp-dark-moss (plus max-light).maintenance.prune-interval-ticks, maintenance.prune-entry-age-ms.Either system can be turned off on its own with paths.enabled and environment.enabled.
Paper, Spigot, Bukkit, and Purpur 1.21.1 through 1.21.11, plus the 26.1.x line (verified on 26.1.2).
Java 21, compiled to class version 65, Bukkit API only.