Removes the split collection as in some rare corner cases the insertion
order is important to maintain the correct data in terms of self cleaning.
Keeps the general cleanups and split of Fluid/ItemList.
Fixes#1964
Blocks are now rendered with the correct culling mode and rotated similar
to the icon itself, but slightly shifted to the left that the front
texture appears larger (This applies to items following the normal
minecraft rotation like furnaces)
Items are also now rotated a bit differently and more in line with their
item rendering as well as longer being mirror inverted.
Replaces the reflexive instantiation of the Renderes with a factory
method.
Some optimizations to the renderers to no longer push the whole OpenGL state to the stack.
General cleanup of duplicate code, etc
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.
ModVersionFetcher will now return a MissingVersion in case of an exception
instead of letting it propagate upwards.
Also added a generic try/catch to the VersionChecker itself, just in case
any unchecked exception might be triggered inside the thread and at least
not logged correctly.
Cells are only ever using precise for storing their items, thus there is
no need for a sorted collection with in general logarithmic time.
Storing them inside a HashMap for constant time is a way better solution.
Also adds an UnsortedItemList without fuzzy handling.
If anyone tries to use it, it will currently throw an
UnsupportedOperationException, Should the need arise guava Collections2
could provide a filter for it, but it is no alternative with heavy usage
of fuzzy access.
Also some code cleanup, reducing the visibility when not needed as
protected/default as well as removing actually unused methods.
Mostly used for the recipe system, but can also be used for debugging purposes. Debug options needs to be ticked to use the full information gain. Recipes only require the normal localization and the specific name plus metadata.
Shifted the recipes into a recipes folder where the CSV will also reside. This will also elevate the copying of the readme to the user directory since it can reside in the recipes folder.
Fixed a bug where the copier would copy the would also copy empty folders
Splitted the ItemList and MeaningfulIterator into an item and fluid
version.
Added an IdentityHashMap as additional item layer to the ItemList for a
faster access.
Refactored FluidList, findFuzzy will now return the same fluid instead of
an empty collection.
The export bus will now no longer speed up, if more than 1 of the last
crafting requests failed and slow down, if more then 5 failed.
Some code cleanup and moved the custom iterator into the helper package
as it is clearly related to the craftingtracker and not the export bus.