diff options
author | Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> | 2022-07-13 22:10:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-13 21:10:10 +0700 |
commit | f765b4e65dd2b228ab9d62c67284aa44e1ac8e23 (patch) | |
tree | 9267df8d606a3b972ac4018a561d6872f74526c4 /src/main/java/gregtech | |
parent | be86786c07bd3b214fda09766f70235e5012a75e (diff) | |
download | GT5-Unofficial-f765b4e65dd2b228ab9d62c67284aa44e1ac8e23.tar.gz GT5-Unofficial-f765b4e65dd2b228ab9d62c67284aa44e1ac8e23.tar.bz2 GT5-Unofficial-f765b4e65dd2b228ab9d62c67284aa44e1ac8e23.zip |
more tiers of quad input hatches (#1123)
Diffstat (limited to 'src/main/java/gregtech')
5 files changed, 54 insertions, 27 deletions
diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java index b50415c3ef..275a6bdd7b 100644 --- a/src/main/java/gregtech/api/enums/ItemList.java +++ b/src/main/java/gregtech/api/enums/ItemList.java @@ -973,7 +973,11 @@ public enum ItemList implements IItemContainer { Hatch_Input_UV, Hatch_Input_MAX, - Hatch_Input_Multi_2x2, + Hatch_Input_Multi_2x2_EV, + Hatch_Input_Multi_2x2_IV, + Hatch_Input_Multi_2x2_LuV, + Hatch_Input_Multi_2x2_ZPM, + Hatch_Input_Multi_2x2_UV, Hatch_Input_Bus_ULV, Hatch_Input_Bus_LV, diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java index 39599006f2..b16ec3c7c7 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java @@ -1,6 +1,5 @@ package gregtech.api.metatileentity.implementations; -import gregtech.GT_Mod; import gregtech.api.enums.ItemList; import gregtech.api.gui.GT_Container_2by2_Fluid; import gregtech.api.gui.GT_GUIContainer_2by2_Fluid; @@ -15,7 +14,7 @@ import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; -import static gregtech.api.enums.Textures.BlockIcons.*; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_INPUT_HATCH_2x2; public class GT_MetaTileEntity_Hatch_MultiInput extends GT_MetaTileEntity_Hatch_Input { @@ -29,7 +28,7 @@ public class GT_MetaTileEntity_Hatch_MultiInput extends GT_MetaTileEntity_Hatch_ } public GT_MetaTileEntity_Hatch_MultiInput(String aName, int aSlot, int aTier, String[] aDescription, ITexture[][][] aTextures) { - super(aName, aTier, aSlot, aDescription, aTextures); + super(aName, aSlot, aTier, aDescription, aTextures); this.mStoredFluid = new FluidStack[aSlot]; mCapacityPer = 8000 * (1 << aTier) / aSlot; } @@ -217,7 +216,7 @@ public class GT_MetaTileEntity_Hatch_MultiInput extends GT_MetaTileEntity_Hatch_ @Override public FluidStack drain(ForgeDirection from, FluidStack aFluid, boolean doDrain) { if (getFluid() != null && aFluid != null && getFluid().isFluidEqual(aFluid)) { - if (hasFluid(aFluid) && !canTankBeEmptied()) { + if (hasFluid(aFluid)) { FluidStack tStored = mStoredFluid[getFluidSlot(aFluid)]; if (tStored.amount <= 0 && isFluidChangingAllowed()) { setFluid(null, getFluidSlot(tStored)); diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java index c037aeb512..436c8c1e59 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java @@ -12,11 +12,7 @@ import gregtech.api.gui.GT_GUIContainer_MultiMachine; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_EnhancedMultiBlockBase; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_DataAccess; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus; +import gregtech.api.metatileentity.implementations.*; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_AssemblyLineUtils; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; @@ -173,8 +169,9 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu int[] tStack = null; int[] tFluids = null; + int[] tFluidSlot = null; boolean foundRecipe = false; - + nextDataStick: for (ItemStack tDataStick : tDataStickList) { GT_AssemblyLineUtils.LookupResult tLookupResult = GT_AssemblyLineUtils.findAssemblyLineRecipeFromDataStick(tDataStick, false); @@ -190,11 +187,11 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu continue; } } - + // So here we check against the recipe found on the data stick. // If we run into missing buses/hatches or bad inputs, we go to the next data stick. // This check only happens if we have a valid up to date data stick. - + // Check Inputs allign int aItemCount = tRecipe.mInputs.length; tStack = new int[aItemCount]; @@ -212,26 +209,37 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu GT_FML_LOGGER.info("Item: " + i + " accepted"); } } - + // Check Fluid Inputs allign int aFluidCount = tRecipe.mFluidInputs.length; tFluids = new int[aFluidCount]; + tFluidSlot = new int[aFluidCount]; for (int i = 0; i < aFluidCount; i++){ if (mInputHatches.get(i) == null) { continue nextDataStick; } else { - FluidStack fluidInHatch = mInputHatches.get(i).mFluid; - if (!GT_Utility.areFluidsEqual(fluidInHatch, tRecipe.mFluidInputs[i], true) || fluidInHatch.amount < tRecipe.mFluidInputs[i].amount) { - continue nextDataStick; + if (mInputHatches.get(i) instanceof GT_MetaTileEntity_Hatch_MultiInput) { + GT_MetaTileEntity_Hatch_MultiInput tMultiHatch = (GT_MetaTileEntity_Hatch_MultiInput) mInputHatches.get(i); + if (!tMultiHatch.hasFluid(tRecipe.mFluidInputs[i]) || tMultiHatch.getFluidAmount(tRecipe.mFluidInputs[i]) < tRecipe.mFluidInputs[i].amount) { + continue nextDataStick; + } + tFluids[i] = tRecipe.mFluidInputs[i].amount; + tFluidSlot[i] = tMultiHatch.getFluidSlot(tRecipe.mFluidInputs[i]); + } + else { + FluidStack fluidInHatch = mInputHatches.get(i).mFluid; + if (!GT_Utility.areFluidsEqual(fluidInHatch, tRecipe.mFluidInputs[i], true) || fluidInHatch.amount < tRecipe.mFluidInputs[i].amount) { + continue nextDataStick; + } + tFluids[i] = tRecipe.mFluidInputs[i].amount; } - tFluids[i] = tRecipe.mFluidInputs[i].amount; if (GT_Values.D1) { GT_FML_LOGGER.info("Fluid:" + i + " accepted"); } } } - + if (GT_Values.D1) { GT_FML_LOGGER.info("Check overclock"); } @@ -244,18 +252,18 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu continue; } if (GT_Values.D1) { - GT_FML_LOGGER.info("Find available recipe"); + GT_FML_LOGGER.info("Find available recipe"); } mOutputItems = new ItemStack[] {tRecipe.mOutput}; foundRecipe = true; break ; } - + // Best not to run this recipe. if (!foundRecipe || tStack.length <= 0) { return false; } - + if (GT_Values.D1) { GT_FML_LOGGER.info("All checked start consuming inputs"); @@ -266,9 +274,17 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu } for (int i = 0; i < tFluids.length; i++) { - mInputHatches.get(i).mFluid.amount -= tFluids[i]; - if (mInputHatches.get(i).mFluid.amount <= 0) { - mInputHatches.get(i).mFluid = null; + if (mInputHatches.get(i) instanceof GT_MetaTileEntity_Hatch_MultiInput) { + GT_MetaTileEntity_Hatch_MultiInput tMultiHatch = (GT_MetaTileEntity_Hatch_MultiInput) mInputHatches.get(i); + tMultiHatch.getFluid(tFluidSlot[i]).amount -= tFluids[i]; + if (tMultiHatch.getFluid(tFluidSlot[i]).amount <= 0) { + tMultiHatch.setFluid(null, tFluidSlot[i]); + } + } else { + mInputHatches.get(i).mFluid.amount -= tFluids[i]; + if (mInputHatches.get(i).mFluid.amount <= 0) { + mInputHatches.get(i).mFluid = null; + } } } diff --git a/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java b/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java index 2bbb599efb..31f4de8808 100644 --- a/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java +++ b/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java @@ -473,7 +473,11 @@ public class GT_MachineRecipeLoader implements Runnable { GT_Values.RA.addArcFurnaceRecipe(ItemList.Long_Distance_Pipeline_Item_Pipe.get(1L), new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.nugget, Materials.Tin, 1L), GT_OreDictUnificator.get(OrePrefixes.nugget, Materials.Steel, 1L)}, null, 10, 120); GT_Values.RA.addFluidExtractionRecipe(ItemList.Long_Distance_Pipeline_Item_Pipe.get(16L), GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.Tin, 3L), Materials.Steel.getMolten(324), 10000, 400, 90); - GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.pipeQuadruple, Materials.StainlessSteel, 1L), ItemList.Hull_EV.get(1L), GT_Utility.getIntegratedCircuit(4)}, Materials.Glass.getMolten(2304L), ItemList.Hatch_Input_Multi_2x2.get(1L), 600, 24); + GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.pipeQuadruple, Materials.StainlessSteel, 1L), ItemList.Hull_EV.get(1L), GT_Utility.getIntegratedCircuit(4)}, Materials.Glass.getMolten(2304L), ItemList.Hatch_Input_Multi_2x2_EV.get(1L), 600, 24); + GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.pipeQuadruple, Materials.Titanium, 1L), ItemList.Hull_IV.get(1L), GT_Utility.getIntegratedCircuit(4)}, Materials.Glass.getMolten(2304L), ItemList.Hatch_Input_Multi_2x2_IV.get(1L), 600, 24); + GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.pipeQuadruple, Materials.TungstenSteel, 1L), ItemList.Hull_LuV.get(1L), GT_Utility.getIntegratedCircuit(4)}, Materials.Polytetrafluoroethylene.getMolten(2304L), ItemList.Hatch_Input_Multi_2x2_LuV.get(1L), 600, 24); + GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.pipeQuadruple, Materials.NiobiumTitanium, 1L), ItemList.Hull_ZPM.get(1L), GT_Utility.getIntegratedCircuit(4)}, Materials.Polytetrafluoroethylene.getMolten(2304L), ItemList.Hatch_Input_Multi_2x2_ZPM.get(1L), 600, 24); + GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.pipeQuadruple, Materials.MysteriousCrystal, 1L), ItemList.Hull_UV.get(1L), GT_Utility.getIntegratedCircuit(4)}, Materials.Polybenzimidazole.getMolten(2304L), ItemList.Hatch_Input_Multi_2x2_UV.get(1L), 600, 24); GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Steel, 4L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1L), ItemList.Robot_Arm_IV.get(2L), GT_Utility.getIntegratedCircuit(3)}, GT_Values.NF, ItemList.Casing_Gearbox_TungstenSteel.get(1L), 200, 30); diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java index d040b08fc9..a2f00ced9c 100644 --- a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java +++ b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java @@ -228,7 +228,11 @@ public class GT_Loader_MetaTileEntities implements Runnable {//TODO CHECK CIRCUI ItemList.Hatch_Input_ZPM.set(new GT_MetaTileEntity_Hatch_Input(57, "hatch.input.tier.07", "Input Hatch (ZPM)", 7).getStackForm(1L)); ItemList.Hatch_Input_UV.set(new GT_MetaTileEntity_Hatch_Input(58, "hatch.input.tier.08", "Input Hatch (UV)", 8).getStackForm(1L)); ItemList.Hatch_Input_MAX.set(new GT_MetaTileEntity_Hatch_Input(59, "hatch.input.tier.09", "Input Hatch (UHV)", 9).getStackForm(1L)); - ItemList.Hatch_Input_Multi_2x2.set(new GT_MetaTileEntity_Hatch_MultiInput(200, 4, "hatch.multi.input.tier.01", "Quadruple Input Hatch", 4).getStackForm(1L)); + ItemList.Hatch_Input_Multi_2x2_EV.set(new GT_MetaTileEntity_Hatch_MultiInput(200, 4, "hatch.multi.input.tier.01", "Quadruple Input Hatch (EV)", 4).getStackForm(1L)); + ItemList.Hatch_Input_Multi_2x2_IV.set(new GT_MetaTileEntity_Hatch_MultiInput(710, 4, "hatch.multi.input.tier.02", "Quadruple Input Hatch (IV)", 5).getStackForm(1L)); + ItemList.Hatch_Input_Multi_2x2_LuV.set(new GT_MetaTileEntity_Hatch_MultiInput(711, 4, "hatch.multi.input.tier.03", "Quadruple Input Hatch (LuV)", 6).getStackForm(1L)); + ItemList.Hatch_Input_Multi_2x2_ZPM.set(new GT_MetaTileEntity_Hatch_MultiInput(712, 4, "hatch.multi.input.tier.04", "Quadruple Input Hatch (ZPM)", 7).getStackForm(1L)); + ItemList.Hatch_Input_Multi_2x2_UV.set(new GT_MetaTileEntity_Hatch_MultiInput(713, 4, "hatch.multi.input.tier.05", "Quadruple Input Hatch (UV)", 8).getStackForm(1L)); ItemList.Hatch_Output_ULV.set(new GT_MetaTileEntity_Hatch_Output(60, "hatch.output.tier.00", "Output Hatch (ULV)", 0).getStackForm(1L)); ItemList.Hatch_Output_LV.set(new GT_MetaTileEntity_Hatch_Output(61, "hatch.output.tier.01", "Output Hatch (LV)", 1).getStackForm(1L)); |