diff --git a/src/main/java/li/cil/oc/api/prefab/DriverTileEntity.java b/src/main/java/li/cil/oc/api/prefab/DriverTileEntity.java new file mode 100644 index 000000000..e9c6890ef --- /dev/null +++ b/src/main/java/li/cil/oc/api/prefab/DriverTileEntity.java @@ -0,0 +1,20 @@ +package li.cil.oc.api.prefab; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public abstract class DriverTileEntity implements li.cil.oc.api.driver.Block { + public abstract Class getTileEntityClass(); + + @Override + public boolean worksWith(final World world, final int x, final int y, final int z) { + final Class filter = getTileEntityClass(); + if (filter == null) { + // This can happen if filter classes are deduced by reflection and + // the class in question is not present. + return false; + } + final TileEntity tileEntity = world.getTileEntity(x, y, z); + return tileEntity != null && filter.isAssignableFrom(tileEntity.getClass()); + } +}