Closed Kokkan closed 8 years ago
w... what? someone is editing... the crafting manager? during runtime?
Why?
The code is from r247, so it could be a different loop, but it does indeed appear to be this code right here:
List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();
for(IRecipe recipe : recipes)
if(recipe.matches(craft, worldObj)) {
setInventorySlotContents(9, recipe.getCraftingResult(craft));
for(int i = 0; i < 9; i++) {
ItemStack stack = getStackInSlot(i);
if(stack == null)
continue;
ItemStack container = stack.getItem().getContainerItem(stack);
setInventorySlotContents(i, container);
}
return true;
}
As @yrsegal laments, this would mean that someone is modifying the recipe list obtained from the crafting manager, but how exactly this relates to there being an item-pulling object is a little murky. Indeed, it would make more sense that the internal container is under contention.
The two easy fixes:
(for i = 0; ...)
, which will avoid a ConcurrentModificationException
.Of course, the crafting manager may not even be the major problem, so some testing is in order.
With this dummy set up here (using cobblestone to craft slabs), I wasn't able to induce any crashes, which means that the bug is likely coming from some other mod in Infinity Expert mode. I'm not in a good position to run the pack and try and break things myself at the moment, but I'll look into it when I can.
Setup:
it's probably coming from that mod which allows them to switch out minetweaker scripts, honestly.
I'll test tonight for you when I get home.
Placing a block that pulls (example Extra Utils Item Node) under the Craft Crate when you have a Crafting Pattern inserted (#6) under the Crate bugs the crate and might cause your map to break.
Removed the Crate in NBTEdit and the world could load again.