I did this, but my texture did no rendered.
@Mod.EventBusSubscriber
public class LevelGUI {
private static final ResourceLocation ICON_LOCATION = new ResourceLocation("mohard", "textures/gui/mod_icons.png");
@SubscribeEvent
public static void cancelRender(RenderGameOverlayEvent.Pre event){
if(event.getType().equals(RenderGameOverlayEvent.ElementType.HEALTH)){
event.setCanceled(true);
renderModHealth(Minecraft.getInstance().gui
event.getMatrixStack(),
event.getWindow().getWidth(),
event.getWindow().getHeight(),
Minecraft.getInstance().player);
}
}
private static void renderModHealth(IngameGui gui, MatrixStack matrixStack, int screenWidth, int screenHeight, PlayerEntity jogador){
int x = screenWidth / 2 - 91;
int y = screenHeight - 39;
Minecraft.getInstance().getTextureManager().bind(ICON_LOCATION);
gui.blit(matrixStack, x, y, 0, 0, 90,9);
int percentual = (int) Math.ceil((jogador.getHealth() / jogador.getMaxHealth()) * 20);
for(int i = percentual; i > 0; i--){
gui.blit(matrixStack, x + 1 + (i * 4), y + 1, 1 + (getHealthType(jogador) * 4), 10, 4, 7);
}
}
private static int getHealthType(PlayerEntity jogador){
return jogador.hasEffect(Effects.WITHER) ? 3 :
jogador.hasEffect(Effects.POISON) ? 2 :
jogador.hasEffect(Effects.ABSORPTION) ? 1 :
0;
}
}