diff options
author | Jason Mitchell <mitchej@gmail.com> | 2022-04-18 11:16:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-18 20:16:31 +0200 |
commit | 44a1027dfa51af1864364c391e67686590ce347f (patch) | |
tree | 5f2fa25724841885d9e0cb721a7806812aca8016 /src/main/java/gregtech/common/blocks | |
parent | bb4cec9a73ec6c50199de6c48119ddd85e23b013 (diff) | |
download | GT5-Unofficial-44a1027dfa51af1864364c391e67686590ce347f.tar.gz GT5-Unofficial-44a1027dfa51af1864364c391e67686590ce347f.tar.bz2 GT5-Unofficial-44a1027dfa51af1864364c391e67686590ce347f.zip |
Multitileentity precursor (#963)
* Refactors
* Refactor CoverableTileEntity a bit more, pull out a CommonMetaTileEntity
* Add an IDebugableTileEntity interface instead of checking various subclasses
* Move more redstone related things to CoverableTileEntity
* Add IGTENet
* Final and dead code removal
* Address a few comments, fix a few comments, remove some more dead code, and add some more finals.
* fix bad rebase
Diffstat (limited to 'src/main/java/gregtech/common/blocks')
-rw-r--r-- | src/main/java/gregtech/common/blocks/GT_Block_Machines.java | 159 | ||||
-rw-r--r-- | src/main/java/gregtech/common/blocks/GT_Item_Machines.java | 127 |
2 files changed, 116 insertions, 170 deletions
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java index ad97bb9572..851b84b5c3 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java @@ -9,11 +9,13 @@ import gregtech.api.enums.Textures; import gregtech.api.interfaces.IDebugableBlock; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IDebugableTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.items.GT_Generic_Block; import gregtech.api.metatileentity.BaseMetaPipeEntity; import gregtech.api.metatileentity.BaseMetaTileEntity; import gregtech.api.metatileentity.BaseTileEntity; +import gregtech.api.metatileentity.CoverableTileEntity; import gregtech.api.util.GT_BaseCrop; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Utility; @@ -48,6 +50,7 @@ import java.util.Collections; import java.util.List; import static gregtech.GT_Mod.GT_FML_LOGGER; +import static gregtech.api.enums.GT_Values.SIDE_UP; import static gregtech.api.objects.XSTR.XSTR_INSTANCE; @Optional.Interface(iface = "com.cricketcraft.chisel.api.IFacade", modid = "ChiselAPI") @@ -87,7 +90,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void onNeighborChange(IBlockAccess aWorld, int aX, int aY, int aZ, int aTileX, int aTileY, int aTileZ) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if ((tTileEntity instanceof BaseTileEntity)) { ((BaseTileEntity) tTileEntity).onAdjacentBlockChange(aTileX, aTileY, aTileZ); } @@ -95,7 +98,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void onNeighborBlockChange(World aWorld, int aX, int aY, int aZ, Block aBlock) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if ((tTileEntity instanceof BaseMetaPipeEntity)) { ((BaseMetaPipeEntity) tTileEntity).onNeighborBlockChange(aX, aY, aZ); } @@ -217,7 +220,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public boolean onBlockEventReceived(World aWorld, int aX, int aY, int aZ, int aData1, int aData2) { super.onBlockEventReceived(aWorld, aX, aY, aZ, aData1, aData2); - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); return tTileEntity != null && tTileEntity.receiveClientEvent(aData1, aData2); } @@ -225,7 +228,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void addCollisionBoxesToList( World aWorld, int aX, int aY, int aZ, AxisAlignedBB inputAABB, List outputAABB, Entity collider) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() != null) { ((IGregTechTileEntity) tTileEntity) @@ -237,7 +240,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World aWorld, int aX, int aY, int aZ) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() != null) { return ((IGregTechTileEntity) tTileEntity).getCollisionBoundingBoxFromPool(aWorld, aX, aY, aZ); @@ -248,7 +251,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World aWorld, int aX, int aY, int aZ) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() != null) { return ((IGregTechTileEntity) tTileEntity).getCollisionBoundingBoxFromPool(aWorld, aX, aY, aZ); @@ -258,12 +261,9 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override //THIS public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int aX, int aY, int aZ) { - TileEntity tTileEntity = blockAccess.getTileEntity(aX, aY, aZ); - if (tTileEntity instanceof IGregTechTileEntity && - (((IGregTechTileEntity) tTileEntity).getMetaTileEntity() != null)) { - AxisAlignedBB bbb = ((IGregTechTileEntity) tTileEntity) - .getCollisionBoundingBoxFromPool( - ((IGregTechTileEntity) tTileEntity).getWorld(), 0, 0, 0); + final TileEntity tTileEntity = blockAccess.getTileEntity(aX, aY, aZ); + if (tTileEntity instanceof IGregTechTileEntity && (((IGregTechTileEntity) tTileEntity).getMetaTileEntity() != null)) { + final AxisAlignedBB bbb = ((IGregTechTileEntity) tTileEntity).getCollisionBoundingBoxFromPool(((IGregTechTileEntity) tTileEntity).getWorld(), 0, 0, 0); minX = bbb.minX; //This essentially sets block bounds minY = bbb.minY; minZ = bbb.minZ; @@ -282,7 +282,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void onEntityCollidedWithBlock(World aWorld, int aX, int aY, int aZ, Entity collider) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() != null) { ((IGregTechTileEntity) tTileEntity).onEntityCollidedWithBlock(aWorld, aX, aY, aZ, collider); @@ -331,7 +331,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public float getPlayerRelativeBlockHardness(EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); return tTileEntity instanceof BaseMetaTileEntity && ((BaseMetaTileEntity) tTileEntity).privateAccess() && !((BaseMetaTileEntity) tTileEntity).playerOwnsThis(aPlayer, true) ? @@ -339,14 +339,13 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo } @Override - public boolean onBlockActivated( - World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer, int aSide, float par1, float par2, float par3) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + public boolean onBlockActivated(World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer, int aSide, float par1, float par2, float par3) { + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity == null) { return false; } if (aPlayer.isSneaking()) { - ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem(); + final ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem(); if ( tCurrentItem != null && !GT_Utility.isStackInList(tCurrentItem, GregTech_API.sScrewdriverList) && @@ -369,7 +368,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void onBlockClicked(World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { ((IGregTechTileEntity) tTileEntity).onLeftclick(aPlayer); } @@ -377,7 +376,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public int getDamageValue(World aWorld, int aX, int aY, int aZ) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { return ((IGregTechTileEntity) tTileEntity).getMetaTileID(); } @@ -386,10 +385,9 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void onBlockExploded(World aWorld, int aX, int aY, int aZ, Explosion aExplosion) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof BaseMetaTileEntity) { - GT_Log.exp.printf("Explosion at : %d | %d | %d DIMID: %s due to near explosion!%n", - aX, aY, aZ, aWorld.provider.dimensionId); + GT_Log.exp.printf("Explosion at : %d | %d | %d DIMID: %s due to near explosion!%n", aX, aY, aZ, aWorld.provider.dimensionId); ((BaseMetaTileEntity) tTileEntity).doEnergyExplosion(); } super.onBlockExploded(aWorld, aX, aY, aZ, aExplosion); @@ -398,19 +396,20 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void breakBlock(World aWorld, int aX, int aY, int aZ, Block par5, int par6) { GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { - IGregTechTileEntity tGregTechTileEntity = (IGregTechTileEntity) tTileEntity; + final IGregTechTileEntity tGregTechTileEntity = (IGregTechTileEntity) tTileEntity; mTemporaryTileEntity.set(tGregTechTileEntity); if (!(tGregTechTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_SuperChest || tGregTechTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_QuantumChest)) { for (int i = 0; i < tGregTechTileEntity.getSizeInventory(); i++) { - ItemStack tItem = tGregTechTileEntity.getStackInSlot(i); + final ItemStack tItem = tGregTechTileEntity.getStackInSlot(i); if ((tItem != null) && (tItem.stackSize > 0) && (tGregTechTileEntity.isValidSlot(i))) { - EntityItem tItemEntity = new EntityItem(aWorld, - aX + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, - aY + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, - aZ + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, - new ItemStack(tItem.getItem(), tItem.stackSize, tItem.getItemDamage())); + final EntityItem tItemEntity = new EntityItem( + aWorld, + aX + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, + aY + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, + aZ + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, + new ItemStack(tItem.getItem(), tItem.stackSize, tItem.getItemDamage())); if (tItem.hasTagCompound()) { tItemEntity.getEntityItem().setTagCompound((NBTTagCompound) tItem.getTagCompound().copy()); } @@ -430,12 +429,12 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public ArrayList<ItemStack> getDrops(World aWorld, int aX, int aY, int aZ, int aMeta, int aFortune) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if ((tTileEntity instanceof IGregTechTileEntity)) { return ((IGregTechTileEntity) tTileEntity).getDrops(); } - IGregTechTileEntity tGregTechTileEntity = mTemporaryTileEntity.get(); - ArrayList<ItemStack> tDrops; + final IGregTechTileEntity tGregTechTileEntity = mTemporaryTileEntity.get(); + final ArrayList<ItemStack> tDrops; if (tGregTechTileEntity == null) { tDrops = (ArrayList<ItemStack>) Collections.<ItemStack>emptyList(); } else { @@ -459,7 +458,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public int getComparatorInputOverride(World aWorld, int aX, int aY, int aZ, int aSide) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { return ((IGregTechTileEntity) tTileEntity).getComparatorValue((byte) aSide); } @@ -471,7 +470,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo if (aSide < 0 || aSide > 5) { return 0; } - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { return ((IGregTechTileEntity) tTileEntity).getOutputRedstoneSignal(GT_Utility.getOppositeSide(aSide)); } @@ -483,7 +482,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo if (aSide < 0 || aSide > 5) { return 0; } - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { return ((IGregTechTileEntity) tTileEntity).getStrongOutputRedstoneSignal(GT_Utility.getOppositeSide(aSide)); } @@ -493,7 +492,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void dropBlockAsItemWithChance(World aWorld, int aX, int aY, int aZ, int par5, float chance, int par7) { if (!aWorld.isRemote) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity != null && (chance < 1.0F)) { if (tTileEntity instanceof BaseMetaTileEntity && (GregTech_API.sMachineNonWrenchExplosions)) { GT_Log.exp.printf("Explosion at : %d | %d | %d DIMID: %s NonWrench picking/Rain!%n", @@ -511,7 +510,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo if (aWorld.getBlockMetadata(aX, aY, aZ) == 0) { return true; } - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity != null) { if (tTileEntity instanceof BaseMetaTileEntity) { return true; @@ -543,7 +542,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public int getLightOpacity(IBlockAccess aWorld, int aX, int aY, int aZ) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { return ((IGregTechTileEntity) tTileEntity).getLightOpacity(); } @@ -552,7 +551,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public int getLightValue(IBlockAccess aWorld, int aX, int aY, int aZ) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof BaseMetaTileEntity) { return ((BaseMetaTileEntity) tTileEntity).getLightValue(); } @@ -571,7 +570,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo public float getExplosionResistance( Entity par1Entity, World aWorld, int aX, int aY, int aZ, double explosionX, double explosionY, double explosionZ) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { return ((IGregTechTileEntity) tTileEntity).getBlastResistance((byte) 6); } @@ -591,58 +590,24 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public void onBlockPlacedBy(World aWorld, int aX, int aY, int aZ, EntityLivingBase aPlayer, ItemStack aStack) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); - if (!(tTileEntity instanceof IGregTechTileEntity)) { - return; - } - IGregTechTileEntity iGregTechTileEntity = (IGregTechTileEntity) tTileEntity; - if (aPlayer == null) { - iGregTechTileEntity.setFrontFacing((byte) ForgeDirection.UP.ordinal()); - return; - } - int yawQuadrant = MathHelper.floor_double(aPlayer.rotationYaw * 4.0F / 360.0F + 0.5D) & 0x3; - int pitch = Math.round(aPlayer.rotationPitch); - if (pitch >= 65 && iGregTechTileEntity.isValidFacing((byte) ForgeDirection.UP.ordinal())) { - iGregTechTileEntity.setFrontFacing((byte) ForgeDirection.UP.ordinal()); - return; - } - if (pitch <= -65 && iGregTechTileEntity.isValidFacing((byte) ForgeDirection.DOWN.ordinal())) { - iGregTechTileEntity.setFrontFacing((byte) ForgeDirection.DOWN.ordinal()); - return; - } - switch (yawQuadrant) { - case 0: - iGregTechTileEntity.setFrontFacing((byte) ForgeDirection.NORTH.ordinal()); - break; - case 1: - iGregTechTileEntity.setFrontFacing((byte) ForgeDirection.EAST.ordinal()); - break; - case 2: - iGregTechTileEntity.setFrontFacing((byte) ForgeDirection.SOUTH.ordinal()); - break; - case 3: - iGregTechTileEntity.setFrontFacing((byte) ForgeDirection.WEST.ordinal()); - break; - default: - break; - } + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + if (!(tTileEntity instanceof IGregTechTileEntity)) return; + final IGregTechTileEntity iGregTechTileEntity = (IGregTechTileEntity) tTileEntity; + iGregTechTileEntity.setFrontFacing(BaseTileEntity.getSideForPlayerPlacing(aPlayer, SIDE_UP, iGregTechTileEntity.getValidFacings())); } @Override - public ArrayList<String> getDebugInfo(EntityPlayer aPlayer, int aX, int aY, int aZ, int aLogLevel) { - TileEntity tTileEntity = aPlayer.worldObj.getTileEntity(aX, aY, aZ); - if (tTileEntity instanceof BaseMetaTileEntity) { - return ((BaseMetaTileEntity) tTileEntity).getDebugInfo(aPlayer, aLogLevel); - } - if (tTileEntity instanceof BaseMetaPipeEntity) { - return ((BaseMetaPipeEntity) tTileEntity).getDebugInfo(aPlayer, aLogLevel); + public ArrayList<String> getDebugInfo(EntityPlayer aPlayer, int aX, int aY, int aZ, int aLogLevel) { + final TileEntity tTileEntity = aPlayer.worldObj.getTileEntity(aX, aY, aZ); + if (tTileEntity instanceof IDebugableTileEntity) { + return ((IDebugableTileEntity) tTileEntity).getDebugInfo(aPlayer, aLogLevel); } return (ArrayList<String>) Collections.<String>emptyList(); } @Override public boolean recolourBlock(World aWorld, int aX, int aY, int aZ, ForgeDirection aSide, int aColor) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { if (((IGregTechTileEntity) tTileEntity).getColorization() == (byte) ((~aColor) & 0xF)) { return false; @@ -655,18 +620,18 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public Block getFacade(IBlockAccess aWorld, int aX, int aY, int aZ, int side) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); - if (tTileEntity instanceof IGregTechTileEntity) { - byte aSide = (byte) side; - IGregTechTileEntity tile = (IGregTechTileEntity) tTileEntity; + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + if (tTileEntity instanceof CoverableTileEntity) { + final byte aSide = (byte) side; + final CoverableTileEntity tile = (CoverableTileEntity) tTileEntity; if (side != -1) { - Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide).getFacadeBlock(aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); + final Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide).getFacadeBlock(aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); if (facadeBlock != null) return facadeBlock; } else { // we do not allow more than one type of facade per block, so no need to check every side // see comment in gregtech.common.covers.GT_Cover_FacadeBase.isCoverPlaceable for (byte i = 0; i < 6; i++) { - Block facadeBlock = tile.getCoverBehaviorAtSideNew(i).getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); + final Block facadeBlock = tile.getCoverBehaviorAtSideNew(i).getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); if (facadeBlock != null) { return facadeBlock; } @@ -678,19 +643,19 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo @Override public int getFacadeMetadata(IBlockAccess aWorld, int aX, int aY, int aZ, int side) { - TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); - if (tTileEntity instanceof IGregTechTileEntity) { - byte aSide = (byte) side; - IGregTechTileEntity tile = (IGregTechTileEntity) tTileEntity; + final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); + if (tTileEntity instanceof CoverableTileEntity) { + final byte aSide = (byte) side; + final CoverableTileEntity tile = (CoverableTileEntity) tTileEntity; if (side != -1) { - Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide).getFacadeBlock(aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); + final Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide).getFacadeBlock(aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); if (facadeBlock != null) return tile.getCoverBehaviorAtSideNew(aSide).getFacadeMeta(aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); } else { // we do not allow more than one type of facade per block, so no need to check every side // see comment in gregtech.common.covers.GT_Cover_FacadeBase.isCoverPlaceable for (byte i = 0; i < 6; i++) { - Block facadeBlock = tile.getCoverBehaviorAtSideNew(i).getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); + final Block facadeBlock = tile.getCoverBehaviorAtSideNew(i).getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); if (facadeBlock != null) { return tile.getCoverBehaviorAtSideNew(i).getFacadeMeta(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); } diff --git a/src/main/java/gregtech/common/blocks/GT_Item_Machines.java b/src/main/java/gregtech/common/blocks/GT_Item_Machines.java index cc49cefa2b..c98b37085e 100644 --- a/src/main/java/gregtech/common/blocks/GT_Item_Machines.java +++ b/src/main/java/gregtech/common/blocks/GT_Item_Machines.java @@ -7,7 +7,7 @@ import gregtech.api.interfaces.ISecondaryDescribable; import gregtech.api.interfaces.metatileentity.IConnectable; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.CoverableGregTechTileEntity; +import gregtech.api.metatileentity.CoverableTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Cable; import gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Fluid; @@ -36,10 +36,9 @@ import net.minecraftforge.fluids.IFluidContainerItem; import java.util.List; -public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { - - private static final String[] directionNames = {"Bottom", "Top", "North", "South", "West", "East"}; +import static gregtech.GT_Mod.GT_FML_LOGGER; +public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { public GT_Item_Machines(Block par1) { super(par1); setMaxDamage(0); @@ -58,15 +57,16 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { } @Override + @SuppressWarnings("unchecked") public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean par4) { try { - int tDamage = getDamage(aStack); + final int tDamage = getDamage(aStack); if ((tDamage <= 0) || (tDamage >= GregTech_API.METATILEENTITIES.length)) { return; } if (GregTech_API.METATILEENTITIES[tDamage] != null) { - IGregTechTileEntity tTileEntity = GregTech_API.METATILEENTITIES[tDamage].getBaseMetaTileEntity(); + final IGregTechTileEntity tTileEntity = GregTech_API.METATILEENTITIES[tDamage].getBaseMetaTileEntity(); if (!GregTech_API.sPostloadFinished && tTileEntity.getMetaTileEntity() instanceof ISecondaryDescribable) { final String[] secondaryDescription = ((ISecondaryDescribable) tTileEntity.getMetaTileEntity()).getSecondaryDescription(); if (secondaryDescription != null) { @@ -93,32 +93,33 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { } if (tTileEntity.getDescription() != null) { int i = 0; - IMetaTileEntity metaTileEntity = tTileEntity.getMetaTileEntity(); - String suffix = (metaTileEntity instanceof ISecondaryDescribable && ((ISecondaryDescribable) metaTileEntity).isDisplaySecondaryDescription()) ? "_Secondary" : ""; + final IMetaTileEntity metaTileEntity = tTileEntity.getMetaTileEntity(); + final String suffix = (metaTileEntity instanceof ISecondaryDescribable && ((ISecondaryDescribable) metaTileEntity).isDisplaySecondaryDescription()) ? "_Secondary" : ""; for (String tDescription : tTileEntity.getDescription()) { if (GT_Utility.isStringValid(tDescription)) { if(tDescription.contains("%%%")){ - String[] tString = tDescription.split("%%%"); + final String[] tString = tDescription.split("%%%"); if(tString.length>=2){ - StringBuilder tBuffer = new StringBuilder(); - String[] tRep = new String[tString.length / 2]; + final StringBuilder tBuffer = new StringBuilder(); + final String[] tRep = new String[tString.length / 2]; for (int j = 0; j < tString.length; j++) if (j % 2 == 0) tBuffer.append(tString[j]); else {tBuffer.append(" %s"); tRep[j / 2] = tString[j];} aList.add(String.format(GT_LanguageManager.addStringLocalization("TileEntity_DESCRIPTION_" + tDamage + suffix + "_Index_" + i++, tBuffer.toString(), !GregTech_API.sPostloadFinished ), (Object[]) tRep)); } - }else{String tTranslated = GT_LanguageManager.addStringLocalization("TileEntity_DESCRIPTION_" + tDamage + suffix + "_Index_" + i++, tDescription, !GregTech_API.sPostloadFinished ); + }else{ + String tTranslated = GT_LanguageManager.addStringLocalization("TileEntity_DESCRIPTION_" + tDamage + suffix + "_Index_" + i++, tDescription, !GregTech_API.sPostloadFinished ); aList.add(tTranslated.equals("") ? tDescription : tTranslated);} }else i++; } } if (tTileEntity.getEUCapacity() > 0L) { if (tTileEntity.getInputVoltage() > 0L) { - int inputTier = GT_Utility.getTier(tTileEntity.getInputVoltage()); + final int inputTier = GT_Utility.getTier(tTileEntity.getInputVoltage()); aList.add(GT_LanguageManager.addStringLocalization("TileEntity_EUp_IN", "Voltage IN: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.GREEN + GT_Utility.formatNumbers(tTileEntity.getInputVoltage()) + " (" + GT_Values.TIER_COLORS[inputTier] + GT_Values.VN[inputTier] + EnumChatFormatting.GREEN +")" + EnumChatFormatting.GRAY); } if (tTileEntity.getOutputVoltage() > 0L) { - int outputTier = GT_Utility.getTier(tTileEntity.getOutputVoltage()); + final int outputTier = GT_Utility.getTier(tTileEntity.getOutputVoltage()); aList.add(GT_LanguageManager.addStringLocalization("TileEntity_EUp_OUT", "Voltage OUT: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.GREEN + GT_Utility.formatNumbers(tTileEntity.getOutputVoltage()) + " (" + GT_Values.TIER_COLORS[outputTier] + GT_Values.VN[outputTier] + EnumChatFormatting.GREEN + ")" + EnumChatFormatting.GRAY); } if (tTileEntity.getOutputAmperage() > 1L) { @@ -128,7 +129,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { } if (GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_QuantumTank || GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_SuperTank) { if (aStack.hasTagCompound() && aStack.stackTagCompound.hasKey("mFluid")) { - FluidStack tContents = FluidStack.loadFluidStackFromNBT(aStack.stackTagCompound.getCompoundTag("mFluid")); + final FluidStack tContents = FluidStack.loadFluidStackFromNBT(aStack.stackTagCompound.getCompoundTag("mFluid")); if (tContents != null && tContents.amount > 0) { aList.add(GT_LanguageManager.addStringLocalization("TileEntity_TANK_INFO", "Contains Fluid: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.YELLOW + tContents.getLocalizedName() + EnumChatFormatting.GRAY); aList.add(GT_LanguageManager.addStringLocalization("TileEntity_TANK_AMOUNT", "Fluid Amount: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.GREEN + GT_Utility.formatNumbers(tContents.amount) + " L" + EnumChatFormatting.GRAY); @@ -137,8 +138,8 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { } if (GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_DigitalChestBase) { if (aStack.hasTagCompound() && aStack.stackTagCompound.hasKey("mItemStack")) { - ItemStack tContents = ItemStack.loadItemStackFromNBT(aStack.stackTagCompound.getCompoundTag("mItemStack")); - int tSize = aStack.stackTagCompound.getInteger("mItemCount"); + final ItemStack tContents = ItemStack.loadItemStackFromNBT(aStack.stackTagCompound.getCompoundTag("mItemStack")); + final int tSize = aStack.stackTagCompound.getInteger("mItemCount"); if (tContents != null && tSize > 0) { aList.add(GT_LanguageManager.addStringLocalization("TileEntity_CHEST_INFO", "Contains Item: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.YELLOW + tContents.getDisplayName() + EnumChatFormatting.GRAY); aList.add(GT_LanguageManager.addStringLocalization("TileEntity_CHEST_AMOUNT", "Item Amount: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.GREEN + GT_Utility.formatNumbers(tSize) + EnumChatFormatting.GRAY); @@ -146,7 +147,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { } } } - NBTTagCompound aNBT = aStack.getTagCompound(); + final NBTTagCompound aNBT = aStack.getTagCompound(); if (aNBT != null) { if (aNBT.getBoolean("mMuffler")) { aList.add(GT_LanguageManager.addStringLocalization("GT_TileEntity_MUFFLER", "has Muffler Upgrade", !GregTech_API.sPostloadFinished )); @@ -159,30 +160,10 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { aList.add(tAmount + " " + GT_LanguageManager.addStringLocalization("GT_TileEntity_STEAMTANKS", "Steam Tank Upgrades", !GregTech_API.sPostloadFinished )); } - addInstalledCoversInformation(aNBT, aList); + CoverableTileEntity.addInstalledCoversInformation(aNBT, aList); } } catch (Throwable e) { - e.printStackTrace(GT_Log.err); - } - } - - private void addInstalledCoversInformation(NBTTagCompound aNBT, List<String> aList) { - if (aNBT.hasKey("mCoverSides")){ - int[] mCoverSides = aNBT.getIntArray("mCoverSides"); - if (mCoverSides != null && mCoverSides.length == 6) { - for (byte i = 0; i < 6; i++) { - int coverId = mCoverSides[i]; - if (coverId == 0) continue; - GT_CoverBehaviorBase<?> behavior = GregTech_API.getCoverBehaviorNew(coverId); - if (behavior == null || behavior == GregTech_API.sNoBehavior) continue; - if (!aNBT.hasKey(CoverableGregTechTileEntity.COVER_DATA_NBT_KEYS[i])) continue; - ISerializableObject dataObject = behavior.createDataObject(aNBT.getTag(CoverableGregTechTileEntity.COVER_DATA_NBT_KEYS[i])); - ItemStack itemStack = behavior.getDisplayStack(coverId, dataObject); - if (itemStack != null) { - aList.add(String.format("Cover on %s side: %s", directionNames[i], itemStack.getDisplayName())); - } - } - } + GT_FML_LOGGER.error("addInformation", e); } } @@ -193,7 +174,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public String getUnlocalizedName(ItemStack aStack) { - short tDamage = (short) getDamage(aStack); + final short tDamage = (short) getDamage(aStack); if ((tDamage < 0) || (tDamage >= GregTech_API.METATILEENTITIES.length)) { return ""; } @@ -206,7 +187,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public String getItemStackDisplayName(ItemStack aStack) { String aName = super.getItemStackDisplayName(aStack); - short aDamage = (short) getDamage(aStack); + final short aDamage = (short) getDamage(aStack); if (aDamage >= 0 && aDamage < GregTech_API.METATILEENTITIES.length && GregTech_API.METATILEENTITIES[aDamage] != null) { Materials aMaterial = null; if (GregTech_API.METATILEENTITIES[aDamage] instanceof GT_MetaPipeEntity_Item) { @@ -228,7 +209,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { super.onCreated(aStack, aWorld, aPlayer); - short tDamage = (short) getDamage(aStack); + final short tDamage = (short) getDamage(aStack); if ((tDamage < 0) || ((tDamage >= GregTech_API.METATILEENTITIES.length) && (GregTech_API.METATILEENTITIES[tDamage] != null))) { GregTech_API.METATILEENTITIES[tDamage].onCreated(aStack, aWorld, aPlayer); } @@ -236,12 +217,12 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public boolean placeBlockAt(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int side, float hitX, float hitY, float hitZ, int aMeta) { - short tDamage = (short) getDamage(aStack); + final short tDamage = (short) getDamage(aStack); if (tDamage > 0) { if (GregTech_API.METATILEENTITIES[tDamage] == null) { return false; } - int tMetaData = GregTech_API.METATILEENTITIES[tDamage].getTileEntityBaseType(); + final int tMetaData = GregTech_API.METATILEENTITIES[tDamage].getTileEntityBaseType(); if (!aWorld.setBlock(aX, aY, aZ, this.field_150939_a, tMetaData, 3)) { return false; } @@ -251,7 +232,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { if (aWorld.getBlockMetadata(aX, aY, aZ) != tMetaData) { throw new GT_ItsNotMyFaultException("Failed to set the MetaValue of the Block even though World.setBlock returned true. It COULD be MCPC/Bukkit causing that. In case you really have that installed, don't report this Bug to me, I don't know how to fix it."); } - IGregTechTileEntity tTileEntity = (IGregTechTileEntity) aWorld.getTileEntity(aX, aY, aZ); + final IGregTechTileEntity tTileEntity = (IGregTechTileEntity) aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity != null) { tTileEntity.setInitialValuesAsNBT(tTileEntity.isServerSide() ? aStack.getTagCompound() : null, tDamage); if (aPlayer != null) { @@ -265,7 +246,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { ((IConnectable) tTileEntity.getMetaTileEntity()).connect(aSide); } else if (aPlayer != null && aPlayer.isSneaking()) { // If we're being placed against something that is connectable, try telling it to connect to us - IGregTechTileEntity aTileEntity = tTileEntity.getIGregTechTileEntityAtSide(aSide); + final IGregTechTileEntity aTileEntity = tTileEntity.getIGregTechTileEntityAtSide(aSide); if (aTileEntity != null && aTileEntity.getMetaTileEntity() instanceof IConnectable) { ((IConnectable) aTileEntity.getMetaTileEntity()).connect((byte)side); } @@ -284,13 +265,13 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public void onUpdate(ItemStack aStack, World aWorld, Entity aPlayer, int aTimer, boolean aIsInHand) { super.onUpdate(aStack, aWorld, aPlayer, aTimer, aIsInHand); - short tDamage = (short) getDamage(aStack); - EntityLivingBase tPlayer = (EntityPlayer) aPlayer; + final short tDamage = (short) getDamage(aStack); + final EntityLivingBase tPlayer = (EntityPlayer) aPlayer; if (GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_SuperChest || GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_QuantumChest || GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_SuperTank || GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_QuantumTank) { - NBTTagCompound tNBT = aStack.stackTagCompound; + final NBTTagCompound tNBT = aStack.stackTagCompound; if (tNBT == null) return; if (tNBT.hasNoTags()) { aStack.setTagCompound(null); @@ -298,14 +279,14 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { } if ((tNBT.hasKey("mItemCount") && tNBT.getInteger("mItemCount") > 0) || (tNBT.hasKey("mFluid") && FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("mFluid")).amount > 64000)) { - FluidStack tFluid = FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("mFluid")); + final FluidStack tFluid = FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("mFluid")); int tLasing = 1200; if (tFluid != null) { - double tFluidAmount = tFluid.amount; - double tMiddlePoint = 4096000; - double tSmoothingCoefficient = 2000000; - int tMaxLastingTime = 12000; - double tmp = (tFluidAmount - tMiddlePoint) / tSmoothingCoefficient; + final double tFluidAmount = tFluid.amount; + final double tMiddlePoint = 4096000; + final double tSmoothingCoefficient = 2000000; + final int tMaxLastingTime = 12000; + final double tmp = (tFluidAmount - tMiddlePoint) / tSmoothingCoefficient; tLasing = (int) (Math.exp(tmp) / (Math.exp(tmp) + Math.exp(-tmp)) * tMaxLastingTime); } tPlayer.addPotionEffect(new PotionEffect(Potion.hunger.id, tLasing, 1)); @@ -319,7 +300,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public FluidStack getFluid(ItemStack container) { if (container != null) { - NBTTagCompound tNBT = container.stackTagCompound; + final NBTTagCompound tNBT = container.stackTagCompound; if (tNBT != null && tNBT.hasKey("mFluid", 10)) { return FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("mFluid")); } @@ -330,8 +311,8 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public int getCapacity(ItemStack container) { if (container != null) { - int tDamage = container.getItemDamage(); - IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage]; + final int tDamage = container.getItemDamage(); + final IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage]; if (tMetaTile != null) return tMetaTile.getCapacity(); } @@ -341,27 +322,27 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public int fill(ItemStack container, FluidStack resource, boolean doFill) { if (container != null && resource != null) { - int tDamage = container.getItemDamage(); - IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage]; + final int tDamage = container.getItemDamage(); + final IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage]; if (!(tMetaTile instanceof GT_MetaTileEntity_QuantumTank || tMetaTile instanceof GT_MetaTileEntity_SuperTank)) { return 0; } if (container.stackTagCompound == null) container.stackTagCompound = new NBTTagCompound(); - FluidStack tStoredFluid = getFluid(container); - int tCapacity = getCapacity(container); + final FluidStack tStoredFluid = getFluid(container); + final int tCapacity = getCapacity(container); if (tCapacity <= 0) return 0; if (tStoredFluid != null && tStoredFluid.isFluidEqual(resource)) { - int tAmount = Math.min(tCapacity - tStoredFluid.amount, resource.amount); + final int tAmount = Math.min(tCapacity - tStoredFluid.amount, resource.amount); if (doFill) { - FluidStack tNewFluid = new FluidStack(tStoredFluid, tAmount + tStoredFluid.amount); + final FluidStack tNewFluid = new FluidStack(tStoredFluid, tAmount + tStoredFluid.amount); container.stackTagCompound.setTag("mFluid", tNewFluid.writeToNBT(new NBTTagCompound())); } return tAmount; } if (tStoredFluid == null) { - int tAmount = Math.min(tCapacity, resource.amount); + final int tAmount = Math.min(tCapacity, resource.amount); if (doFill) { - FluidStack tNewFluid = new FluidStack(resource, tAmount); + final FluidStack tNewFluid = new FluidStack(resource, tAmount); container.stackTagCompound.setTag("mFluid", tNewFluid.writeToNBT(new NBTTagCompound())); } return tAmount; @@ -373,16 +354,16 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem { @Override public FluidStack drain(ItemStack container, int maxDrain, boolean doDrain) { if (container != null && container.hasTagCompound()) { - int tDamage = container.getItemDamage(); - IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage]; + final int tDamage = container.getItemDamage(); + final IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage]; if (!(tMetaTile instanceof GT_MetaTileEntity_QuantumTank || tMetaTile instanceof GT_MetaTileEntity_SuperTank)) { return null; } - FluidStack tStoredFluid = getFluid(container); + final FluidStack tStoredFluid = getFluid(container); if (tStoredFluid != null) { - int tAmount = Math.min(maxDrain, tStoredFluid.amount); - FluidStack tNewFluid = new FluidStack(tStoredFluid, tStoredFluid.amount - tAmount); - FluidStack tOutputFluid = new FluidStack(tStoredFluid, tAmount); + final int tAmount = Math.min(maxDrain, tStoredFluid.amount); + final FluidStack tNewFluid = new FluidStack(tStoredFluid, tStoredFluid.amount - tAmount); + final FluidStack tOutputFluid = new FluidStack(tStoredFluid, tAmount); if (doDrain) { if (tNewFluid.amount <= 0) { container.stackTagCompound.removeTag("mFluid"); |