MinecraftForge/FML

IllegalStateException migrating from 1.6.4

teverett opened this issue · 0 comments

I have a technic world I am attempting to migrate from MC 1.6.4 to 1.7.10. During the migration I get this exception:

[13:27:05] [Server thread/INFO] [FML]: Fixed item id mismatch MineFactoryReloaded:fertilizer: 4368 (init) -> 5661 (map).
[13:27:05] [Server thread/INFO] [FML]: Fixed item id mismatch MineFactoryReloaded:hammer: 4331 (init) -> 5662 (map).
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: java.lang.IllegalStateException
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at cpw.mods.fml.common.registry.GameData.processIdRematches(GameData.java:629)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at cpw.mods.fml.common.Loader.fireMissingMappingEvent(Loader.java:979)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at cpw.mods.fml.common.registry.GameData.injectWorldIDMap(GameData.java:539)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at cpw.mods.fml.common.registry.GameData.injectWorldIDMap(GameData.java:431)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at cpw.mods.fml.common.FMLContainer.readData(FMLContainer.java:210)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at cpw.mods.fml.common.FMLCommonHandler.handleWorldDataLoad(FMLCommonHandler.java:403)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraft.world.storage.SaveHandler.func_75757_d(SaveHandler.java:124)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:201)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:258)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:387)
[13:27:05] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)
[13:27:05] [Server thread/WARN] [FML]: Forge Mod Loader detected that the backup level.dat is being used.

The mods I have are:

-rw-r--r--   1 xxx  staff   418285  7 Dec 13:05 ABO-MC1.7.10-BC7.1release4.0.9.jar
-rw-r--r--   1 xxx  staff  1230523  7 Dec 13:05 CoFHCore-[1.7.10]3.1.3-327.jar
-rw-r--r--   1 xxx  staff  1756014  7 Dec 13:05 MineFactoryReloaded-[1.7.10]2.8.1-174.jar
-rw-r--r--   1 xxx  staff    79708  7 Dec 13:05 NetherOres-[1.7.10]2.3.1-22.jar
-rw-r--r--   1 xxx  staff   632402  7 Dec 13:05 ThermalDynamics-[1.7.10]1.2.0-171.jar
-rw-r--r--   1 xxx  staff  2614901  7 Dec 13:05 ThermalExpansion-[1.7.10]4.1.4-247.jar
-rw-r--r--   1 xxx  staff  2316314  7 Dec 13:05 ThermalFoundation-[1.7.10]1.2.5-115.jar
-rw-r--r--   1 xxx  staff  2698098  7 Dec 13:05 buildcraft-7.1.18.jar

The exception throw is in this file, at line 627:

https://github.com/MinecraftForge/FML/blob/1.7.10/src/main/java/cpw/mods/fml/common/registry/GameData.java

It appears that at line 623, there is a call to GameData.RegisterItem() which is returning a 0.

newId = gameData.registerItem((Item) remap.getTarget(), newName, remap.id);

This code, at line 822 is being hit:

if (id == -1) // ItemBlock before its Block
            {
                if (idHint < 0 || availabilityMap.get(idHint) || idHint > MAX_BLOCK_ID) // non-suitable id, allocate one in the block id range, add would use the item id range otherwise
                {
                    id = availabilityMap.nextClearBit(MIN_BLOCK_ID); // find suitable id here, iItemRegistry would search from MIN_ITEM_ID
                    if (id > MAX_BLOCK_ID) throw new RuntimeException(String.format("Invalid id %d - maximum id range exceeded.", id));
                    FMLLog.fine("Allocated id %d for ItemBlock %s in the block id range, original id requested: %d.", id, name, idHint);
                }
                else // idHint is suitable without changes
                {
                    id = idHint;
                }
            }

Could someone more familiar with FML help me figure out what's going on?