From 835d75f06e72b5c62863ab56d8c5d57376250a82 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 5 Jan 2019 10:04:24 -0500 Subject: [PATCH] Add MultipartContainer#getParts(Multipart) --- .../container/AbstractContainerBlockEntity.java | 8 ++++++++ .../simplemultipart/container/MultipartContainer.java | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/src/main/java/net/shadowfacts/simplemultipart/container/AbstractContainerBlockEntity.java b/src/main/java/net/shadowfacts/simplemultipart/container/AbstractContainerBlockEntity.java index 4555bea..743e8da 100644 --- a/src/main/java/net/shadowfacts/simplemultipart/container/AbstractContainerBlockEntity.java +++ b/src/main/java/net/shadowfacts/simplemultipart/container/AbstractContainerBlockEntity.java @@ -21,6 +21,7 @@ import net.minecraft.world.World; import net.minecraft.world.loot.context.LootContext; import net.minecraft.world.loot.context.Parameters; import net.shadowfacts.simplemultipart.SimpleMultipart; +import net.shadowfacts.simplemultipart.multipart.Multipart; import net.shadowfacts.simplemultipart.multipart.MultipartState; import net.shadowfacts.simplemultipart.multipart.entity.MultipartEntity; import net.shadowfacts.simplemultipart.multipart.entity.MultipartEntityProvider; @@ -63,6 +64,13 @@ public abstract class AbstractContainerBlockEntity extends BlockEntity implement return !parts.isEmpty(); } + @Override + public Set getParts(Multipart type) { + return parts.stream() + .filter(e -> e.getState().getMultipart() == type) + .collect(Collectors.toSet()); + } + @Override public MultipartView getPart(Direction side) { Entry existing = sidePartCache.get(side); diff --git a/src/main/java/net/shadowfacts/simplemultipart/container/MultipartContainer.java b/src/main/java/net/shadowfacts/simplemultipart/container/MultipartContainer.java index df20729..2a0d6be 100644 --- a/src/main/java/net/shadowfacts/simplemultipart/container/MultipartContainer.java +++ b/src/main/java/net/shadowfacts/simplemultipart/container/MultipartContainer.java @@ -3,6 +3,7 @@ package net.shadowfacts.simplemultipart.container; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.shadowfacts.simplemultipart.multipart.Multipart; import net.shadowfacts.simplemultipart.multipart.MultipartView; import net.shadowfacts.simplemultipart.multipart.MultipartState; @@ -40,6 +41,14 @@ public interface MultipartContainer { */ boolean hasParts(); + /** + * Gets all the multiparts in this container of the given type. + * + * @param type The multipart instance representing the multipart type. + * @return The set of all the multiparts in this container that are of that type. + */ + Set getParts(Multipart type); + /** * Gets the part on the given side. *