diff options
author | xSkewer <43712386+xSkewer@users.noreply.github.com> | 2022-07-30 20:47:09 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-31 01:47:09 +0100 |
commit | 1509190b22c4a17c22af952d433241139a6c83cf (patch) | |
tree | f609bafd7de61b5278b0a872ddbe9f72d49c0226 /src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines | |
parent | 1e16d65c9602909d56762af673fac50f0cf2bf4c (diff) | |
download | GT5-Unofficial-1509190b22c4a17c22af952d433241139a6c83cf.tar.gz GT5-Unofficial-1509190b22c4a17c22af952d433241139a6c83cf.tar.bz2 GT5-Unofficial-1509190b22c4a17c22af952d433241139a6c83cf.zip |
Allow input bus separation on the Alloy Blast Smelter (#257)
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines')
-rw-r--r-- | src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java | 64 |
1 files changed, 51 insertions, 13 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java index 85dc74db45..2912ce4c5e 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java @@ -23,8 +23,11 @@ import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.StatCollector; import net.minecraftforge.fluids.FluidStack; import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; @@ -35,6 +38,7 @@ public class GregtechMetaTileEntity_AlloyBlastSmelter extends GregtechMeta_Multi private int mMode = 0; private boolean isUsingControllerCircuit = false; + private boolean isBussesSeparate = false; private static Item circuit; private int mCasing; private IStructureDefinition<GregtechMetaTileEntity_AlloyBlastSmelter> STRUCTURE_DEFINITION = null; @@ -59,6 +63,18 @@ public class GregtechMetaTileEntity_AlloyBlastSmelter extends GregtechMeta_Multi } @Override + public void saveNBTData(NBTTagCompound aNBT) { + super.saveNBTData(aNBT); + aNBT.setBoolean("isBussesSeparate", isBussesSeparate); + } + + @Override + public void loadNBTData(final NBTTagCompound aNBT) { + super.loadNBTData(aNBT); + isBussesSeparate = aNBT.getBoolean("isBussesSeparate"); + } + + @Override protected GT_Multiblock_Tooltip_Builder createTooltip() { GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); tt.addMachineType(getMachineType()) @@ -222,22 +238,40 @@ public class GregtechMetaTileEntity_AlloyBlastSmelter extends GregtechMeta_Multi public boolean checkRecipe(final ItemStack aStack) { if (this.getBaseMetaTileEntity().isServerSide()) { + + ArrayList<ItemStack> tInputList = null; //Get Controller Circuit this.isUsingControllerCircuit = isCorrectMachinePart(aStack); - - final ArrayList<ItemStack> tInputList = this.getStoredInputs(); - for (int i = 0; i < (tInputList.size() - 1); i++) { - for (int j = i + 1; j < tInputList.size(); j++) { - if (GT_Utility.areStacksEqual(tInputList.get(i), tInputList.get(j))) { - if (tInputList.get(i).stackSize >= tInputList.get(j).stackSize) { - tInputList.remove(j--); - } else { - tInputList.remove(i--); - break; + + if (isBussesSeparate) { + for (GT_MetaTileEntity_Hatch_InputBus tBus : mInputBusses) { + tInputList = new ArrayList<>(); + tBus.mRecipeMap = getRecipeMap(); + + if (isValidMetaTileEntity(tBus)) { + for (int i = tBus.getBaseMetaTileEntity().getSizeInventory() - 1; i >= 0; i--) { + if (tBus.getBaseMetaTileEntity().getStackInSlot(i) != null) { + tInputList.add(tBus.getBaseMetaTileEntity().getStackInSlot(i)); + } + } + } + } + } else { + tInputList = this.getStoredInputs(); + for (int i = 0; i < (tInputList.size() - 1); i++) { + for (int j = i + 1; j < tInputList.size(); j++) { + if (GT_Utility.areStacksEqual(tInputList.get(i), tInputList.get(j))) { + if (tInputList.get(i).stackSize >= tInputList.get(j).stackSize) { + tInputList.remove(j--); + } else { + tInputList.remove(i--); + break; + } } } } } + final ItemStack[] tInputs = Arrays.copyOfRange(tInputList.toArray(new ItemStack[tInputList.size()]), 0, tInputList.size()); //Validity check if ((isUsingControllerCircuit && tInputList.size() < 1) || (!isUsingControllerCircuit && tInputList.size() < 2)) { @@ -248,9 +282,6 @@ public class GregtechMetaTileEntity_AlloyBlastSmelter extends GregtechMeta_Multi tInputList.add(CI.getNumberedCircuit(this.mMode)); } - - final ItemStack[] tInputs = Arrays.copyOfRange(tInputList.toArray(new ItemStack[tInputList.size()]), 0, tInputList.size()); - final ArrayList<FluidStack> tFluidList = this.getStoredFluids(); for (int i = 0; i < (tFluidList.size() - 1); i++) { for (int j = i + 1; j < tFluidList.size(); j++) { @@ -305,6 +336,13 @@ public class GregtechMetaTileEntity_AlloyBlastSmelter extends GregtechMeta_Multi Logger.WARNING("Failed to find some Valid Inputs or Clientside."); return false; } + + @Override + public boolean onWireCutterRightClick(byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { + isBussesSeparate = !isBussesSeparate; + GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal("GT5U.machines.separatebus") + " " + isBussesSeparate); + return true; + } @Override public int getMaxParallelRecipes() { |