* Fixes#3040: Cache recipe and revalidate it
This caches the last used recipe instead of only the result. Which
allows to revalidate the crafting grid against the recipe itself before
hitting the CraftingManager again. Therefore avoiding a high performance
hit for recipe lookups, just find the potential same recipe again.
* Remove old recipe lookup as forge provides it now.
* Further optimizations.
These are a bit quick'n'dirty and need a better solution with a full
container/gui refactoring. But for now they provide some great benefits
in terms of performance.
Reduces the visibility of all fields to private and create setters/getters
when necessary. Exceptions are fields with GuiSync as these need to be
public.
Reduces the visibility of internal methods to private/protected/default when possible.
If the items for a recipe are not available in the ME network when you
shift-left-click the NEI question mark, also try to pull from the
player's inventory.
The 'ic' local variable was renamed to 'testInv', as it's used to test
the IRecipe on various crafting propositions to see if the item
satisfies the recipe.
Closes#564, "Shift clicking "?" on NEI recipe ignores items in the
player's inventory".