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;