From d48674f9c4243fe4439999e59c798a13113f3037 Mon Sep 17 00:00:00 2001 From: Christina Berchtold Date: Thu, 23 Apr 2020 22:06:32 +0200 Subject: Fixed Multi Hatch ignoring circuit in controller when drained from --- config/IC2.ini | 2 +- config/splash.properties | 2 +- options.txt | 4 ++++ src/main/java/kekztech/KekzCore.java | 2 +- src/main/java/kekztech/MultiFluidHandler.java | 21 +++++++++++++++++++++ .../java/tileentities/GTMTE_FluidMultiStorage.java | 14 ++++++++++---- src/main/java/tileentities/TE_TFFTMultiHatch.java | 7 +++++-- 7 files changed, 43 insertions(+), 9 deletions(-) diff --git a/config/IC2.ini b/config/IC2.ini index fa85e91926..7849244d49 100644 --- a/config/IC2.ini +++ b/config/IC2.ini @@ -1,5 +1,5 @@ ; ic2 general config -; created Apr 13, 2020 6:20:15 PM +; created Apr 23, 2020 8:50:49 PM ;--- [worldgen] diff --git a/config/splash.properties b/config/splash.properties index 8953d81490..2e2172118a 100644 --- a/config/splash.properties +++ b/config/splash.properties @@ -1,5 +1,5 @@ #Splash screen properties -#Mon Apr 13 18:20:02 CEST 2020 +#Thu Apr 23 20:50:25 CEST 2020 logoTexture=textures/gui/title/mojang.png background=0xFFFFFF font=0x0 diff --git a/options.txt b/options.txt index f087516d51..e851f7e842 100644 --- a/options.txt +++ b/options.txt @@ -90,6 +90,10 @@ key_Boost Key:0 key_Mode Switch Key:0 key_Side Inventory Key:0 key_Hub Expand Key:0 +key_Baubles Inventory:48 +key_Change Wand Focus:33 +key_Activate Hover Harness:35 +key_Misc Wand Toggle:34 key_Glider Toggle:34 key_Sound Locator:38 key_Night Vision:25 diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java index 56645e9050..cff0a69b0a 100644 --- a/src/main/java/kekztech/KekzCore.java +++ b/src/main/java/kekztech/KekzCore.java @@ -133,7 +133,7 @@ public class KekzCore { } @Mod.EventHandler - public void init(FMLInitializationEvent event ) { + public void init(FMLInitializationEvent event) { // Multiblock controllers sofc1 = new GTMTE_SOFuelCellMK1(13101, "multimachine.fuelcellmk1", "Solid-Oxide Fuel Cell Mk I"); sofc2 = new GTMTE_SOFuelCellMK2(13102, "multimachine.fuelcellmk2", "Solid-Oxide Fuel Cell Mk II"); diff --git a/src/main/java/kekztech/MultiFluidHandler.java b/src/main/java/kekztech/MultiFluidHandler.java index a96094a8f0..880576ca7e 100644 --- a/src/main/java/kekztech/MultiFluidHandler.java +++ b/src/main/java/kekztech/MultiFluidHandler.java @@ -15,6 +15,7 @@ public class MultiFluidHandler { private int capacityPerFluid; private boolean locked = true; + private byte fluidSelector = -1; public MultiFluidHandler() { @@ -39,6 +40,26 @@ public class MultiFluidHandler { locked = state; } + /** + * Used to tell the MFH if a fluid is selected by + * an Integrated Circuit in the controller. + * + * @param fluidSelector + * Selected fluid or -1 if no fluid is selected + */ + public void setFluidSelector(byte fluidSelector) { + this.fluidSelector = fluidSelector; + } + + /** + * + * @return + * Selected fluid or -1 if no fluid is selected + */ + public byte getSelectedFluid() { + return fluidSelector; + } + public boolean contains(FluidStack fluid) { return !locked && fluids.contains(fluid); } diff --git a/src/main/java/tileentities/GTMTE_FluidMultiStorage.java b/src/main/java/tileentities/GTMTE_FluidMultiStorage.java index f220da2dbc..c14b9608c4 100644 --- a/src/main/java/tileentities/GTMTE_FluidMultiStorage.java +++ b/src/main/java/tileentities/GTMTE_FluidMultiStorage.java @@ -46,6 +46,8 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { private int runningCost = 0; private boolean doVoidExcess = false; + + private byte fluidSelector = 0; public GTMTE_FluidMultiStorage(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); @@ -115,7 +117,11 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { super.mEfficiencyIncrease = 10000; super.mEUt = runningCost; super.mMaxProgresstime = 10; - + + if(guiSlotItem != null && guiSlotItem.getUnlocalizedName().equals("gt.integrated_circuit")) { + this.fluidSelector = (byte) guiSlotItem.getItemDamage(); + } + // If there are no basic I/O hatches, let multi hatches handle it and skip a lot of code! if (multiHatches.size() > 0 && super.mInputHatches.size() == 0 && super.mOutputHatches.size() == 0) { return true; @@ -143,8 +149,7 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { // Push out fluids if (guiSlotItem != null && guiSlotItem.getUnlocalizedName().equals("gt.integrated_circuit")) { - final int config = guiSlotItem.getItemDamage(); - final FluidStack storedFluid = mfh.getFluid(config); + final FluidStack storedFluid = mfh.getFluid(fluidSelector); // Sum available output capacity int possibleOutput = 0; for (GT_MetaTileEntity_Hatch_Output outputHatch : super.mOutputHatches) { @@ -159,7 +164,7 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { // Output as much as possible final FluidStack tempStack = storedFluid.copy(); tempStack.amount = possibleOutput; - tempStack.amount = mfh.pullFluid(tempStack, config, true); + tempStack.amount = mfh.pullFluid(tempStack, fluidSelector, true); super.addOutput(tempStack); } else { @@ -193,6 +198,7 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { if (mfh != null) { mfh.setLock(!super.getBaseMetaTileEntity().isActive()); + mfh.setFluidSelector(fluidSelector); } } diff --git a/src/main/java/tileentities/TE_TFFTMultiHatch.java b/src/main/java/tileentities/TE_TFFTMultiHatch.java index 1f92f924c4..5e652b3cd8 100644 --- a/src/main/java/tileentities/TE_TFFTMultiHatch.java +++ b/src/main/java/tileentities/TE_TFFTMultiHatch.java @@ -19,7 +19,7 @@ import net.minecraftforge.fluids.IFluidHandler; public class TE_TFFTMultiHatch extends TileEntity implements IFluidHandler { - private static final int OUTPUT_SPEED = 100; // L/s + private static final int OUTPUT_SPEED = 1000; // L/s private MultiFluidHandler mfh; private int tickCounter = 0; @@ -126,9 +126,12 @@ public class TE_TFFTMultiHatch extends TileEntity implements IFluidHandler { if(mfh != null) { final FluidStack drain = mfh.getFluid(0); if(drain != null) { + // If there's no integrated circuit in the TFFT controller, output slot 0 + final byte selectedSlot = (mfh.getSelectedFluid() == -1) ? 0 : mfh.getSelectedFluid(); + return new FluidStack( drain.getFluid(), - mfh.pullFluid(new FluidStack(drain.getFluid(), maxDrain), 0, doDrain) + mfh.pullFluid(new FluidStack(drain.getFluid(), maxDrain), selectedSlot, doDrain) ); } } -- cgit