Add withContents

This commit is contained in:
shedaniel
2022-02-05 03:38:14 +08:00
parent 4874c366f4
commit 6da7fd9e4f
4 changed files with 20 additions and 7 deletions

View File

@@ -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.

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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);
}
}