public boolean canGoSwim(float posX, float posY)
    {
        if(!noclip)
        for(int x1 = 0;x1<w;x1++)
        {
            for(int y1 = 0;y1<h;y1++)
            {
                int gridX = (int) ((x1+posX)/Block.BLOCK_WIDTH);
                if(gridX < -1)
                    gridX -= 1;
                int gridY = (int) ((y1+posY)/Block.BLOCK_HEIGHT);
                Block t = Block.getBlock(world.getBlockAt(gridX, gridY));
                if(!(t instanceof BlockFluid))
                    return false;
                else
                {
                    BlockFluid f = (BlockFluid)t;
                    gridY = (int) ((y1+posY)/Block.BLOCK_HEIGHT);
                    if(Block.getBlock(world.getBlockAt(gridX, gridY+1)) instanceof BlockFluid == false)
                        return posY+y1-((int)((posY+y1)/Block.BLOCK_HEIGHT)*Block.BLOCK_HEIGHT)+h < ((float)(f.volume)/(float)f.getFluid().getMaxVolume())*Block.BLOCK_HEIGHT && Block.getBlock(world.getBlockAt(gridX, gridY)) instanceof BlockFluid && canGoto(posX,posY);
                }
            }
        }
        return true;
    }