diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java index 75c6c4dc3a..2b65e36994 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java @@ -19,31 +19,49 @@ import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidContainerItem; import net.minecraftforge.fluids.IFluidHandler; + public class GT_Cover_Fluidfilter extends GT_CoverBehavior { + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) { return aCoverVariable; } + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { + int aFilterMode = aCoverVariable & 7; + aCoverVariable ^=aFilterMode; + aFilterMode = (aFilterMode + (aPlayer.isSneaking()? -1 : 1)) % 4; + if(aFilterMode < 0){aFilterMode = 3;} + switch(aFilterMode) { + case 0: GT_Utility.sendChatToPlayer(aPlayer, "Allow input, no output"); break; + case 1: GT_Utility.sendChatToPlayer(aPlayer, "Deny input, no output"); break; + case 2: GT_Utility.sendChatToPlayer(aPlayer, "Allow input, permit any output"); break; + case 3: GT_Utility.sendChatToPlayer(aPlayer, "Deny input, permit any output"); break; + } + aCoverVariable|=aFilterMode; + return aCoverVariable; + } + public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { //System.out.println("rightclick"); - if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide > 3) && (((aY > 0.375D) && (aY < 0.625D)) || ((aSide < 2) && (((aZ > 0.375D) && (aZ < 0.625D)) || (aSide == 2) || (aSide == 3)))))) { + if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide > 3) && (((aY > 0.375D) && (aY < 0.625D)) || ((aSide < 2) && (((aZ > 0.375D) && (aZ < 0.625D)) || (aSide == 2) || (aSide == 3)))))) { ItemStack tStack = aPlayer.inventory.getCurrentItem(); if(tStack!=null){ FluidStack tFluid = FluidContainerRegistry.getFluidForFilledItem(tStack); if(tFluid!=null){ - //System.out.println(tFluid.getLocalizedName()+" "+tFluid.getFluidID()); - aCoverVariable = tFluid.getFluidID(); + //System.out.println(tFluid.getLocalizedName()+" "+tFluid.getFluidID()); + int aFluid = tFluid.getFluidID(); + aCoverVariable = (aCoverVariable & 7) | (aFluid << 3); aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); - FluidStack sFluid = new FluidStack(FluidRegistry.getFluid(aCoverVariable),1000); + FluidStack sFluid = new FluidStack(FluidRegistry.getFluid(aFluid),1000); GT_Utility.sendChatToPlayer(aPlayer, "Filter Fluid: " + sFluid.getLocalizedName()); }else if(tStack.getItem() instanceof IFluidContainerItem){ - IFluidContainerItem tContainer = (IFluidContainerItem)tStack.getItem(); + IFluidContainerItem tContainer = (IFluidContainerItem)tStack.getItem(); if(tContainer.getFluid(tStack) != null) { - aCoverVariable = tContainer.getFluid(tStack).getFluidID(); + int aFluid = tContainer.getFluid(tStack).getFluidID(); + aCoverVariable = (aCoverVariable & 7) | (aFluid << 3); aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); - //System.out.println("fluidcontainer " + aCoverVariable); - FluidStack sFluid = new FluidStack(FluidRegistry.getFluid(aCoverVariable), 1000); + FluidStack sFluid = new FluidStack(FluidRegistry.getFluid(aFluid),1000); GT_Utility.sendChatToPlayer(aPlayer, "Filter Fluid: " + sFluid.getLocalizedName()); } } @@ -55,14 +73,16 @@ public class GT_Cover_Fluidfilter @Override public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { - if(aFluid==null){return true;} - return aFluid.getID() == aCoverVariable; + if(aFluid==null){return true;} + int aFilterMode = aCoverVariable & 7; + int aFilterFluid = aCoverVariable >>> 3; + return aFluid.getID() == aFilterFluid ? (aFilterMode == 0 || aFilterMode == 2 ? true : false) : (aFilterMode == 1 || aFilterMode == 3 ? true : false); } @Override public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { - if(aFluid==null) return false; - return aFluid.getID() == aCoverVariable; + int aFilterMode = aCoverVariable & 7; + return aFilterMode == 0 || aFilterMode == 1 ? false : true; } public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { |