I think, this is rendered as gui. So probably you need to subscribe on RenderGameOverlayEvent, but instead use Pre subclass, if you need to be behind the actual gui (not sure). Here is my code example:
@SubscribeEvent
public static void drawManaBar(RenderGameOverlayEvent.Post event) {
if (event.getType().equals(ElementType.HEALTH)) {
if (minecraft == null) {
minecraft = Minecraft.getInstance();
}
if (!Minecraft.isGuiEnabled()) {
return;
}
if (minecraft.world == null) {
return;
}
minecraft.getTextureManager().bindTexture(TestMod.MANA_BAR);
RenderSystem.pushTextureAttributes();
RenderSystem.enableAlphaTest(); //I experimented with these a lot, not sure it works now as intended.
fullPartial = getCurrentMana()/getMaxMana();
//Not sure this works well, but it's the main idea.
bufferbuilder = Tessellator.getInstance().getBuffer();
bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
//Here is actual render code:
//Rendering empty part
bufferbuilder.pos(80f, 20f, 0).tex(0f, 0f).endVertex();
bufferbuilder.pos(120f, 20f, 0).tex(0.5f, 0f).endVertex();
bufferbuilder.pos(120f, 20f + (1-fullPartial) * 80f, 0).tex(0.5f, 1-fullPartial).endVertex();
bufferbuilder.pos(80f, 20f + (1-fullPartial) * 80f, 0).tex(0f, 1-fullPartial).endVertex();
//Rendering full part
bufferbuilder.pos(80f, 20f + (1-fullPartial) * 80f, 0).tex(0.5f, 1-fullPartial).endVertex();
bufferbuilder.pos(120f, 20f + (1-fullPartial) * 80f, 0).tex(1f, 1-fullPartial).endVertex();
bufferbuilder.pos(120f, 100f, 0).tex(1f, 1).endVertex();
bufferbuilder.pos(80f, 100f, 0).tex(0.5f, 1).endVertex();
bufferbuilder.finishDrawing();
WorldVertexBufferUploader.draw(bufferbuilder);
RenderSystem.disableAlphaTest();
RenderSystem.popAttributes();
minecraft.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION); //I'm using .Post event, but anyway gui breaks, if you won's do that.
}
}
Also you may look at other ElementType instances and find HELMET one there. I suspect, that's what you need.
You won't find any mention about rendering at pumpkin Block/Item instance, because, I believe, render is made through subscribing to event, so actual render code can be anywhere.