Redstone and hoppers are cheap individually and ruinous in bulk. One clever contraption in one player's base can hold the tick of an entire server.
What you are seeing
- TPS drops constantly rather than in spikes, even with few players online.
- The drop persists whether or not anyone is near the machine.
- A profiler points at block entity ticking rather than at a plugin.
Why it happens
Every hopper checks the container above it every tick, whether or not anything moved. Redstone clocks re-evaluate their circuit continuously. Both keep running as long as their chunk is loaded, so an unattended machine costs exactly as much as one being used.
What to do
- Find the chunk, not the plugin
Use
/spark profilerand look for block entity ticking. Then narrow down which area of the map it belongs to. - Lock hoppers that are only there to hold items
A hopper under a chest that never needs to move anything can be disabled by placing a block or powering it with redstone. It stops checking entirely.
- Replace always-on clocks
An observer- or comparator-based design that only fires when something changes replaces a clock that fires forever.
- Consider unloading the area
If the machine is not needed all the time, keeping it outside a chunk-loaded area means it costs nothing while nobody is there.
TPS recovers with the machine disabled, and stays recovered after the redesign.
This is usually a conversation with a player rather than a config change. A single extremely efficient farm can be worth more TPS than every other optimisation in this section put together.