Fixed bronze furnance & electrinic type sorter
This commit is contained in:
parent
92d1f1eaa0
commit
a32d716c27
4 changed files with 60 additions and 19 deletions
|
@ -169,6 +169,27 @@ public class RecipeMap<F extends RecipeFactory<F>> {
|
|||
*/
|
||||
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<Recipe> var1 = MAPPINGS.get(value);
|
||||
List<Recipe> 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<Recipe> var1 = MAPPINGS.get(value);
|
||||
var1.remove(recipe);
|
||||
MAPPINGS.replace(value, var1);
|
||||
}
|
||||
|
||||
return this.recipeList.remove(recipe);
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue