package micdoodle8.mods.galacticraft.core.tile;
import micdoodle8.mods.galacticraft.api.world.IGalacticraftWorldProvider;
import micdoodle8.mods.galacticraft.core.blocks.BlockOxygenDetector;
import micdoodle8.mods.galacticraft.core.util.OxygenUtil;
import net.minecraft.block.state.IBlockState;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable;
public class TileEntityOxygenDetector extends TileEntity implements ITickable
{
private int ticks = 49;
private AxisAlignedBB oxygenSearch;
@Override
public void update()
{
if (!this.worldObj.isRemote && ++this.ticks == 50)
{
this.ticks = 0;
if (this.getBlockType() instanceof BlockOxygenDetector)
{
boolean oxygenFound = false;
if (this.worldObj.provider instanceof IGalacticraftWorldProvider && !((IGalacticraftWorldProvider)this.worldObj.provider).hasBreathableAtmosphere())
{
oxygenFound = OxygenUtil.isAABBInBreathableAirBlock(this.worldObj, this.oxygenSearch, false);
}
else
{
for (EnumFacing side : EnumFacing.values())
{
BlockPos offset = this.pos.offset(side, 1);
IBlockState bs = this.worldObj.getBlockState(offset);
if (!bs.getBlock().isSideSolid(worldObj, offset, side.getOpposite()))
{
oxygenFound = true;
break;
}
}
}
((BlockOxygenDetector) this.blockType).updateOxygenState(this.worldObj, this.getPos(), oxygenFound);
}
}
}
@Override
public void onLoad()
{
this.oxygenSearch = AxisAlignedBB.fromBounds(this.getPos().getX() - 0.6, this.getPos().getY() - 0.6, this.getPos().getZ() - 0.6, this.getPos().getX() + 1.6, this.getPos().getY() + 1.6, this.getPos().getZ() + 1.6);
}
}