* Use itemstack as itemdef
* HIGH_TAG/LOW_TAG should be compared both directions
* Remove getTagCompound
* Make Itemlist implementation independent
* Cache item id for performance reasons
* Add preconditions to saveguard against external meddling
* Chache itemDamage
* Remove IAEStackSearchKey for now, rename getDisplayStack
* Refactored the BaseActionSource
It now uses an interface `IActionSource` instead of a concrete class and further
subclasses.
Instead of relying on a specific class for a certain action type, it now
uses methods with Optional as return values to determine a player or
machine issuing an action. Refer to the JavaDocs for the exact behaviour.
* `IActionHost` no longer extends `IGridHost`
It never used the additional functionality and if needed the `IGridNode`
will also provide a reference to the corresponding `IGridHost`.
Due to most crafting related GUIs being hardcoded to `IGridHost`,
they no longer work when `IActionHost` is not extending it. Actually
`IActionHost` is the better solution for it, as it prevents us from looking
the grid up via the `IGridHost` and potentially finding a wrong grid.
* Interfaces now only lock the currently worked slot.
This allows `DualityInterface#onChangeInventory` to update slots of the same interface, should they be the source for a requested item and therefore updating their working set accordingly to queue further crafting requests for unfulfilled stack requirements.
* Refactored GrinderRegistry.
Changed IGrinderRegistry#getRecipes to return an unmodifiable collection.
Added a way to remove recipes explicitly instead the internal list.
Added a cache to lookup recipes instead of iterating a list.
Renamed IGrinderEntry to IGrinderRecipe
Made IGrindRecipe immutable for easy caching.
Improved GrinderLogging and Exception Handling
JEI Workaround as it expects a List instead Collection.
* Added blacklist of explicit oredict names for the grindstone.
This can be used should the automatic recipe generation create unintended
loopholes.
Added a singleton getter instead the public field.
Reduced all fields to private.
Replaced field access with getters.
Added setters where necessary (Dimension/Biome Registration)
Added config options to disable more features.
Splitted Enum name from the config key.
Changed FacadeConfig and Networkhandler similar to AEConfig.init().
* Cleaned up unused Mod integrations other than for mods that are likely to be integrated soon.
* Introduced an easier Facade class to access mod integration abstractions (called Integrations).
* Removed the link between IntegrationType and integration abstraction. Integrations are now explicitly instantiated inside of IntegrationNode.