MineTweaker3
MineTweaker3 copied to clipboard
Failure to reload worlds after crash
If the client crashes while using a pack with Minetweaker. They cannot reconnect to a world without shutting down the launcher completely and restarting. If they do they get an error. In packs using the oreDictionary part of Minetweaker the error is "mismatched hases discovered" , in packs using mods like CustomVillagers or AgriCraft that add minetweaker compatibility the error is that the script can't be loaded. In packs where they use ModTweaker to add recipes to Thaumcraft the error is that the page can't be loaded.
All of these errors occur seemingly because the item registry after the crash on the client no longer matches the registry in the SSP world, or the SMP server. The theory is that when the crash occurs MineTweakers auto undo goes into play, but it doesn't finish because the game crashed, this appears to leave the item registry garbled.
The registry is completely trashed, and the client doesn't know it:
[00:45:10] [Client thread/ERROR] [FML/]: Exception caught during firing event cpw.mods.fml.common.gameevent.TickEvent$ClientTickEvent@427f165e:
java.lang.ClassCastException: com.pam.harvestcraft.BlockPamCrop cannot be cast to cofh.thermaldynamics.duct.BlockDuct
at cofh.thermaldynamics.block.TileTDBase.getDuctType(TileTDBase.java:734) ~[TileTDBase.class:?]
at cofh.thermaldynamics.duct.item.TileItemDuct.getPipeLength(TileItemDuct.java:390) ~[TileItemDuct.class:?]
at cofh.thermaldynamics.duct.item.TravelingItem.tickClientForward(TravelingItem.java:239) ~[TravelingItem.class:?]
at cofh.thermaldynamics.duct.item.TileItemDuct.tickItemsClient(TileItemDuct.java:679) ~[TileItemDuct.class:?]
at cofh.thermaldynamics.core.TickHandlerClient.tick(TickHandlerClient.java:42) ~[TickHandlerClient.class:?]
at cpw.mods.fml.common.eventhandler.ASMEventHandler_740_TickHandlerClient_tick_ClientTickEvent.invoke(.dynamic) ~[?:?]
at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) ~[ASMEventHandler.class:?]
at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138) [EventBus.class:?]
That crash is demonstrating that the client has loaded a completely different block mapping to the server, due to the registry corruption. If this was an SSP world, level.dat would already have the bad mapping in it, and it would be permanently trashed.
using
ore:ingotIron.mirror(ore:ingotTin);
and having any client side only crash causes the world to be unloadable without a restart. That's the smallest script I can cause it with. Minetweaker has no issues, as long as nothing ever crashes the world. 1 crash and you get what cpw posted, weird errors where the item registry has gone to heck.
What I don't get about this issue, is that we don't change the itemregistry, at all, yes we change the oredicts, but we don't actually add or remove items, what would really help with this issue, is if you could tell us what is on line: TileTDBase.java:734 of thermal dynamics (ask tema or someone who has the source)
Also, I have played many packs where it has client side crashed with minetweaker and been fine.