Program: 170335
Project: 170335
Buggy source:
@Override public void renderItem(ItemRenderType type,ItemStack stack,Object... data){
  if (canRenderModel(stack) & type != ItemRenderType.INVENTORY) {
    if (type != ItemRenderType.ENTITY) {
      GL11.glPopMatrix();
    }
    GL11.glPushMatrix();
    int useCount=0;
    boolean hasArrow=false;
    boolean hasArrowSkin=false;
    int arrowSkinId=0;
    if (data.length >= 2) {
      if (data[1] instanceof AbstractClientPlayer & data[0] instanceof RenderBlocks) {
        RenderBlocks renderBlocks=(RenderBlocks)data[0];
        AbstractClientPlayer player=(AbstractClientPlayer)data[1];
        useCount=player.getItemInUseDuration();
        hasArrow=player.inventory.hasItem(Items.arrow);
        IEntityEquipment entityEquipment=EquipmentModelRenderer.INSTANCE.getPlayerCustomEquipmentData(player);
        if (entityEquipment.haveEquipment(SkinTypeRegistry.skinArrow)) {
          hasArrowSkin=true;
          arrowSkinId=entityEquipment.getEquipmentId(SkinTypeRegistry.skinArrow);
        }
        if (!hasArrow) {
          if (player.capabilities.isCreativeMode) {
            hasArrow=true;
          }
        }
      }
    }
    float scale=0.0625F;
    float angle=(float)(((double)System.currentTimeMillis() / 5) % 360F);
switch (type) {
case EQUIPPED:
      GL11.glScalef(1F,-1F,1F);
    GL11.glScalef(1.6F,1.6F,1.6F);
  GL11.glRotatef(-135,0,1,0);
GL11.glRotatef(10,0,0,1);
GL11.glRotatef(-20,1,0,0);
GL11.glRotatef(90,0,1,0);
GL11.glTranslatef(0F * scale,-6F * scale,1F * scale);
break;
case ENTITY:
GL11.glRotatef(180,0,0,1);
GL11.glTranslatef(0F,-10F * scale,0F);
break;
case EQUIPPED_FIRST_PERSON:
GL11.glScalef(1.6F,1.6F,1.6F);
GL11.glRotatef(-135,0,1,0);
GL11.glRotatef(180,0,0,1);
GL11.glRotatef(-90,0,1,0);
GL11.glRotatef(-17,1,0,0);
GL11.glRotatef(2,0,0,1);
GL11.glTranslatef(0F * scale,-2F * scale,1F * scale);
if (useCount > 0) {
GL11.glTranslatef(-5 * scale,3 * scale,1 * scale);
GL11.glRotatef(-6,1,0,0);
GL11.glRotatef(-16,0,1,0);
GL11.glRotatef(2,0,0,1);
}
break;
default :
break;
}
GL11.glEnable(GL11.GL_CULL_FACE);
ModelCustomEquipmetBow model=EquipmentModelRenderer.INSTANCE.customBow;
model.bowUse=useCount;
int equipmentId=EquipmentNBTHelper.getSkinIdFromStack(stack);
Skin skin=ClientModelCache.INSTANCE.getEquipmentItemData(equipmentId);
model.render(null,skin,false);
if (hasArrow) {
GL11.glTranslatef(1 * scale,1 * scale,-12 * scale);
int tarPart=useCount / 10;
if (tarPart > 2) {
tarPart=2;
}
if (skin.getParts().get(tarPart).getMarkerBlocks().size() > 0) {
CubeMarkerData cmd=skin.getParts().get(tarPart).getMarkerBlocks().get(0);
ForgeDirection dir=ForgeDirection.getOrientation(cmd.meta).getOpposite();
GL11.glTranslatef((dir.offsetX + cmd.x) * scale,(dir.offsetY + cmd.y) * scale,(dir.offsetZ + cmd.z) * scale);
GL11.glTranslatef(0.01F * scale,-0.01F * scale,0.01F * scale);
if (hasArrowSkin && ClientModelCache.INSTANCE.isEquipmentInCache(arrowSkinId)) {
Skin arrowSkin=ClientModelCache.INSTANCE.getEquipmentItemData(arrowSkinId);
if (arrowSkin != null) {
arrowSkin.onUsed();
for (int i=0; i < arrowSkin.getParts().size(); i++) {
SkinPart skinPart=arrowSkin.getParts().get(i);
EquipmentPartRenderer.INSTANCE.renderPart(skinPart,scale);
}
}
 else {
ModelArrow.MODEL.render(scale,false);
}
}
 else {
ClientModelCache.INSTANCE.requestEquipmentDataFromServer(arrowSkinId);
ModelArrow.MODEL.render(scale,false);
}
}
}
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
if (type != ItemRenderType.ENTITY) {
GL11.glPushMatrix();
}
}
 else {
IItemRenderer render=Addons.getItemRenderer(stack,type);
if (render != null) {
render.renderItem(type,stack,data);
}
 else {
renderNomalIcon(stack);
}
}
}

Fixed version (ground truth):
@Override public void renderItem(ItemRenderType type,ItemStack stack,Object... data){
  if (canRenderModel(stack) & type != ItemRenderType.INVENTORY) {
    if (type != ItemRenderType.ENTITY) {
      GL11.glPopMatrix();
    }
    GL11.glPushMatrix();
    int useCount=0;
    boolean hasArrow=false;
    boolean hasArrowSkin=false;
    int arrowSkinId=0;
    if (data.length >= 2) {
      if (data[1] instanceof AbstractClientPlayer & data[0] instanceof RenderBlocks) {
        RenderBlocks renderBlocks=(RenderBlocks)data[0];
        AbstractClientPlayer player=(AbstractClientPlayer)data[1];
        useCount=player.getItemInUseDuration();
        hasArrow=player.inventory.hasItem(Items.arrow);
        IEntityEquipment entityEquipment=EquipmentModelRenderer.INSTANCE.getPlayerCustomEquipmentData(player);
        if (entityEquipment.haveEquipment(SkinTypeRegistry.skinArrow)) {
          hasArrowSkin=true;
          arrowSkinId=entityEquipment.getEquipmentId(SkinTypeRegistry.skinArrow);
        }
        if (!hasArrow) {
          if (player.capabilities.isCreativeMode) {
            hasArrow=true;
          }
        }
      }
    }
    float scale=0.0625F;
    float angle=(float)(((double)System.currentTimeMillis() / 5) % 360F);
switch (type) {
case EQUIPPED:
      GL11.glScalef(1F,-1F,1F);
    GL11.glScalef(1.6F,1.6F,1.6F);
  GL11.glRotatef(-135,0,1,0);
GL11.glRotatef(10,0,0,1);
GL11.glRotatef(-20,1,0,0);
GL11.glRotatef(90,0,1,0);
GL11.glTranslatef(0F * scale,-6F * scale,1F * scale);
break;
case ENTITY:
GL11.glRotatef(180,0,0,1);
GL11.glTranslatef(0F,-10F * scale,0F);
break;
case EQUIPPED_FIRST_PERSON:
GL11.glScalef(1.6F,1.6F,1.6F);
GL11.glRotatef(-135,0,1,0);
GL11.glRotatef(180,0,0,1);
GL11.glRotatef(-90,0,1,0);
GL11.glRotatef(-17,1,0,0);
GL11.glRotatef(2,0,0,1);
GL11.glTranslatef(0F * scale,-2F * scale,1F * scale);
if (useCount > 0) {
GL11.glTranslatef(-5 * scale,3 * scale,1 * scale);
GL11.glRotatef(-6,1,0,0);
GL11.glRotatef(-16,0,1,0);
GL11.glRotatef(2,0,0,1);
}
break;
default :
break;
}
GL11.glEnable(GL11.GL_CULL_FACE);
ModelCustomEquipmetBow model=EquipmentModelRenderer.INSTANCE.customBow;
model.bowUse=useCount;
int equipmentId=EquipmentNBTHelper.getSkinIdFromStack(stack);
Skin skin=ClientModelCache.INSTANCE.getEquipmentItemData(equipmentId);
model.render(null,skin,false);
if (hasArrow) {
GL11.glTranslatef(1 * scale,1 * scale,-12 * scale);
int tarPart=useCount / 10;
if (tarPart > 2) {
tarPart=2;
}
if (skin.getParts().get(tarPart).getMarkerBlocks().size() > 0) {
CubeMarkerData cmd=skin.getParts().get(tarPart).getMarkerBlocks().get(0);
ForgeDirection dir=ForgeDirection.getOrientation(cmd.meta - 1);
GL11.glTranslatef((-dir.offsetX + cmd.x) * scale,(-dir.offsetY + cmd.y) * scale,(dir.offsetZ + cmd.z) * scale);
GL11.glTranslatef(-0.01F * scale,0.01F * scale,-0.01F * scale);
if (hasArrowSkin && ClientModelCache.INSTANCE.isEquipmentInCache(arrowSkinId)) {
Skin arrowSkin=ClientModelCache.INSTANCE.getEquipmentItemData(arrowSkinId);
if (arrowSkin != null) {
arrowSkin.onUsed();
for (int i=0; i < arrowSkin.getParts().size(); i++) {
SkinPart skinPart=arrowSkin.getParts().get(i);
EquipmentPartRenderer.INSTANCE.renderPart(skinPart,scale);
}
}
 else {
ModelArrow.MODEL.render(scale,false);
}
}
 else {
ClientModelCache.INSTANCE.requestEquipmentDataFromServer(arrowSkinId);
ModelArrow.MODEL.render(scale,false);
}
}
}
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
if (type != ItemRenderType.ENTITY) {
GL11.glPushMatrix();
}
}
 else {
IItemRenderer render=Addons.getItemRenderer(stack,type);
if (render != null) {
render.renderItem(type,stack,data);
}
 else {
renderNomalIcon(stack);
}
}
}