/**
   * @param spawnGroup
   * @param instanceIndex
   */
  public static void spawnGroup(SpawnGroup spawnGroup, int instanceIndex) {
    VisibleObjectTemplate objectTemplate = ItemService.getItemTemplate(spawnGroup.getNpcid());
    if (objectTemplate == null) return;

    int pool = spawnGroup.getPool();
    for (int i = 0; i < pool; i++) {
      SpawnTemplate spawn = spawnGroup.getNextAvailableTemplate(instanceIndex);
      int objectId = IDFactory.getInstance().nextId();
      StaticObject staticObject =
          new StaticObject(objectId, new StaticObjectController(), spawn, objectTemplate);
      staticObject.setKnownlist(new KnownList(staticObject));
      bringIntoWorld(staticObject, spawn, instanceIndex);
    }
    spawnGroup.clearLastSpawnedTemplate();
  }
 @Override
 protected void onFailureFinish() {
   PacketSendUtility.sendPacket(
       requestor,
       new SM_CRAFT_UPDATE(
           recipeTemplate.getSkillid(),
           itemTemplate,
           currentSuccessValue,
           currentFailureValue,
           6));
   PacketSendUtility.broadcastPacket(
       requestor,
       new SM_CRAFT_ANIMATION(requestor.getObjectId(), responder.getObjectId(), 0, 3),
       true);
   PacketSendUtility.sendPacket(
       requestor,
       SM_SYSTEM_MESSAGE.STR_COMBINE_FAIL(
           new DescriptionId(
               ItemService.getItemTemplate(recipeTemplate.getProductid()).getNameId())));
 }