From 10974e7952ad9853c63bcbbb5a83952f97b2bbb1 Mon Sep 17 00:00:00 2001 From: Draknyte1 Date: Sat, 29 Oct 2016 18:49:50 +1000 Subject: $ Fixed output overflow on most multi-blocks. --- ...regtechMetaTileEntityIndustrial_PlatePress.java | 21 +++---- .../GregtechMetaTileEntity_IndustrialCokeOven.java | 8 ++- ...gtechMetaTileEntity_IndustrialElectrolyzer.java | 22 +++---- ...GregtechMetaTileEntity_IndustrialMacerator.java | 73 +--------------------- .../GregtechMetaTileEntity_IndustrialWireMill.java | 21 +++---- .../GregtechMetaTileEntity_MassFabricator.java | 14 +---- 6 files changed, 37 insertions(+), 122 deletions(-) (limited to 'src/Java/gtPlusPlus/xmod/gregtech/common/tileentities') diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityIndustrial_PlatePress.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityIndustrial_PlatePress.java index b0828776ed..d576d159ed 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityIndustrial_PlatePress.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityIndustrial_PlatePress.java @@ -6,13 +6,14 @@ import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine; +import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import java.util.ArrayList; import java.util.Arrays; @@ -24,7 +25,7 @@ import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; public class GregtechMetaTileEntityIndustrial_PlatePress -extends GT_MetaTileEntity_MultiBlockBase { +extends GregtechMeta_MultiBlockBase { public GregtechMetaTileEntityIndustrial_PlatePress(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); } @@ -70,11 +71,6 @@ extends GT_MetaTileEntity_MultiBlockBase { return GT_Recipe.GT_Recipe_Map.sBenderRecipes; } - @Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return true; - } - @Override public boolean isFacingValid(byte aFacing) { return aFacing > 1; @@ -111,7 +107,11 @@ extends GT_MetaTileEntity_MultiBlockBase { } } FluidStack[] tFluids = (FluidStack[]) Arrays.copyOfRange(tFluidList.toArray(new FluidStack[tInputList.size()]), 0, 1); - if (tInputList.size() > 0) { + + int tValidOutputSlots = this.getValidOutputSlots(getRecipeMap(), tInputs); + Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots); + //More than or one input + if (tInputList.size() > 0 && tValidOutputSlots >= 1) { long tVoltage = getMaxInputVoltage(); byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage)); GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sBenderRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs); @@ -187,11 +187,6 @@ extends GT_MetaTileEntity_MultiBlockBase { return 0; } - @Override - public int getDamageToComponent(ItemStack aStack) { - return 0; - } - @Override public int getAmountOfOutputs() { return 1; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java index a19aaf26b1..c2e2df7a8f 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java @@ -11,6 +11,7 @@ import gregtech.api.util.GT_Utility; import gregtech.api.util.Recipe_GT; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; @@ -115,7 +116,12 @@ public class GregtechMetaTileEntity_IndustrialCokeOven } } FluidStack[] tFluids = (FluidStack[]) Arrays.copyOfRange(tFluidList.toArray(new FluidStack[tInputList.size()]), 0, 1); - if (tInputList.size() > 0) { + + int tValidOutputSlots = this.getValidOutputSlots(getRecipeMap(), tInputs); + Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots); + + //More than or one input + if (tInputList.size() > 0 && tValidOutputSlots >= 1) { long tVoltage = getMaxInputVoltage(); byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage)); GT_Recipe tRecipe = Recipe_GT.Gregtech_Recipe_Map.sCokeOvenRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java index 9b16e0cee9..1680006afd 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java @@ -6,13 +6,14 @@ import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine; +import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import java.util.ArrayList; import java.util.Arrays; @@ -27,7 +28,7 @@ import net.minecraftforge.fluids.FluidStack; import org.apache.commons.lang3.ArrayUtils; public class GregtechMetaTileEntity_IndustrialElectrolyzer -extends GT_MetaTileEntity_MultiBlockBase { +extends GregtechMeta_MultiBlockBase { public GregtechMetaTileEntity_IndustrialElectrolyzer(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); } @@ -75,11 +76,6 @@ extends GT_MetaTileEntity_MultiBlockBase { return GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes; } - @Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return true; - } - @Override public boolean isFacingValid(byte aFacing) { return aFacing > 1; @@ -119,7 +115,12 @@ extends GT_MetaTileEntity_MultiBlockBase { } } FluidStack[] tFluids = (FluidStack[]) Arrays.copyOfRange(tFluidList.toArray(new FluidStack[tInputList.size()]), 0, 1); - if (tInputList.size() > 0) { + + int tValidOutputSlots = this.getValidOutputSlots(getRecipeMap(), tInputs); + Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots); + + //More than or one input + if (tInputList.size() > 0 && tValidOutputSlots >= 1) { long tVoltage = getMaxInputVoltage(); byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage)); GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs); @@ -241,11 +242,6 @@ extends GT_MetaTileEntity_MultiBlockBase { return 0; } - @Override - public int getDamageToComponent(ItemStack aStack) { - return 0; - } - @Override public int getAmountOfOutputs() { return 1; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java index c80c416120..68b2f647ee 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java @@ -12,7 +12,6 @@ import gregtech.api.util.GT_Utility; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; @@ -136,80 +135,12 @@ extends GregtechMeta_MultiBlockBase { //Make a recipe instance for the rest of the method. GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.findRecipe(getBaseMetaTileEntity(), false, 9223372036854775807L, null, tInputs); - //Count free slots in output hatches - return if the 4/5 hatch is full - ArrayList> rList = new ArrayList>(); - for (GT_MetaTileEntity_Hatch_OutputBus tHatch : mOutputBusses) { - int hatchUsedSlotCount = 0; - if (isValidMetaTileEntity(tHatch)) { - //Loop slots in this hatch - for (int i=0; i(tHatch, hatchUsedSlotCount)); - } - } - - //Temp Vars. - boolean[] mValidOutputSlots = new boolean[5]; - int arrayPos=0; - - for (Pair IE : rList) { - //Temp Vars. - GT_MetaTileEntity_Hatch_OutputBus vTE = IE.getKey(); - int vUsedSlots = IE.getValue(); - //Hatch is empty - if (vUsedSlots == 0){ - mValidOutputSlots[arrayPos] = true; - } - //Hatch contains at least one item - else if (vUsedSlots < vTE.getSizeInventory()){ - //Temp variable for counting amount of output items - int outputItemCount = tRecipe.mOutputs.length; - //Hatch has more slots free than output count - if (vUsedSlots < vTE.getSizeInventory()-outputItemCount){ - mValidOutputSlots[arrayPos] = true; - } - //Hatch has output count free - else if (vUsedSlots >= vTE.getSizeInventory()-outputItemCount){ - //Not enough output slots - if (vUsedSlots > vTE.getSizeInventory()-outputItemCount){ - if (arrayPos == 4){ - Utils.LOG_INFO("Not Enough Output slots in top hatch"); - return false; - } - } - } - } - - //Hatch is full - if (vUsedSlots == vTE.getSizeInventory()){ - Utils.LOG_INFO("Not Enough Output slots in hatch - "+arrayPos+" - [0-4] - 0 = Bottom | 4 = Top"); - mValidOutputSlots[arrayPos] = false; - if (arrayPos == 4){ - Utils.LOG_INFO("Not Enough Output slots in top hatch"); - return false; - } - } - //Count up a position in the boolean array. - arrayPos++; - } - int tValidOutputSlots = 0; - for (int cr=0;cr 0 && tValidOutputSlots > 1) { + if (tInputList.size() > 0 && tValidOutputSlots >= 1) { if ((tRecipe != null) && (tRecipe.isRecipeInputEqual(true, null, tInputs))) { Utils.LOG_WARNING("Valid Recipe found - size "+tRecipe.mOutputs.length); this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java index 27d70992cf..ca300ba277 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java @@ -6,7 +6,6 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; @@ -14,6 +13,7 @@ import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine; +import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import java.util.ArrayList; @@ -22,7 +22,7 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; public class GregtechMetaTileEntity_IndustrialWireMill -extends GT_MetaTileEntity_MultiBlockBase { +extends GregtechMeta_MultiBlockBase { public GregtechMetaTileEntity_IndustrialWireMill(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); } @@ -68,11 +68,6 @@ extends GT_MetaTileEntity_MultiBlockBase { return GT_Recipe.GT_Recipe_Map.sWiremillRecipes; } - @Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return true; - } - @Override public boolean isFacingValid(byte aFacing) { return aFacing > 1; @@ -87,6 +82,12 @@ extends GT_MetaTileEntity_MultiBlockBase { GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sWiremillRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], null, new ItemStack[]{tInput}); if (tRecipe != null) { + + int tValidOutputSlots = this.getValidOutputSlots(getRecipeMap(), new ItemStack[]{tInput}); + Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots); + //More than or one input + if (tInputList.size() > 0 && tValidOutputSlots >= 1) { + if (tRecipe.isRecipeInputEqual(true, null, new ItemStack[]{tInput})) { this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; @@ -109,6 +110,7 @@ extends GT_MetaTileEntity_MultiBlockBase { updateSlots(); return true; } + } } } return false; @@ -207,11 +209,6 @@ extends GT_MetaTileEntity_MultiBlockBase { return 0; } - @Override - public int getDamageToComponent(ItemStack aStack) { - return 0; - } - @Override public int getAmountOfOutputs() { return 1; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java index 13e80d1ca0..7f8db893c0 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java @@ -6,7 +6,6 @@ import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Config; import gregtech.api.util.GT_Recipe; @@ -18,6 +17,7 @@ import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.fluid.FluidUtils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.xmod.gregtech.api.gui.GUI_MatterFab; +import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; import java.util.ArrayList; @@ -31,7 +31,7 @@ import net.minecraftforge.fluids.FluidStack; import org.apache.commons.lang3.ArrayUtils; -public class GregtechMetaTileEntity_MassFabricator extends GT_MetaTileEntity_MultiBlockBase { +public class GregtechMetaTileEntity_MassFabricator extends GregtechMeta_MultiBlockBase { public static int sUUAperUUM = 1; public static int sUUASpeedBonus = 4; @@ -315,11 +315,6 @@ public class GregtechMetaTileEntity_MassFabricator extends GT_MetaTileEntity_Mul return true; } - @Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return true; - } - @Override public int getMaxEfficiency(ItemStack aStack) { return 10000; @@ -330,11 +325,6 @@ public class GregtechMetaTileEntity_MassFabricator extends GT_MetaTileEntity_Mul return 0; } - @Override - public int getDamageToComponent(ItemStack aStack) { - return 0; - } - @Override public int getAmountOfOutputs() { return 1; -- cgit