Split inventory into input/output sections.
Added support for retrieving ingredients from neighboring inventories.
Yes, this means crafting chains are possible.
Various other minor tweaks to when it requests power, how it decides it
has everything it needs to craft, etc...
Can only remove 1 item at a time, but that's almost always sufficient.
Also added a bunch of helper functions in InvUtils (moving items between
inventories, counting items, etc..).
Item and Power.
Item Pipe won't connect to Stone or Cobblestone and has half the
friction of Stone.
Power Pipe takes the place of Gold (64 MJ/t) and bumps Gold and Diamond
up to 256 MJ/t and 1024 MJ/t respectively. Expanding the upper tier
power distribution capacity.
Various textures adjusted to keep pipes distinct.
This pattern is basically the old Flatten pattern that would clear all
the way to the sky.
Recipe
GGG
GGG
BBB
Flatten got a matching recipe:
GGG
BBB
BBB
This NEEDS extensive testing. I only have a vague idea how this code
works.
The original code was just tossing any power beyond what it could
handle, with no throttle on how much it was requesting from its
neighbors.
I think its working, more or less, but you'd probably have to hook it to
some TE Cells or something to know for sure.
Explosions are gone, loss over distance is gone.
Added two new Power pipes, Cobble and Diamond.
All pipes have much smaller max throughput:
Cobble = 8 MJ/t
Stone = 16 MJ/t
Gold = 64 MJ/t
Diamond = 256 MJ/t
The power display will turn red if a pipe has hit its max capacity. You
can use smaller pipes to throttle certain parts of your power net.
Machines are more lossy now to make up for the lossless pipes. Expect
low power draws even when idle.
Also added on/off Gate action support to lasers and ACTs.
It now processes in columns, greatly increasing the performance.
It is no longer halted entirely by anything it can't break. In other
words, you can use it to fill over bedrock.
Changed how the clear portion works, it no longer clears all the way to
sky, instead it only clears IN the box.
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.
Add Ocean Oil Field and Desert Oil Field biomes. Rare chance of
spawning. I only found a single Ocean Oil Field within 4k blocks of
spawn. But if you find one, you will never run out of Oil, ever.
These two biomes have a 40x multiplier on oil spawn chance.
They can be disabled by setting the biome Id in the config to -1.
The chunk spanning gen code turned out to be unnecessary. The real
problem was that the Lake gen code was poorly balanced. That's fixed
now.
I've also added some code to prevent Wells and Lake from spawning on
overly rough terrain. No more wells on the edges of cliff faces for
example. I had to rebalance the spawn chances though. Of note is the
fact that I increased the chance multiplier for surface deposit biomes
from 1.5 to 4. Distribution balance may need some more work.
Additionally, I've started work on an Oil Field biome, a rare biome that
spawns massive amounts of Oil. Its currently disabled, but the ground
work is there. Next step is creating a suitably sparse Simplex noise
field for the biome replacer.
I recently did a major overhaul of Railcraft's button code for some
upcoming features. Figured I backport it to Buildcraft as well.
Texture information was abstracted into an easily swapped object.
Multi-Buttons can now have different textures for each state.
Added tool tip support for all buttons (with mouse over delay!).
Added textures and states for a "Lock" Multi-Button.
Greatly reduced code duplication.
I don't think a temperature of 10000°C or 0°C doesn't make sense. This way it will at least always be under the melting point of iron and above the freezing point of water.
Oil Lakes can no longer only spawn in sand. Added IMC calls for Lakes
and excluded Biomes.
"oil-lake-biome" and "oil-gen-exclude", both take the BiomeID as an
argument.
Increased specular highlights on Oil texture, you shouldn't have to jump
in the pool to tell the difference between lighting glitches and oil
anymore.
Oil Lakes now have 50% chance of being 2 blocks deep. Improved gen to
prevent floating trees, etc.
Oil Wells should no longer gen in mod added trees.
Spawns an infinite Oil Spring at bedrock under 25% of large Oil Wells.
This Spring slowly produced more oil over time.
More balance testing needed, but I need to fix that damn Redstone Engine
bug first.