Fixed bronze furnance & electrinic type sorter

This commit is contained in:
TheDarkDnKTv 2021-02-25 04:45:11 +02:00
parent 92d1f1eaa0
commit a32d716c27
4 changed files with 60 additions and 19 deletions

View file

@ -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);
}

View file

@ -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) {

View file

@ -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);

View file

@ -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;