А что не так с ID?
Попробуй связку из OreDictionary#getOreIDs(ItemStack)
и OreDictionary#getOreName(int)
, в этом случае, вроде бы ничего не создается, если нет регистраций.
Как вариант (но не обязательно хороший), можно сделать ItemStack set/list для руд (в последствии просто проверять на существование в нем проверяемого блока), который будет заполняться в OreRegisterEvent
.
Ну, думаю, ты и так это уже знаешь, но чтобы определить принадлежность к рудам, проверяешь все записи словаря на то что хоть одна из них начинается с ore
, а еще и следующий после этого символ проверять на верхний регистр, чтобы уж наверняка.