Perhaps not a bug. I'll let you be the judge. (Sorry for the wall of text.)
The attached screenshots tell a bit of a story. The first shows the front of a simple sorting system built with chests and hoppers (in the back). Items are put into the top hopper (perhaps by water stream). Shot #2 shows that inside each chest is at least one of each item (as labeled) so only that items gets put into that chest. Shot #3 shows the back, including a fourth hopper at the bottom to catch anything that doesn't fit into the chests.
Now, the behavior I would expect goes like this: Seeds, wheat, and eggs would get into the top hopper. After a time all of the seeds would be in the top chest, all of the wheat would be in the middle chest, etc. Anything not seeds, wheat, or eggs would end up in the bottom-most hopper.
What actually happens is the top hopper tries to put seeds into the top chest, and sometimes succeeds. But, the second hopper starts pulling items out of the top hopper, so they start competing to grab items. Some seeds get into the chest as intended, but some get passed down the system with nowhere to fit and end up at the bottom hopper. The same is true for the wheat and the eggs. Shot #4 shows the contents of the bottom hopper, containing items that should be in chests higher up.
Linked issues
is duplicated by 24
Attachments
Comments 46
I just tested this, and I can confirm this behavior.
I think the hopper's top side's pull (topside) operation takes precedence over it's push (bottom and side) operation, which would cause this behavior.
Duplicate of MC-6038. It isn't a bug, the hopper retrieve items from the object above it automatically which is how they are supposed to work.
The best solution for achieving what you are trying to achieve would be to have a pipe system so you can avoid stacking the hoppers under each other; maybe Mojang will add this together with filter objects such as a filter hopper and a filter pipe (can hope), if not, then compact and complex hopper designs won't be possible, and sadly neither automatic item sorting.
This may not be a bug per se, but it is moderately inconsistent behavior — for example, I built a system like this but without intending to sort, merely three stacked chests — and the top and bottom chests got 50% split whereas the middle chest got nothing.
I think it would be worth improving the behavior so that it is less obviously "the effects of the precedence of a set of imperative rules".
For example, what if, when a hopper grabs an item from a hopper above, it doesn't grab the item if it is possible for the hopper above to place an item? Thus hoppers below hoppers never starve the hoppers above, and this sorting system would work as intended.
Hoppers need consistency - NEED it - if they will ever achieve their maximum usefulness. They should either always store the items before being able to be pulled form, or always have their items pulled to another hopper before being stored. Hell, even a switch between "store" and "pass along" mode. It just needs consistant
@Kumasasa: I can confirm Rocket Turtle's observations. Horizontal hopper behavior now appears to work correctly. Vertical behavior still seems to be a little less correct.
This is a great improvement and I could live with this just it is now but it doesn't appear to be 100% correct just yet.
May be related to MC-8457.
This seems to be broken again. I if I make a vertical stack of chests and point hoppers into them, items which go into the top hopper will either all end up in the bottom chest, or half in the top and half in the bottom. Any middle chests will be skipped for some reason.
It should be desired that if a hopper is pointing in to a chest or another hopper, that should take priority. Items should be fed from the hopper into the desired destination with a higher priority than another hopper trying to pull from that hopper by being below it.
A player shows intention with a hopper by directing it at a destination. This should be higher priority than placing a hopper below another, with the upper hopper /not/ pointing directly at the lower hopper.
@Phil71994 Please don't make duplicate reports.
Having done more thinking on this issue, here is what I propose:
If a hopper points into anything other than a hopper, then if the object it points in to can accept items, that should take priority over a hopper below that hopper. If a hopper points into another hopper, than the hopper below the original hopper should take priority over the direction the original hopper is pointing. This allows all old contraptions to still work while making new contraptions allow for storage item sorting.
... sorry, wrong ticket.
Nothing happened here 😉