private void init(GL2 gl){
        BufferedImage image;
        try{
            image = ImageIO.read(new File(PATH_TO_TEXTURES+name));
        }
        catch(IOException ie){
            try {
                image = ImageIO.read(new File(name));
            } catch (IOException ie2) {
                ie.printStackTrace();
                throw new RuntimeException("unable to open " + name);
            }
        }
        
        // Java really wanted to modify an array pointer
        int[] texture_ids = new int[1];
        gl.glGenTextures(1, texture_ids, 0); // not sure what the third argument is.
        glTexture = texture_ids[0];

        gl.glBindTexture(GL2.GL_TEXTURE_2D, glTexture);
        makeRGBTexture(gl, image, GL2.GL_TEXTURE_2D);
        // Setup filters
        gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR);
        gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR);
    }