Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-124099

Hoppers randomly select minecarts

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open
    • Resolution: Unresolved
    • Affects Version/s: Minecraft 1.12.2, Minecraft 18w01a, Minecraft 1.13.1
    • Fix Version/s: None
    • Confirmation Status:
      Confirmed
    • Category:
      (Unassigned)

      Description

      Summary

      Hoppers do not properly iterate through chest-minecarts or hopper-minecarts when trying to transfer items into or out of them. Instead, they select a random minecart each tick. Due to this, item transfer takes longer than expected.

      How to reproduce

      Place a hopper with a rail on top. Place multiple chest minecarts on the rail, a dozen or so. Place items in a single minecart. Notice how they flow much slower than the typical 2.5 items/s.

      Code analysis

      The following is from version 1.12 MCP 940, in net.minecraft.tileEntity.TileEntityHopper, in the method getInventoryAtPosition:

      if (iinventory == null)
      {
          List<Entity> list = worldIn.getEntitiesInAABBexcluding((Entity)null, new AxisAlignedBB(x - 0.5D, y - 0.5D, z - 0.5D, x + 0.5D, y + 0.5D, z + 0.5D), EntitySelectors.HAS_INVENTORY);
          if (!list.isEmpty())
          {
              iinventory = (IInventory)list.get(worldIn.rand.nextInt(list.size()));
          }
      }
      

      The hopper randomly selects one of the inventories from the list, causing the bug. A fix would be to select the first non-full inventory for pushing items, and the first non-empty inventory for sucking items.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              Pallapalla Mathieu Bolduc
            • Votes:
              5 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                CHK: