Кажется, что GetItemsOfType () просматривает только шаблоны, унаследованные от текущего шаблона элемента. Таким образом, если item1 имеет шаблон t1, а t1 наследуется от t2, он вернет item1, только если вы спросите, наследует ли он от t2, а не t1.
Вы можете просто написать это сами. Это не так сложно. Вы можете сделать что-то вроде этого:
public bool InheritsFrom(Item item, ID templateIdToTest)
{
Template template = TemplateManager.GetTemplate(item);
if (template.ID == templateIdToTest)
return true;
return template.DescendsFrom(templateIdToTest);
}