diff --git a/src/main/java/gregtechmod/api/recipe/RecipeMap.java b/src/main/java/gregtechmod/api/recipe/RecipeMap.java index 09737c1..9d78912 100644 --- a/src/main/java/gregtechmod/api/recipe/RecipeMap.java +++ b/src/main/java/gregtechmod/api/recipe/RecipeMap.java @@ -169,6 +169,27 @@ public class RecipeMap> { */ public boolean remove(Recipe recipe) { Objects.requireNonNull(recipe); + + for (Ingredient ingr : recipe.getInputs()) { + for (ItemStack var : ingr.getVariants()) { + int value = GT_Utility.stackToInt(var); + int wild = GT_Utility.stackToWildcard(var); + List var1 = MAPPINGS.get(value); + List var2 = MAPPINGS.get(wild); + var1.remove(recipe); + var2.remove(recipe); + MAPPINGS.replace(value, var1); + MAPPINGS.replace(wild, var2); + } + } + + for (FluidStack fluid : recipe.getFluidInputs()) { + int value = GT_Utility.fluidStackToInt(fluid); + List var1 = MAPPINGS.get(value); + var1.remove(recipe); + MAPPINGS.replace(value, var1); + } + return this.recipeList.remove(recipe); } diff --git a/src/main/java/gregtechmod/common/tileentities/automation/GT_MetaTileEntity_ElectricTypeSorter.java b/src/main/java/gregtechmod/common/tileentities/automation/GT_MetaTileEntity_ElectricTypeSorter.java index 89f38dd..8f5886c 100644 --- a/src/main/java/gregtechmod/common/tileentities/automation/GT_MetaTileEntity_ElectricTypeSorter.java +++ b/src/main/java/gregtechmod/common/tileentities/automation/GT_MetaTileEntity_ElectricTypeSorter.java @@ -1,15 +1,19 @@ package gregtechmod.common.tileentities.automation; +import java.util.Arrays; +import java.util.Collections; + import gregtechmod.api.enums.OrePrefixes; import gregtechmod.api.interfaces.IGregTechTileEntity; import gregtechmod.api.metatileentity.MetaTileEntity; -import gregtechmod.api.recipe.Recipe; import gregtechmod.api.util.GT_ModHandler; import gregtechmod.api.util.GT_OreDictUnificator; import gregtechmod.api.util.GT_Utility; import gregtechmod.common.recipe.RecipeMaps; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.IChatComponent; @@ -101,7 +105,7 @@ public class GT_MetaTileEntity_ElectricTypeSorter extends GT_MetaTileEntity_Elec OrePrefixes tPrefix = OrePrefixes.getPrefix(sTypeList[mMode]); - if (((mMode == 11 && mInventory[0].getItem() instanceof ItemFood) || (mMode == 12 && Recipe.findEqualRecipe(false, RecipeMaps.GRINDER, mInventory[0], GT_ModHandler.getWaterCell(1)) != null) || (tPrefix != null && tPrefix.contains(mInventory[0])) || GT_OreDictUnificator.isItemStackInstanceOf(mInventory[0], sTypeList[mMode]))) { + if (((mMode == 11 && mInventory[0].getItem() instanceof ItemFood) || (mMode == 12 && RecipeMaps.GRINDER.findRecipe(Arrays.asList(new ItemStack[] {mInventory[0], GT_ModHandler.getWaterCell(1)}), Collections.emptyList()) != null) || (tPrefix != null && tPrefix.contains(mInventory[0])) || GT_OreDictUnificator.isItemStackInstanceOf(mInventory[0], sTypeList[mMode]))) { getBaseMetaTileEntity().decreaseStoredEnergyUnits(tPrice = GT_Utility.moveOneItemStack(getBaseMetaTileEntity(), getBaseMetaTileEntity().getIInventoryAtSide(mTargetDirection), getBaseMetaTileEntity().getBackFacing(), GT_Utility.getOppositeSide(mTargetDirection), null, false, mTargetStackSize!=0?(byte)mTargetStackSize:64, mTargetStackSize!=0?(byte)mTargetStackSize:1, (byte)64, (byte)1)*3, true); } if (tPrice <= 0) { diff --git a/src/main/java/gregtechmod/common/tileentities/machines/basic/GT_MetaTileEntity_Microwave.java b/src/main/java/gregtechmod/common/tileentities/machines/basic/GT_MetaTileEntity_Microwave.java index 8baaa36..5f09ea5 100644 --- a/src/main/java/gregtechmod/common/tileentities/machines/basic/GT_MetaTileEntity_Microwave.java +++ b/src/main/java/gregtechmod/common/tileentities/machines/basic/GT_MetaTileEntity_Microwave.java @@ -6,7 +6,6 @@ import java.util.UUID; import com.mojang.authlib.GameProfile; -import gregtechmod.api.GregTech_API; import gregtechmod.api.enums.GT_Items; import gregtechmod.api.enums.Materials; import gregtechmod.api.enums.OrePrefixes; @@ -82,9 +81,9 @@ public class GT_MetaTileEntity_Microwave extends GT_MetaTileEntity_BasicMachine private ItemStack checkForExlosion(ItemStack input, int inIdx) { ItemStack tOutput = GT_ModHandler.getSmeltingOutput(input, false, null); if (input.getItem() == GT_Items.Spray_CFoam.getItem() || - GT_Utility.areStacksEqual(input, GT_ModHandler.getIC2Item("constructionFoamSprayer", 1, GregTech_API.ITEM_WILDCARD_DAMAGE)) || - GT_Utility.areStacksEqual(input, GT_ModHandler.getIC2Item("constructionFoam", 1, GregTech_API.ITEM_WILDCARD_DAMAGE)) || - GT_Utility.areStacksEqual(input, GT_ModHandler.getIC2Item("CFCell", 1))) { + input.isItemEqual(GT_ModHandler.getIC2Item("constructionFoamSprayer", 1)) || + input.isItemEqual(GT_ModHandler.getIC2Item("constructionFoam", 1)) || + input.isItemEqual(GT_ModHandler.getIC2Item("CFCell", 1))) { IGregTechTileEntity ent = getBaseMetaTileEntity(); getInputItems().set(inIdx, null); ent.doExplosion(128); diff --git a/src/main/java/gregtechmod/common/tileentities/machines/steam/GT_MetaTileEntity_BronzeFurnace.java b/src/main/java/gregtechmod/common/tileentities/machines/steam/GT_MetaTileEntity_BronzeFurnace.java index 15ea464..fac8c5a 100644 --- a/src/main/java/gregtechmod/common/tileentities/machines/steam/GT_MetaTileEntity_BronzeFurnace.java +++ b/src/main/java/gregtechmod/common/tileentities/machines/steam/GT_MetaTileEntity_BronzeFurnace.java @@ -1,13 +1,12 @@ package gregtechmod.common.tileentities.machines.steam; -import java.util.List; - import gregtechmod.api.interfaces.IGregTechTileEntity; import gregtechmod.api.metatileentity.MetaTileEntity; import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine_Bronze; import gregtechmod.api.recipe.Recipe; +import gregtechmod.api.recipe.RecipeLogic; import gregtechmod.api.recipe.RecipeMap; -import gregtechmod.api.util.GT_ModHandler; +import gregtechmod.api.util.GT_Log; import gregtechmod.api.util.GT_Utility; import net.minecraft.entity.player.EntityPlayer; @@ -21,6 +20,34 @@ public class GT_MetaTileEntity_BronzeFurnace extends GT_MetaTileEntity_BasicMach super(recipeMap); } + @Override + public void initRecipeLogic(RecipeMap map) { + recipeLogic = new RecipeLogic(map, this) { + @Override + protected void startRecipe(Recipe recipe) { + if (getMachine().spaceForOutput(recipe) && getMachine().getBaseMetaTileEntity().decreaseStoredEnergyUnits(recipe.getEUtoStart(), false)) { + previousRecipe = recipe; + maxProgressTime = GT_Utility.isDebugItem(getMachine().getStackInSlot(batterySlot)) ? 1 : 400; + progressTime = 1; + EUt = recipe.getEUt(); + if (consumeInputs(recipe)) { + getMachine().getBaseMetaTileEntity().setActive(true); + getMachine().startProcess(); + } else { + GT_Log.log.catching(new IllegalStateException("Error state detected! RecipeMap passed recipe, but it's not matching! Report about this!!!")); + EUt = 0; + progressTime = 0; + maxProgressTime = 0; + previousRecipe = null; + } + + } else { + getMachine().getBaseMetaTileEntity().setActive(false); + } + } + }; + } + @Override public void onRightclick(EntityPlayer aPlayer) { getBaseMetaTileEntity().openGUI(aPlayer, 165); @@ -31,16 +58,6 @@ public class GT_MetaTileEntity_BronzeFurnace extends GT_MetaTileEntity_BasicMach return new GT_MetaTileEntity_BronzeFurnace(recipeLogic.recipeMap); } - @Override - public void checkRecipe() { - GT_Utility.moveStackFromSlotAToSlotB(getBaseMetaTileEntity(), getBaseMetaTileEntity(), 1, 2, (byte)64, (byte)1, (byte)64, (byte)1); - GT_Utility.moveStackFromSlotAToSlotB(getBaseMetaTileEntity(), getBaseMetaTileEntity(), 3, 4, (byte)64, (byte)1, (byte)64, (byte)1); - if (mInventory[2] != null && null != (mOutputItem1 = GT_ModHandler.getSmeltingOutput(mInventory[2], true, mInventory[3]))) { - mEUt = 3; - mMaxProgresstime = 400; - } - } - @Override public int getFrontFacingInactive() { return 330;