Direct answer

Block entities are not the same as ordinary blocks. Hoppers, furnaces and other containers can execute logic while loaded, and plugins may add inventory-event work.

How to check it

  1. Profile with /spark profiler start --timeout 120 while the suspect storage or furnace array is active; inspect tick-time branches rather than just total block count.
  2. Compare a populated storage room against the same location with item flow paused. Watch for repeated inventory transfers, container checks or plugin listeners.
  3. Distinguish a hopper moving items from a plugin reacting to InventoryMoveItemEvent; a fast inventory transfer rate can amplify expensive event handlers.

Example: If stopping a sorter removes the InventoryMoveItemEvent branch from a profile but leaves furnace time unchanged, investigate the item-transfer plugin before changing furnace counts.

What to change

Remove unnecessary always-active transfer lines, route items with shorter paths where practical, and avoid unloading player inventories or editing database-backed containers during play. Make one reversible change and profile again.

Software and version notes

Paper has hopper.cooldown-when-full and hopper.disable-move-event in its world configuration. Disabling movement events can break protection, logging and automation plugins; do not use it as a default fix.

Verify the result

Confirm the same item throughput and protection rules still work while measured tick cost falls.

References