From 5011ea1c7076ca578cdbc6f3dd73b43ae5aae69f Mon Sep 17 00:00:00 2001 From: jmongeon Date: Fri, 26 Sep 2014 20:35:43 -0400 Subject: [PATCH] Add comparator support to the GasTank (#1829). --- .../mekanism/common/block/BlockGasTank.java | 13 +++++++++++ .../common/tile/TileEntityGasTank.java | 23 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/main/java/mekanism/common/block/BlockGasTank.java b/src/main/java/mekanism/common/block/BlockGasTank.java index a98018019..7e74b0c44 100644 --- a/src/main/java/mekanism/common/block/BlockGasTank.java +++ b/src/main/java/mekanism/common/block/BlockGasTank.java @@ -219,6 +219,19 @@ public class BlockGasTank extends BlockContainer return itemStack; } + @Override + public boolean hasComparatorInputOverride() + { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int par5) + { + TileEntityGasTank tileEntity = (TileEntityGasTank)world.getTileEntity(x, y, z); + return tileEntity.getRedstoneLevel(); + } + @Override public ForgeDirection[] getValidRotations(World world, int x, int y, int z) { diff --git a/src/main/java/mekanism/common/tile/TileEntityGasTank.java b/src/main/java/mekanism/common/tile/TileEntityGasTank.java index 6944c9eae..a7e13ecb7 100644 --- a/src/main/java/mekanism/common/tile/TileEntityGasTank.java +++ b/src/main/java/mekanism/common/tile/TileEntityGasTank.java @@ -21,6 +21,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityGasTank extends TileEntityContainerBlock implements IGasHandler, ITubeConnection, IRedstoneControl @@ -42,6 +43,8 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH public Mode dumping; + public int currentGasAmount; + /** This machine's current RedstoneControl type. */ public RedstoneControl controlType; @@ -90,6 +93,17 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH { gasTank.draw(output, true); } + + if(!worldObj.isRemote) + { + int newGasAmount = gasTank.getStored(); + + if(newGasAmount != this.currentGasAmount) + { + markDirty(); + this.currentGasAmount = newGasAmount; + } + } } @Override @@ -265,6 +279,15 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH return true; } + public int getRedstoneLevel() + { + int stored = gasTank.getStored(); + + if(stored == 0) return 0; + + return MathHelper.floor_float((float)stored / (float)MAX_GAS * 14.0f + 1.0f); + } + @Override public RedstoneControl getControlType() {