Program: 12784
Project: 12784
Buggy source:
@SubscribeEvent public void onEntityJoinWorld(EntityJoinWorldEvent event){
  if (event.entity instanceof EntityVampireHunter) {
    EntityVampireHunter e=(EntityVampireHunter)event.entity;
    if (e.isLookingForHome() == false)     return;
    Village v=event.world.villageCollectionObj.findNearestVillage(MathHelper.floor_double(e.posX),MathHelper.floor_double(e.posY),MathHelper.floor_double(e.posZ),20);
    if (v != null) {
      int r=v.getVillageRadius();
      AxisAlignedBB box=AxisAlignedBB.getBoundingBox(v.getCenter().posX - r,0,v.getCenter().posZ - r,v.getCenter().posX + r,event.world.getActualHeight(),v.getCenter().posZ + r);
      ChunkCoordinates cc=v.getCenter();
      e.setHomeArea(cc.posX,cc.posY,cc.posZ,r);
      e.setFoundHome();
    }
  }
 else   if (event.entity instanceof EntityIronGolem) {
    EntityIronGolem golem=(EntityIronGolem)event.entity;
    EntityAITasks targetTasks=(EntityAITasks)Helper.Reflection.getPrivateFinalField(EntityLiving.class,golem,"String_Node_Str");
    if (targetTasks == null) {
      Logger.w("String_Node_Str","String_Node_Str");
    }
 else {
      for (      Object o : targetTasks.taskEntries) {
        EntityAIBase t=((EntityAITasks.EntityAITaskEntry)o).action;
        if (t instanceof EntityAINearestAttackableTarget) {
          targetTasks.removeTask(t);
          targetTasks.addTask(3,new EntityAINearestAttackableTarget(golem,EntityLiving.class,0,false,true,new IEntitySelector(){
            @Override public boolean isEntityApplicable(            Entity entity){
              if (entity instanceof IMob && !(entity instanceof EntityVampireHunter)) {
                return true;
              }
              return false;
            }
          }
));
          break;
        }
      }
    }
  }
 else   if (event.entity instanceof EntityCreeper) {
    EntityCreeper creeper=(EntityCreeper)event.entity;
    EntityAITasks tasks=(EntityAITasks)Helper.Reflection.getPrivateFinalField(EntityLiving.class,creeper,"String_Node_Str");
    if (tasks == null) {
      Logger.w("String_Node_Str","String_Node_Str");
    }
 else {
      tasks.addTask(3,new EntityAIAvoidVampirePlayer(creeper,12.0F,1.0D,1.2D,BALANCE.VAMPIRE_PLAYER_CREEPER_AVOID_LEVEL));
    }
  }
}

Fixed version (ground truth):
@SubscribeEvent public void onEntityJoinWorld(EntityJoinWorldEvent event){
  if (event.entity instanceof EntityVampireHunter) {
    EntityVampireHunter e=(EntityVampireHunter)event.entity;
    if (e.isLookingForHome() == false)     return;
    Village v=event.world.villageCollectionObj.findNearestVillage(MathHelper.floor_double(e.posX),MathHelper.floor_double(e.posY),MathHelper.floor_double(e.posZ),20);
    if (v != null) {
      int r=v.getVillageRadius();
      AxisAlignedBB box=AxisAlignedBB.getBoundingBox(v.getCenter().posX - r,0,v.getCenter().posZ - r,v.getCenter().posX + r,event.world.getActualHeight(),v.getCenter().posZ + r);
      ChunkCoordinates cc=v.getCenter();
      e.setHomeArea(cc.posX,cc.posY,cc.posZ,r);
      e.setFoundHome();
    }
  }
 else   if (event.entity instanceof EntityIronGolem) {
    EntityIronGolem golem=(EntityIronGolem)event.entity;
    EntityAITasks targetTasks=(EntityAITasks)Helper.Reflection.getPrivateFinalField(EntityLiving.class,golem,"String_Node_Str");
    if (targetTasks == null) {
      Logger.w("String_Node_Str","String_Node_Str");
    }
 else {
      for (      Object o : targetTasks.taskEntries) {
        EntityAIBase t=((EntityAITasks.EntityAITaskEntry)o).action;
        if (t instanceof EntityAINearestAttackableTarget) {
          targetTasks.removeTask(t);
          targetTasks.addTask(3,new EntityAINearestAttackableTarget(golem,EntityLiving.class,0,false,true,new IEntitySelector(){
            @Override public boolean isEntityApplicable(            Entity entity){
              if (entity instanceof IMob && !(entity instanceof EntityVampireHunter)) {
                return true;
              }
              return false;
            }
          }
));
          break;
        }
      }
    }
  }
 else   if (event.entity instanceof EntityCreeper) {
    EntityCreeper creeper=(EntityCreeper)event.entity;
    EntityAITasks tasks=(EntityAITasks)Helper.Reflection.getPrivateFinalField(EntityLiving.class,(EntityLiving)creeper,"String_Node_Str");
    if (tasks == null) {
      Logger.w("String_Node_Str","String_Node_Str");
    }
 else {
      tasks.addTask(3,new EntityAIAvoidVampirePlayer(creeper,12.0F,1.0D,1.2D,BALANCE.VAMPIRE_PLAYER_CREEPER_AVOID_LEVEL));
    }
  }
}