It was possible to get the item in a phantom slot with the new inventory
management features. This prevents for example the item double click
feature (make stack) to take items from the ghosted inventory.
Also reduced Oil Ocean Biome chances again.
Previously it was using the same noise field for all seeds. Now it
randomly offsets the noise field based on the world seed. Its not truly
random, but at least you won't be able to travel to the same coordinates
in every world and find an Oil Biome.
Renamed "Auto Workbench" to reduce confusion with the "Advanced Crafting
Table".
Once again I barrowed liberally from Railcraft. This time from the
Rolling Machine. You will recognize the new GUI.
Auto Workbenches are 100% compatible with vanilla Hoppers, or whatever
you want to use to interface with it. It no longer implements
ISpecialInventory at all. Even RP2 would work with it now.
Implemented the same "Sample Output" vs "Real Output" design that the
Rolling Machine uses. If there are enough items to craft multiple times,
it will craft automatically. But if there are only enough items for one
craft job, you must click the sample output slot to start the process.
Separating the display from the output helps reduce the complexity of
the code by a large factor.
Banned all items that can't stack or that have containers from being
used in the Auto Workbench. Supporting these types of items is the major
reason the previous version was so buggy. The Advanced Crafting Table
does a much better job with that kind of thing, use it instead.
Crafting now has a time cost. It take 256 ticks to craft an item. Unlike
the Rolling Machine, it DOES NOT require power.
Removed ability to pull from adjacent inventories. Its laggy, complex,
and unnecessary now. If you need more capacity, use a Hopper or Chute.
It was an O(n^2) operation to insert an item. Now its just O(n). The
functions for checking to see if a stack is valid in a slot are
expensive and should never be called more than once per slot, let alone
n^2 times (where n is the length of the inventory).
Additionally, by wrapping inventory in a slot iterator, I was able to
eliminate the need to handle FSided and VSided differently from
IInventory.
And replaced BC's Advanced Slot System in Advanced Crafting Tables,
Emerald Pipes and Diamond Pipes.
The advantages of the Phantom Slot System is that it uses the same
Mojang code for net sync that normal Slots do. This results in much
simpler code and the slots can be treated just like any other inventory
slot instead of all the special case code that Advanced Slot does.
The Advanced Slot System is still used in several places (Assembly
Tables, Refineries, etc...), Gates but in these cases the Slot often
contains non-ItemStacks. So I'm not going to touch them for the moment.
Additionally, I cleaned up the names of some of the classes in the
Silicon package.