Duvida em mudança de cor em barra

Galera quero q minha barra ai perder vida ela mude de cor gradativamente, ate consegui fazer ela mudar de cor de forma instantânea mas não e isso q quero, tentei criar um método que os fatores GRB se alterem de acordo com o dano tomado, deu uns Bos alguém me ajuda com isso.
tentei isso…

    package Pack.Graphics;

    import java.awt.Color;
    import java.awt.Graphics;

    import Pack.Entities.Player;

    public class UI {

    	double vidaPerdida = (Player.vidaMaxima - Player.vidaPlayer);
    	double B = 255f;
    	double G = 0f;
    	double R = 0f;
    	// A intenção aqui e fazer com quer de acordo com o dano recebido
    	// a cor da barra de vida mude de cor!
    	public void BarraMudaDeCor() {
    		// enquanto a vida for maiso q 60 e o blue maisor q zero
    		// o blue vai decair de acordo com dano sofrido e o Green vai almentar.
    		if(Player.vidaPlayer >= 60 && B >= 0) {
    			B =  (B - (vidaPerdida + 6.25));
    			G = (G + (vidaPerdida + 6.25));
    		}
    		// abaixo mesmo esquema so q perde green e ganha intencidade no red
    		if( Player.vidaPlayer < 60 && Player.vidaPlayer >= 30  && G >= 0) {
    			G = (G- (vidaPerdida + 6.25));
    			R = (R + (vidaPerdida + 6.25));
    		}
    		
    	}

    	public void render(Graphics g) {
    		
    		g.setColor(Color.BLACK);
    		g.fillRect(30, 10, 200, 30);
    		BarraMudaDeCor();
    		g.setColor(new Color((int)R,(int)G,(int)B));
    		
    		// regra de 3
    		g.fillRect(30, 5, (int) ((Player.vidaPlayer / 100) * 200), 30);

    	}

    }

O erro q da…

Exception in thread "main" java.lang.ExceptionInInitializerError
	at Pack.Graphics.UI.<init>(UI.java:10)
	at Pack.Game.Game.<init>(Game.java:48)
	at Pack.Game.Game.main(Game.java:98)
Caused by: java.lang.NullPointerException: Cannot invoke "Pack.Graphics.SpriteSheet.getSprite_Sheet(int, int, int, int)" because "Pack.Game.Game.spriteSheet" is null
	at Pack.Entities.Entity.<clinit>(Entity.java:16)
	... 3 more

O que tem nessa linha: Pack.Entities.Entity.(Entity.java:16)? Parece que ocorreu um NullPointerException nessa linha 16 da classe Entity.

bom acho q nada pois o jogo fio feito de acordo com o q se pede só a parte da classe UI q to tentando adaptar se eu não por o método q criei o jogo seque de boas mas de qualquer forma ai vai a classe…
protected double x;
protected double y;
protected int width;
protected int height;
protected BufferedImage sprite;
// linha 16 proxima abaixo!
public static BufferedImage Arma =Game.spriteSheet.getSprite_Sheet(648,64, 64, 64);
public static BufferedImage Muniçao =Game.spriteSheet.getSprite_Sheet(64
6,64, 64, 64);
public static BufferedImage Potion_Vida =Game.spriteSheet.getSprite_Sheet(647,64, 64, 64);
public static BufferedImage Inimigo_1 =Game.spriteSheet.getSprite_Sheet(64
4,0, 64, 64);

	public Entity(int x, int y, int width, int height, BufferedImage sprite) {
		// vamos seta as propriedades
		this.x = x;
		this.y = y;
		this.width = width;
		this.sprite = sprite;
		
	}

se eu fizer o UI assim a barra muda de cor so q muda instantaneamente mas queria lago mais top, q fosse gradualmente…
package Pack.Graphics;

import java.awt.Color;
import java.awt.Graphics;

import Pack.Entities.Player;

public class UI {
	

	public void render(Graphics g) {

		g.setColor(Color.BLACK);
		g.fillRect(30, 10, 200, 30);

		g.setColor(new Color(0,0,255));
		if (Player.vidaPlayer < 60) {
			g.setColor(Color.GREEN);
		}
		if (Player.vidaPlayer < 40) {
			g.setColor(Color.YELLOW);
		}
		if (Player.vidaPlayer < 20) {
			g.setColor(Color.RED);
		}
		// regra de 3
		g.fillRect(30, 5, (int) ((Player.vidaPlayer / 100) * 200), 30);

	}

}