essentially I want that forge handles all of the id configuration itself instead of have each mod do it themselves with all due concequences
for example create a IDRepository class with the method int requestBlockIdFor(Object, String)/requestItemIdFor(Object, String)
here's my timeline for how it should work:
before any PreInit are called IDRepository will loads its "ids.cfg" and build an internal Map<String,Integer> for used ids (including vanilla ids)
then in the PreInit mods will need to call "int modBlockId =getNextFreeBlockId(requestBlockIdFor(this, "modBlock"));"
the code for requestBlockIdFor will be something like
then the getNextFreeItemId()/getNextFreeBlockId() then should iterate itemsList and blocksList resp for a new free id and check if it hasn't been assigned to another mod first
after the preInits are called it will save the config
this can also be done for entity ids
this will remove all id conflicts (except for rogue mods...) and removes the need for Unofficial Block/Item ID Range Listing, this also allows for the ids.cfg file to be included in maps (and perhaps make a tool to transfer maps from one ids.cfg to another)