예제 #1
0
 public static Object[] getCraftingRecipeKey(EntityPlayer player, ItemStack stack) {
   int[] key = new int[] {Item.getIdFromItem(stack.getItem()), stack.getItemDamage()};
   if (keyCache.containsKey(key)) {
     if (keyCache.get(key) == null) return null;
     if (ThaumcraftApiHelper.isResearchComplete(
         player.getCommandSenderName(), (String) (keyCache.get(key))[0])) return keyCache.get(key);
     else return null;
   }
   for (ResearchCategoryList rcl : ResearchCategories.researchCategories.values()) {
     for (ResearchItem ri : rcl.research.values()) {
       if (ri.getPages() == null) continue;
       for (int a = 0; a < ri.getPages().length; a++) {
         ResearchPage page = ri.getPages()[a];
         if (page.recipeOutput != null && stack != null && page.recipeOutput.isItemEqual(stack)) {
           keyCache.put(key, new Object[] {ri.key, a});
           if (ThaumcraftApiHelper.isResearchComplete(player.getCommandSenderName(), ri.key))
             return new Object[] {ri.key, a};
           else return null;
         }
       }
     }
   }
   keyCache.put(key, null);
   return null;
 }
  public static ResearchItem copy(ResearchItem res, String newKey, String newCat, int dC, int dR) {
    ResearchItem rItem;

    if (res.icon_resource != null)
      rItem =
          new ResearchItem(
              newKey,
              newCat,
              res.tags,
              dC,
              dR,
              res.getComplexity(),
              Object[].class.cast(res.icon_resource));
    else
      rItem =
          new ResearchItem(
              newKey,
              newCat,
              res.tags,
              dC,
              dR,
              res.getComplexity(),
              Object[].class.cast(res.icon_item));

    rItem.parents = res.parents;
    rItem.parentsHidden = res.parentsHidden;
    rItem.siblings = res.siblings;
    rItem.setPages(res.getPages());

    rItem.setHidden();

    if (res.isAutoUnlock()) rItem.setAutoUnlock();

    if (res.isFlipped()) rItem.setFlipped();

    if (res.isHidden()) rItem.setHidden();

    if (res.isRound()) rItem.setRound();

    if (res.isSecondary()) rItem.setSecondary();

    if (res.isSpecial()) rItem.setSpecial();

    if (res.isStub()) rItem.setStub();

    if (res.siblings != null && res.siblings.length > 0) {
      String[] sibStr = new String[res.siblings.length + 1];
      for (int i = 0; i < res.siblings.length; ++i) sibStr[i] = res.siblings[i];

      sibStr[sibStr.length - 1] = newKey;

      res.setSiblings(sibStr);
    } else {
      res.setSiblings(newKey);
    }

    if (rItem.siblings != null && rItem.siblings.length > 0) {
      String[] sibStr = new String[rItem.siblings.length + 1];
      for (int i = 0; i < rItem.siblings.length; ++i) sibStr[i] = rItem.siblings[i];

      sibStr[sibStr.length - 1] = res.key;

      rItem.setSiblings(sibStr);
    } else {
      rItem.setSiblings(res.key);
    }

    return rItem;
  }