Вариантов для решения одной и той же задачи - масса.
1) В 1.64 и ниже был всегда список всех блоков Block.blockList[ ID_Блока ], который можно подменить ))))
myFurnace = new BlockMyFurnace(....);
Block.blockList[ ID_Блока ] = null; //обязательное обнуление
Block.blockList[ ID_Блока ] = myFurnace;
2) Извращенный вариант (я предупредил :devil

. Сделать свой рендер печи по типу IItemRenderer (но для блоков ISimpleBlockRenderingHandler). Каждый раз получая блок, вы будете получать tileentity, через который можно получить и что жариться и когда прожариться.
3) Использование плагинов, а также MySQL для хранения того, что и когда прожариться, а по заключении добавлять остаточные "крошки" в печь.
Какой бы вариант не был выбран, надо всегда исходить из того, ЧТО требуется создать или сделать.
Потому что зачастую, многие создают себе сами проблемы на пути к цели, где их быть не должно
Если не один из вариантов не подошел, было бы приятным узнать всё таки вашу цель, всех этих манипуляций.