From ab640cf3b9344c130f2177435b595b181084fefe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 29 Dec 2020 12:35:30 +0100 Subject: [PATCH] Provide access to container tile entity/entity in item device queries part 2. --- .../li/cil/oc2/common/bus/device/Devices.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/main/java/li/cil/oc2/common/bus/device/Devices.java b/src/main/java/li/cil/oc2/common/bus/device/Devices.java index 97d23430..9b056a7d 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/Devices.java +++ b/src/main/java/li/cil/oc2/common/bus/device/Devices.java @@ -8,6 +8,7 @@ import li.cil.oc2.api.bus.device.provider.BlockDeviceQuery; import li.cil.oc2.api.bus.device.provider.ItemDeviceProvider; import li.cil.oc2.api.bus.device.provider.ItemDeviceQuery; import li.cil.oc2.common.init.Providers; +import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; @@ -37,6 +38,14 @@ public final class Devices { return getDevices(new ItemQuery(stack)); } + public static List getDevices(final TileEntity tileEntity, final ItemStack stack) { + return getDevices(new ItemQuery(tileEntity, stack)); + } + + public static List getDevices(final Entity entity, final ItemStack stack) { + return getDevices(new ItemQuery(entity, stack)); + } + public static Collection getDeviceTypes(final ItemStack stack) { return getDeviceTypes(new ItemQuery(stack)); } @@ -108,12 +117,38 @@ public final class Devices { } private static final class ItemQuery implements ItemDeviceQuery { + @Nullable private final TileEntity tileEntity; + @Nullable private final Entity entity; private final ItemStack stack; public ItemQuery(final ItemStack stack) { + tileEntity = null; + entity = null; this.stack = stack; } + public ItemQuery(final TileEntity tileEntity, final ItemStack stack) { + this.tileEntity = tileEntity; + entity = null; + this.stack = stack; + } + + public ItemQuery(final Entity entity, final ItemStack stack) { + tileEntity = null; + this.entity = entity; + this.stack = stack; + } + + @Override + public Optional getContainerTileEntity() { + return Optional.ofNullable(tileEntity); + } + + @Override + public Optional getContainerEntity() { + return Optional.ofNullable(entity); + } + @Override public ItemStack getItemStack() { return stack;