diff --git a/common/src/main/java/dev/architectury/transfer/TransferHandler.java b/common/src/main/java/dev/architectury/transfer/TransferHandler.java index d13ae29b..1b0749b6 100644 --- a/common/src/main/java/dev/architectury/transfer/TransferHandler.java +++ b/common/src/main/java/dev/architectury/transfer/TransferHandler.java @@ -23,6 +23,7 @@ import dev.architectury.fluid.FluidStack; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import java.util.function.Consumer; import java.util.stream.Stream; /** @@ -65,6 +66,13 @@ public interface TransferHandler extends TransferView { */ Stream> getContents(); + default void withContents(Consumer>> consumer) { + try (Stream> stream = getContents()) { + Iterable> iterable = stream::iterator; + consumer.accept(iterable); + } + } + /** * Returns the size of the handler. * This may be extremely expensive to compute, avoid if you can. diff --git a/common/src/main/java/dev/architectury/transfer/item/wrapper/ContainerTransferHandler.java b/common/src/main/java/dev/architectury/transfer/item/wrapper/ContainerTransferHandler.java index cf53de9a..42944670 100644 --- a/common/src/main/java/dev/architectury/transfer/item/wrapper/ContainerTransferHandler.java +++ b/common/src/main/java/dev/architectury/transfer/item/wrapper/ContainerTransferHandler.java @@ -29,11 +29,11 @@ import net.minecraft.world.item.ItemStack; import java.util.AbstractList; import java.util.List; -public class ContainerTransferHandler implements CombinedItemTransferHandler, CombinedSingleTransferHandler { - protected final Container container; +public class ContainerTransferHandler implements CombinedItemTransferHandler, CombinedSingleTransferHandler { + public final C container; private List> handlers = null; - public ContainerTransferHandler(Container container) { + public ContainerTransferHandler(C container) { this.container = container; } diff --git a/common/src/main/java/dev/architectury/transfer/item/wrapper/WorldlyContainerTransferHandler.java b/common/src/main/java/dev/architectury/transfer/item/wrapper/WorldlyContainerTransferHandler.java index 9c3d41fb..e18590ec 100644 --- a/common/src/main/java/dev/architectury/transfer/item/wrapper/WorldlyContainerTransferHandler.java +++ b/common/src/main/java/dev/architectury/transfer/item/wrapper/WorldlyContainerTransferHandler.java @@ -28,17 +28,16 @@ import net.minecraft.world.item.ItemStack; import java.util.Arrays; import java.util.List; -public class WorldlyContainerTransferHandler extends ContainerTransferHandler { +public class WorldlyContainerTransferHandler extends ContainerTransferHandler { protected final Direction direction; - public WorldlyContainerTransferHandler(WorldlyContainer container, Direction direction) { + public WorldlyContainerTransferHandler(C container, Direction direction) { super(container); this.direction = direction; } @Override protected List> createHandlers() { - WorldlyContainer container = (WorldlyContainer) this.container; int[] slots = container.getSlotsForFace(this.direction); SingleTransferHandler[] handlers = new SingleTransferHandler[slots.length]; for (int i = 0; i < slots.length; ++i) { diff --git a/common/src/main/java/dev/architectury/transfer/wrapper/CombinedSingleTransferHandler.java b/common/src/main/java/dev/architectury/transfer/wrapper/CombinedSingleTransferHandler.java index 4973138f..95dc8dec 100644 --- a/common/src/main/java/dev/architectury/transfer/wrapper/CombinedSingleTransferHandler.java +++ b/common/src/main/java/dev/architectury/transfer/wrapper/CombinedSingleTransferHandler.java @@ -24,6 +24,7 @@ import dev.architectury.transfer.TransferHandler; import dev.architectury.transfer.wrapper.single.SingleTransferHandler; import java.util.List; +import java.util.function.Consumer; import java.util.stream.Stream; /** @@ -46,6 +47,11 @@ public interface CombinedSingleTransferHandler extends CombinedTransferHandle return (Stream>) (Stream>) getParts().stream(); } + @Override + default void withContents(Consumer>> consumer) { + consumer.accept((Iterable>) (Iterable>) getParts()); + } + @Override @Deprecated default int getContentsSize() { @@ -54,7 +60,7 @@ public interface CombinedSingleTransferHandler extends CombinedTransferHandle @Override @Deprecated - default ResourceView getContent(int index) { + default SingleTransferHandler getContent(int index) { return getParts().get(index); } }