From 7c9d267499b49597c2011fd23e0f17028fd6dac2 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Wed, 19 Feb 2014 23:36:01 -0500 Subject: [PATCH] Fix factories resetting progress --- common/mekanism/common/IFactory.java | 28 +++++++++++++++++++ .../common/tile/TileEntityFactory.java | 5 +++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/common/mekanism/common/IFactory.java b/common/mekanism/common/IFactory.java index 7b6a1138e..36820b9fb 100644 --- a/common/mekanism/common/IFactory.java +++ b/common/mekanism/common/IFactory.java @@ -1,5 +1,7 @@ package mekanism.common; +import java.util.Map; + import mekanism.api.AdvancedInput; import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; @@ -8,6 +10,7 @@ import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.tile.TileEntityAdvancedElectricMachine; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.StackUtils; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraftforge.common.ForgeDirection; @@ -133,6 +136,31 @@ public interface IFactory return false; } + public boolean hasRecipe(ItemStack itemStack) + { + if(itemStack == null) + { + return false; + } + + for(Object obj : recipe.get().entrySet()) + { + if(((Map.Entry)obj).getKey() instanceof AdvancedInput) + { + Map.Entry entry = (Map.Entry)obj; + + ItemStack stack = ((AdvancedInput)entry.getKey()).itemStack; + + if(StackUtils.equalsWildcard(stack, itemStack)) + { + return true; + } + } + } + + return false; + } + public TileEntityAdvancedElectricMachine getTile() { if(cacheTile == null) diff --git a/common/mekanism/common/tile/TileEntityFactory.java b/common/mekanism/common/tile/TileEntityFactory.java index f2d6c8a31..9d647ae70 100644 --- a/common/mekanism/common/tile/TileEntityFactory.java +++ b/common/mekanism/common/tile/TileEntityFactory.java @@ -227,7 +227,10 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip if(!canOperate(getInputSlot(process), getOutputSlot(process))) { - progress[process] = 0; + if(!RecipeType.values()[recipeType].usesFuel() || !RecipeType.values()[recipeType].hasRecipe(inventory[getInputSlot(process)])) + { + progress[process] = 0; + } } }