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; }