Brewing stands will not take water bottles from hoppers or droppers when the bottles that were in it are taken out with a hopper below.
- Place a brewing stand
- Place a hopper below it and on the side of it
- Put three water bottles into the side hopper
- Any additional water bottles will stay in the hopper
Based on 1.11.2 decompiled using MCP 9.35 rc1
The problem seems to be that the method net.minecraft.tileentity.TileEntityBrewingStand.isItemValidForSlot(int, ItemStack) does more than it should. Assuming that it should only return if an item type is valid. In this case it would make also more sense to replace the ItemStack parameter with an Item parameter because the count should not matter. If this is the intended behavior the method net.minecraft.tileentity.TileEntityFurnace.isItemValidForSlot(int, ItemStack) is not correctly working then.
Nevertheless the problem here is the change from representing empty slots with null to representing them with 1 ⨯ air:0. The problem here is that reducing the stack size results in 0 ⨯ air:0 objects but the method TileEntityBrewingStand.isItemValidForSlot(int, ItemStack) tests for a 1 ⨯ air:0 constant. The method net.minecraft.item.ItemStack.isEmpty(), which tests if an item is valid, should probably be used instead.