-
Bug
-
Resolution: Awaiting Response
-
None
-
Minecraft 1.8.8, Minecraft 15w32c
-
None
-
Unconfirmed
If a non-solid block is above a hopper, it checks for “dropped item” entities in that block every game tick in which it is not powered, and pulls them in if it has room. If an inventory (chest, furnace, other hopper, etc.) is located in the block above, the hopper skips the check for entities, which is faster. Now this is all intended behavior as I understand it.
The bug is that hoppers try to suck in dropped items from solid blocks above them which is mostly unnecessary and causes significant server-side tick lag.
Suggested fix: When a solid block is above the hopper, no dropped items can be inside that block except in corner cases (see “regressions” below). Since a check for whether the block above a hopper is solid should be faster than checking the positions of all entities in the chunk, skipping the check for entities in this situation should significantly improve the server-side performance of worlds with many hoppers.
Regressions: A dropped item can enter a solid block if pushed into it by pistons or block placement. Builds that rely on hoppers pulling these items would break with the suggested fix. However, it is already possible for a dropped item to be within the block above a hopper and not get pulled in, in the case of non-solid inventories like brewing stands and chests. So this behavior change should not break too many builds.
A workaround which was popularized by JL2579 and is currently in wide use is to place furnaces above all hoppers where possible. These furnaces serve no purpose other than the performance improvements described above.