mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-28 11:57:01 -05:00
Add withContents
This commit is contained in:
@@ -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<T> extends TransferView<T> {
|
||||
*/
|
||||
Stream<ResourceView<T>> getContents();
|
||||
|
||||
default void withContents(Consumer<Iterable<ResourceView<T>>> consumer) {
|
||||
try (Stream<ResourceView<T>> stream = getContents()) {
|
||||
Iterable<ResourceView<T>> iterable = stream::iterator;
|
||||
consumer.accept(iterable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the size of the handler.
|
||||
* This may be extremely expensive to compute, avoid if you can.
|
||||
|
||||
@@ -29,11 +29,11 @@ import net.minecraft.world.item.ItemStack;
|
||||
import java.util.AbstractList;
|
||||
import java.util.List;
|
||||
|
||||
public class ContainerTransferHandler implements CombinedItemTransferHandler, CombinedSingleTransferHandler<ItemStack> {
|
||||
protected final Container container;
|
||||
public class ContainerTransferHandler<C extends Container> implements CombinedItemTransferHandler, CombinedSingleTransferHandler<ItemStack> {
|
||||
public final C container;
|
||||
private List<SingleTransferHandler<ItemStack>> handlers = null;
|
||||
|
||||
public ContainerTransferHandler(Container container) {
|
||||
public ContainerTransferHandler(C container) {
|
||||
this.container = container;
|
||||
}
|
||||
|
||||
|
||||
@@ -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<C extends WorldlyContainer> extends ContainerTransferHandler<C> {
|
||||
protected final Direction direction;
|
||||
|
||||
public WorldlyContainerTransferHandler(WorldlyContainer container, Direction direction) {
|
||||
public WorldlyContainerTransferHandler(C container, Direction direction) {
|
||||
super(container);
|
||||
this.direction = direction;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<SingleTransferHandler<ItemStack>> createHandlers() {
|
||||
WorldlyContainer container = (WorldlyContainer) this.container;
|
||||
int[] slots = container.getSlotsForFace(this.direction);
|
||||
SingleTransferHandler<ItemStack>[] handlers = new SingleTransferHandler[slots.length];
|
||||
for (int i = 0; i < slots.length; ++i) {
|
||||
|
||||
@@ -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<T> extends CombinedTransferHandle
|
||||
return (Stream<ResourceView<T>>) (Stream<? super SingleTransferHandler<T>>) getParts().stream();
|
||||
}
|
||||
|
||||
@Override
|
||||
default void withContents(Consumer<Iterable<ResourceView<T>>> consumer) {
|
||||
consumer.accept((Iterable<ResourceView<T>>) (Iterable<? super SingleTransferHandler<T>>) getParts());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
default int getContentsSize() {
|
||||
@@ -54,7 +60,7 @@ public interface CombinedSingleTransferHandler<T> extends CombinedTransferHandle
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
default ResourceView<T> getContent(int index) {
|
||||
default SingleTransferHandler<T> getContent(int index) {
|
||||
return getParts().get(index);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user