diff --git a/src/main/java/net/neoforged/neoforge/items/VanillaInventoryCodeHooks.java b/src/main/java/net/neoforged/neoforge/items/VanillaInventoryCodeHooks.java index fbdc2e42fb5..0dae804f0b1 100644 --- a/src/main/java/net/neoforged/neoforge/items/VanillaInventoryCodeHooks.java +++ b/src/main/java/net/neoforged/neoforge/items/VanillaInventoryCodeHooks.java @@ -209,8 +209,13 @@ private static Optional> getItemHandlerAt(Level world // Note: the isAlive check matches what vanilla does for hoppers in EntitySelector.CONTAINER_ENTITY_SELECTOR List list = worldIn.getEntities((Entity) null, new AABB(x - 0.5D, y - 0.5D, z - 0.5D, x + 0.5D, y + 0.5D, z + 0.5D), EntitySelector.ENTITY_STILL_ALIVE); if (!list.isEmpty()) { - var entity = list.get(worldIn.random.nextInt(list.size())); - var entityCap = entity.getCapability(Capabilities.ItemHandler.ENTITY_AUTOMATION, side); + Entity entity; + IItemHandler entityCap; + do { + entity = list.remove(worldIn.random.nextInt(list.size())); + entityCap = entity.getCapability(Capabilities.ItemHandler.ENTITY_AUTOMATION, side); + } + while (entityCap != null && !list.isEmpty()); if (entityCap != null) return Optional.of(ImmutablePair.of(entityCap, entity)); }