Allows addons who register a custom IStorageChannel to use the IStorageCell interface without registering a cell handler. Also adds some helpers (poweredInsert/poweredExtract).
This breaks API!
* Reworked IO Port to handle custom StorageChannels in a better way.
* Added a transferFactor to `IStorageChannel` to allow addons to speedup the IO Port to transfer faster. E.g. 1000 mB fluid as fast as transfering 1 bucket (item) per operation, not just 1 mB.
* Also some changes to avoid moving fluids being 1000x as energy expensive as items.
* 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.
* Remove the old annotation system
* Use TileEntity#onLoad instead of onChunkLoad event
* Do not call invalidate in onChunkUnload and validate in onLoad
This is first update pass, which is mainly import reorganization, name
fixes, etc... Although some parts of second were done where changes
aren't important.
Errors: ~1400 -> 82.
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.
Deprecates the old usage of the AEItemDefinitions via the direct method access of
* blocks()
* parts()
* items()
* materials()
and thus use the new re-direct via definitions().
All definitions are now initialized, no matter what. But SubItems, Items and Blocks are not registered, if by chance are disabled.