From 4fd354bed6a53a9319392b5a300cb8aa77cacb34 Mon Sep 17 00:00:00 2001 From: Alkalus Date: Fri, 8 Sep 2017 20:35:09 +1000 Subject: $ Improved multiblock recipe handling. --- src/Java/gregtech/api/util/CustomRecipeMap.java | 29 ++- .../api/util/MultiblockRecipeMapHandler.java | 194 +++++++++++++++++++++ .../gtPlusPlus/core/handler/COMPAT_HANDLER.java | 8 +- src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java | 4 +- ...regtechMetaTileEntity_IndustrialCentrifuge.java | 12 +- ...gtechMetaTileEntity_IndustrialElectrolyzer.java | 19 +- ...GregtechMetaTileEntity_IndustrialMacerator.java | 30 ++-- .../GregtechMetaTileEntity_IndustrialWireMill.java | 17 +- .../recipes/MultiblockRecipeMapHandler.java | 170 ------------------ 9 files changed, 265 insertions(+), 218 deletions(-) create mode 100644 src/Java/gregtech/api/util/MultiblockRecipeMapHandler.java delete mode 100644 src/Java/gtPlusPlus/xmod/gregtech/recipes/MultiblockRecipeMapHandler.java diff --git a/src/Java/gregtech/api/util/CustomRecipeMap.java b/src/Java/gregtech/api/util/CustomRecipeMap.java index 3a0f1724b0..d01beb1486 100644 --- a/src/Java/gregtech/api/util/CustomRecipeMap.java +++ b/src/Java/gregtech/api/util/CustomRecipeMap.java @@ -22,6 +22,14 @@ public class CustomRecipeMap/* extends GT_Recipe_Map*/{ //Fission Fuel Plant Recipes public static final CustomRecipeMap sFissionFuelProcessing = new CustomRecipeMap(new HashSet(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 4, 1, E, 1, E, true, true); + + public static final CustomRecipeMap mMultiWireMill = new CustomRecipeMap(new HashSet(500), "gt.recipe.multi.wiremill", "Multiblock Wiremill", null, RES_PATH_GUI + "basicmachines/FissionFuel", 1, 1, 0, 0, 1, E, 1, E, true, true); + public static final CustomRecipeMap mMultiMacerator = new CustomRecipeMap(new HashSet(500), "gt.recipe.multi.macerator", "Maceration Stack", null, RES_PATH_GUI + "basicmachines/FissionFuel", 1, 3, 0, 0, 1, E, 1, E, true, true); + public static final CustomRecipeMap mMultiCentrifuge = new CustomRecipeMap(new HashSet(500), "gt.recipe.multi.centrifuge", "Multiblock Centrifuge", null, RES_PATH_GUI + "basicmachines/FissionFuel", 2, 6, 0, 0, 1, E, 1, E, true, true); + public static final CustomRecipeMap mMultiElectrolyzer = new CustomRecipeMap(new HashSet(500), "gt.recipe.multi.electrolyzer", "Multiblock Electrolyzer", null, RES_PATH_GUI + "basicmachines/FissionFuel", 2, 6, 0, 0, 1, E, 1, E, true, true); + + + /** * HashMap of Recipes based on their Items */ @@ -101,7 +109,7 @@ public class CustomRecipeMap/* extends GT_Recipe_Map*/{ return this.addRecipe(aRecipe, true, false, false); } - protected GT_Recipe addRecipe(final GT_Recipe aRecipe, final boolean aCheckForCollisions, final boolean aFakeRecipe, final boolean aHidden) { + public GT_Recipe addRecipe(final GT_Recipe aRecipe, final boolean aCheckForCollisions, final boolean aFakeRecipe, final boolean aHidden) { aRecipe.mHidden = aHidden; aRecipe.mFakeRecipe = aFakeRecipe; if ((aRecipe.mFluidInputs.length < this.mMinimalInputFluids) && (aRecipe.mInputs.length < this.mMinimalInputItems)) { @@ -255,27 +263,38 @@ public class CustomRecipeMap/* extends GT_Recipe_Map*/{ // Check the Recipe which has been used last time in order to not have to search for it again, if possible. if (aRecipe != null) { if (!aRecipe.mFakeRecipe && aRecipe.mCanBeBuffered && aRecipe.isRecipeInputEqual(false, true, aFluids, aInputs)) { + Utils.LOG_INFO("BAD RECIPE [a]"); return aRecipe.mEnabled && ((aVoltage * this.mAmperage) >= aRecipe.mEUt) ? aRecipe : null; } } // Now look for the Recipes inside the Item HashMaps, but only when the Recipes usually have Items. if ((this.mUsualInputCount > 0) && (aInputs != null)) { + Utils.LOG_INFO("BAD RECIPE [b0]"); for (final ItemStack tStack : aInputs) { + Utils.LOG_INFO("BAD RECIPE [b1]"); if (tStack != null) { + Utils.LOG_INFO("BAD RECIPE [b2] | "+tStack.getDisplayName()); Collection tRecipes = this.mRecipeItemMap.get(new GT_ItemStack(tStack)); if (tRecipes != null) { + Utils.LOG_INFO("BAD RECIPE [b3]"); for (final GT_Recipe tRecipe : tRecipes) { + Utils.LOG_INFO("BAD RECIPE [b4]"); if (!tRecipe.mFakeRecipe && tRecipe.isRecipeInputEqual(false, true, aFluids, aInputs)) { + Utils.LOG_INFO("BAD RECIPE [b5]"); return tRecipe.mEnabled && ((aVoltage * this.mAmperage) >= tRecipe.mEUt) ? tRecipe : null; } } } + Utils.LOG_INFO("BAD RECIPE [b6]"); tRecipes = this.mRecipeItemMap.get(new GT_ItemStack(GT_Utility.copyMetaData(W, tStack))); if (tRecipes != null) { + Utils.LOG_INFO("BAD RECIPE [b7]"); for (final GT_Recipe tRecipe : tRecipes) { + Utils.LOG_INFO("BAD RECIPE [b8]"); if (!tRecipe.mFakeRecipe && tRecipe.isRecipeInputEqual(false, true, aFluids, aInputs)) { + Utils.LOG_INFO("BAD RECIPE [b9]"); return tRecipe.mEnabled && ((aVoltage * this.mAmperage) >= tRecipe.mEUt) ? tRecipe : null; } } @@ -285,14 +304,20 @@ public class CustomRecipeMap/* extends GT_Recipe_Map*/{ } // If the minimal Amount of Items for the Recipe is 0, then it could be a Fluid-Only Recipe, so check that Map too. - if ((this.mMinimalInputItems == 0) && (aFluids != null)) { + if ((this.mMinimalInputItems == 0) && (aFluids != null && aFluids.length > 0)) { + Utils.LOG_INFO("BAD RECIPE [c0] "+aFluids.length); for (final FluidStack aFluid : aFluids) { + Utils.LOG_INFO("BAD RECIPE [c1]"); if (aFluid != null) { + Utils.LOG_INFO("BAD RECIPE [c2]"); final Collection tRecipes = this.mRecipeFluidMap.get(aFluid.getFluid()); if (tRecipes != null) { + Utils.LOG_INFO("BAD RECIPE [c3]"); for (final GT_Recipe tRecipe : tRecipes) { + Utils.LOG_INFO("BAD RECIPE [c4]"); if (!tRecipe.mFakeRecipe && tRecipe.isRecipeInputEqual(false, true, aFluids, aInputs)) { + Utils.LOG_INFO("BAD RECIPE [c5]"); return tRecipe.mEnabled && ((aVoltage * this.mAmperage) >= tRecipe.mEUt) ? tRecipe : null; } } diff --git a/src/Java/gregtech/api/util/MultiblockRecipeMapHandler.java b/src/Java/gregtech/api/util/MultiblockRecipeMapHandler.java new file mode 100644 index 0000000000..143f465233 --- /dev/null +++ b/src/Java/gregtech/api/util/MultiblockRecipeMapHandler.java @@ -0,0 +1,194 @@ +package gregtech.api.util; + +import java.util.ArrayList; +import java.util.Collection; + +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Recipe.GT_Recipe_Map; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.math.MathUtils; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidStack; + +public class MultiblockRecipeMapHandler{ + + public static void run() { + + if(CORE.configSwitches.enableMultiblock_IndustrialElectrolyzer){ + generateSimpleMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes, CustomRecipeMap.mMultiElectrolyzer); + } + if(CORE.configSwitches.enableMultiblock_IndustrialCentrifuge){ + generateSimpleMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes, CustomRecipeMap.mMultiCentrifuge); + } + if(CORE.configSwitches.enableMultiblock_IndustrialMacerationStack){ + generateSimpleMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sMaceratorRecipes, CustomRecipeMap.mMultiMacerator); + } + if(CORE.configSwitches.enableMultiblock_IndustrialWireMill){ + generateSimpleMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sWiremillRecipes, CustomRecipeMap.mMultiWireMill); + } + + } + + + + + + + + + + + + + + + + + + + + + + + + public static boolean isCell(ItemStack cell) { + if (cell == null){ + return false; + } + if (cell.getDisplayName().toLowerCase().contains("cell") + || cell.getUnlocalizedName().toLowerCase().contains("cell") + || FluidContainerRegistry.isFilledContainer(cell)) { + if (cell.getDisplayName().toLowerCase().contains("plasma") + || cell.getUnlocalizedName().toLowerCase().contains("plasma")) { + return false; + } + return true; + } + return false; + } + + public static boolean isCellEmpty(ItemStack cell){ + if (cell.getDisplayName().toLowerCase().contains("empty") + || cell.getUnlocalizedName().toLowerCase().contains("empty") + ) { + return true; + } + return false; + } + + private static ItemStack[] copyItemElements(ItemStack[] items){ + int inputCount = 0; + ItemStack[] item = new ItemStack[9]; + for (ItemStack input : items) { + if (!isCell(input)){ + item[inputCount] = input; + inputCount++; + } + } + return item; + } + + private static ItemStack[] copyItemElementsWithCells(ItemStack[] items){ + int inputCount = 0; + ItemStack[] item = new ItemStack[9]; + for (ItemStack input : items) { + item[inputCount] = input; + inputCount++; + } + return item; + } + + private static FluidStack[] copyFluidElements(FluidStack[] fluids){ + FluidStack fluid[] = new FluidStack[9]; + for (int r = 0; r fluidInputs = new ArrayList(); + + for (FluidStack fluid : fluids){ + fluidInputs.add(fluid); + } + + for (ItemStack input : items) { + if (input != null){ + if (isCell(input) && !isCellEmpty(input)){ + FluidStack cellFluid = FluidContainerRegistry.getFluidForFilledItem(input); + if (cellFluid != null){ + cellFluid.amount = 1000; + fluidInputs.add(cellFluid); + } + } + } + } + FluidStack[] returnArray = new FluidStack[fluidInputs.size()]; + for (int h=0;h x = r.mRecipeList; + for (final GT_Recipe newBo : x) { + int duration = MathUtils.findPercentageOfInt(newBo.mDuration, 80); + if (newMap.addRecipe(new GT_Recipe(true, newBo.mInputs, newBo.mOutputs, newBo.mSpecialItems, newBo.mChances, newBo.mFluidInputs, newBo.mFluidOutputs, duration, newBo.mEUt, newBo.mSpecialValue), false, true, true) != null){ + Utils.LOG_INFO("Successfully added a simple recipe to the "+newMap.mNEIName+" map."); + } + else { + Utils.LOG_INFO("Failed adding a simple recipe to the "+newMap.mNEIName+" map."); + } + } + } + + private static void generateMultimachineRecipeMap(GT_Recipe_Map inputMap, CustomRecipeMap newMap) { + GT_Recipe_Map r = inputMap; + final Collection x = r.mRecipeList; + for (final GT_Recipe newBo : x) { + ItemStack[] mInputs = copyItemElementsWithCells(newBo.mInputs); + ItemStack[] mOutputs = copyItemElementsWithCells(newBo.mOutputs); + FluidStack[] mFluidInputs = copyFluidElements(newBo.mFluidInputs); + FluidStack[] mFluidOutputs = copyFluidElements(newBo.mFluidOutputs); + int duration = MathUtils.findPercentageOfInt(newBo.mDuration, 80); + + //Change bonus chances + int[] outputChances = null; + if (newBo.mChances != null){ + outputChances = newBo.mChances.clone(); + for (int g=0;g 1; @@ -103,7 +100,7 @@ extends GregtechMeta_MultiBlockBase { }*/ Utils.LOG_WARNING("Centrifuge Debug - 1"); - final GT_Recipe.GT_Recipe_Map map = this.getRecipeMap(); + final GT_Recipe_Map map = GT_Recipe_Map.sCentrifugeRecipes; if (map == null) { Utils.LOG_WARNING("Centrifuge Debug - False - No recipe map"); return false; @@ -118,6 +115,7 @@ extends GregtechMeta_MultiBlockBase { final FluidStack[] tFluids = tFluidList.toArray(new FluidStack[tFluidList.size()]); if ((tInputList.size() > 0) || (tFluids.length > 0)) { final GT_Recipe tRecipe = map.findRecipe(this.getBaseMetaTileEntity(), this.mLastRecipe, false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs); + tRecipe.mDuration = MathUtils.findPercentageOfInt(tRecipe.mDuration, 80); if (tRecipe != null) { Utils.LOG_WARNING("Recipe was not invalid"); this.mLastRecipe = tRecipe; 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 523886578e..5234fa0a01 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 @@ -13,14 +13,16 @@ import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.util.CustomRecipeMap; import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Recipe.GT_Recipe_Map; 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.math.MathUtils; import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; -import gtPlusPlus.xmod.gregtech.recipes.MultiblockRecipeMapHandler; import net.minecraft.block.Block; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -71,11 +73,6 @@ extends GregtechMeta_MultiBlockBase { return new GUI_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), "IndustrialElectrolyzer.png"); } - @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { - return MultiblockRecipeMapHandler.mMultiElectrolyzer; - } - @Override public boolean isFacingValid(final byte aFacing) { return aFacing > 1; @@ -123,7 +120,15 @@ extends GregtechMeta_MultiBlockBase { if ((tInputList.size() > 0) && (tValidOutputSlots >= 1)) { final long tVoltage = this.getMaxInputVoltage(); final byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage)); - final GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes.findRecipe(this.getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs); + + + + final GT_Recipe_Map map = GT_Recipe_Map.sElectrolyzerRecipes; + final GT_Recipe tRecipe = map.findRecipe(this.getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs); + + tRecipe.mDuration = MathUtils.findPercentageOfInt(tRecipe.mDuration, 80); + + if ((tRecipe != null) && (7500 >= tRecipe.mSpecialValue) && (tRecipe.isRecipeInputEqual(true, tFluids, tInputs))) { this.mEfficiency = (10000 - ((this.getIdealStatus() - this.getRepairStatus()) * 1000)); this.mEfficiencyIncrease = 10000; 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 134bec0d4e..a3cc09cb24 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,15 +12,17 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus; import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.util.CustomRecipeMap; import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Recipe.GT_Recipe_Map; 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.math.MathUtils; 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; -import gtPlusPlus.xmod.gregtech.recipes.MultiblockRecipeMapHandler; import net.minecraft.block.Block; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -70,16 +72,6 @@ extends GregtechMeta_MultiBlockBase { return new GUI_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), "MacerationStack.png"); } - @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { - return MultiblockRecipeMapHandler.mMultiMacerator; - } - - /*@Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return true; - }*/ - @Override public boolean isFacingValid(final byte aFacing) { return aFacing > 1; @@ -134,16 +126,20 @@ extends GregtechMeta_MultiBlockBase { } //Make a recipe instance for the rest of the method. - final GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.findRecipe(this.getBaseMetaTileEntity(), false, 9223372036854775807L, null, tInputs); + final GT_Recipe_Map map = GT_Recipe_Map.sMaceratorRecipes; + final GT_Recipe tRecipe = map.findRecipe(this.getBaseMetaTileEntity(), false, 9223372036854775807L, null, tInputs); + + tRecipe.mDuration = MathUtils.findPercentageOfInt(tRecipe.mDuration, 80); + final int tValidOutputSlots = this.getValidOutputSlots(this.getBaseMetaTileEntity(), tRecipe, tInputs); - Utils.LOG_WARNING("Maceration Stack - Valid Output Hatches: "+tValidOutputSlots); + Utils.LOG_INFO("Maceration Stack - Valid Output Hatches: "+tValidOutputSlots); //More than or one input if ((tInputList.size() > 0) && (tValidOutputSlots >= 1)) { if ((tRecipe != null) && (tRecipe.isRecipeInputEqual(true, null, tInputs))) { - Utils.LOG_WARNING("Valid Recipe found - size "+tRecipe.mOutputs.length); + Utils.LOG_INFO("Valid Recipe found - size "+tRecipe.mOutputs.length); this.mEfficiency = (10000 - ((this.getIdealStatus() - this.getRepairStatus()) * 1000)); this.mEfficiencyIncrease = 10000; @@ -153,15 +149,15 @@ extends GregtechMeta_MultiBlockBase { final ItemStack[] outputs = new ItemStack[tRecipe.mOutputs.length]; for (int i = 0; i < tRecipe.mOutputs.length; i++){ if (i==0) { - Utils.LOG_WARNING("Adding the default output"); + Utils.LOG_INFO("Adding the default output"); outputs[0] = tRecipe.getOutput(i); } else if (this.getBaseMetaTileEntity().getRandomNumber(7500) < tRecipe.getOutputChance(i)){ - Utils.LOG_WARNING("Adding a bonus output"); + Utils.LOG_INFO("Adding a bonus output"); outputs[i] = tRecipe.getOutput(i); } else { - Utils.LOG_WARNING("Adding null output"); + Utils.LOG_INFO("Adding null output"); outputs[i] = null; } } 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 833178a1ae..6ea80f1afe 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 @@ -10,14 +10,16 @@ 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.objects.GT_RenderedTexture; +import gregtech.api.util.CustomRecipeMap; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; +import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; -import gtPlusPlus.xmod.gregtech.recipes.MultiblockRecipeMapHandler; import net.minecraft.block.Block; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -64,11 +66,6 @@ extends GregtechMeta_MultiBlockBase { return new GUI_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), "WireFactory.png"); } - @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { - return MultiblockRecipeMapHandler.mMultiWireMill; - } - @Override public boolean isFacingValid(final byte aFacing) { return aFacing > 1; @@ -81,7 +78,11 @@ extends GregtechMeta_MultiBlockBase { final long tVoltage = this.getMaxInputVoltage(); final byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage)); - final GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sWiremillRecipes.findRecipe(this.getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], null, new ItemStack[]{tInput}); + + final GT_Recipe_Map map = GT_Recipe_Map.sWiremillRecipes; + final GT_Recipe tRecipe = map.findRecipe(this.getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], null, new ItemStack[]{tInput}); + + tRecipe.mDuration = MathUtils.findPercentageOfInt(tRecipe.mDuration, 80); if (tRecipe != null) { final int tValidOutputSlots = this.getValidOutputSlots(this.getBaseMetaTileEntity(), tRecipe, new ItemStack[]{tInput}); @@ -231,7 +232,7 @@ extends GregtechMeta_MultiBlockBase { public byte getCasingTextureIndex() { - return 1; + return (byte) TAE.GTPP_INDEX(6); } private boolean addToMachineList(final IGregTechTileEntity tTileEntity) { diff --git a/src/Java/gtPlusPlus/xmod/gregtech/recipes/MultiblockRecipeMapHandler.java b/src/Java/gtPlusPlus/xmod/gregtech/recipes/MultiblockRecipeMapHandler.java deleted file mode 100644 index 5680951cae..0000000000 --- a/src/Java/gtPlusPlus/xmod/gregtech/recipes/MultiblockRecipeMapHandler.java +++ /dev/null @@ -1,170 +0,0 @@ -package gtPlusPlus.xmod.gregtech.recipes; - -import static gregtech.api.enums.GT_Values.E; -import static gregtech.api.enums.GT_Values.RES_PATH_GUI; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; - -import gregtech.api.util.CustomRecipeMap; -import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Recipe.GT_Recipe_Map; -import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.Utils; -import gtPlusPlus.core.util.math.MathUtils; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidStack; - -public class MultiblockRecipeMapHandler{ - - public static final CustomRecipeMap mMultiElectrolyzer = new CustomRecipeMap(new HashSet(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 0, 1, E, 1, E, true, true); - public static final CustomRecipeMap mMultiCentrifuge = new CustomRecipeMap(new HashSet(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 0, 1, E, 1, E, true, true); - public static final CustomRecipeMap mMultiMacerator = new CustomRecipeMap(new HashSet(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 0, 1, E, 1, E, true, true); - public static final CustomRecipeMap mMultiWireMill = new CustomRecipeMap(new HashSet(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 0, 1, E, 1, E, true, true); - - - - public static void run() { - - if(CORE.configSwitches.enableMultiblock_IndustrialElectrolyzer){ - generateMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes, mMultiElectrolyzer); - } - if(CORE.configSwitches.enableMultiblock_IndustrialCentrifuge){ - generateMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes, mMultiCentrifuge); - } - if(CORE.configSwitches.enableMultiblock_IndustrialMacerationStack){ - generateMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sMaceratorRecipes, mMultiMacerator); - } - if(CORE.configSwitches.enableMultiblock_IndustrialWireMill){ - generateMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sWiremillRecipes, mMultiWireMill); - } - - } - - - - - - - - - - - - - - - - - - - - - - - - public static boolean isCell(ItemStack cell) { - if (cell.getDisplayName().toLowerCase().contains("cell") - || cell.getUnlocalizedName().toLowerCase().contains("cell") - || FluidContainerRegistry.isFilledContainer(cell)) { - if (cell.getDisplayName().toLowerCase().contains("plasma") - || cell.getUnlocalizedName().toLowerCase().contains("plasma")) { - return false; - } - return true; - } - return false; - } - - public static boolean isCellEmpty(ItemStack cell){ - if (cell.getDisplayName().toLowerCase().contains("empty") - || cell.getUnlocalizedName().toLowerCase().contains("empty") - ) { - return true; - } - return false; - } - - private static ItemStack[] copyItemElements(ItemStack[] items){ - int inputCount = 0; - ItemStack[] item = new ItemStack[9]; - for (ItemStack input : items) { - if (!isCell(input)){ - item[inputCount] = input; - inputCount++; - } - } - return item; - } - - private FluidStack[] copyFluidElements(FluidStack[] fluids){ - FluidStack fluid[] = new FluidStack[9]; - for (int r = 0; r fluidInputs = new ArrayList(); - - for (FluidStack fluid : fluids){ - fluidInputs.add(fluid); - } - - for (ItemStack input : items) { - if (isCell(input) && !isCellEmpty(input)){ - FluidStack cellFluid = FluidContainerRegistry.getFluidForFilledItem(input); - cellFluid.amount = 1000; - fluidInputs.add(cellFluid); - } - } - FluidStack[] returnArray = new FluidStack[fluidInputs.size()]; - for (int h=0;h x = r.mRecipeList; - for (final GT_Recipe newBo : x) { - ItemStack[] mInputs = copyItemElements(newBo.mInputs); - ItemStack[] mOutputs = copyItemElements(newBo.mOutputs); - FluidStack[] mFluidInputs = addRemovedCellsToArray(newBo.mInputs, newBo.mFluidInputs); - FluidStack[] mFluidOutputs = addRemovedCellsToArray(newBo.mOutputs, newBo.mFluidOutputs); - int duration = MathUtils.findPercentageOfInt(newBo.mDuration, 80); - - //Change bonus chances - int[] outputChances = null; - if (newBo.mChances != null){ - outputChances = newBo.mChances.clone(); - for (int g=0;g