Commit Graph

9 Commits

Author SHA1 Message Date
simibubi
2040d66c3e Fundamentals of Fluid Transfer
- Fixed some inconsistencies with a tanks' fluidhandler invalidation when resized
- Patched crashes in present fluid handling of the basin
- Tanks now slightly shade horizontal faces of the contained liquid
- Tanks no longer resend data every tick when filled gradually
- Introduced a new lerped value type with better design decisions
- Refactored Smart tileentity serialization to better support custom overrides in contained behaviours

- Pumps propagate flows in the pipe networks in front and behind itself.
- Pumps collect all possible in and outputs across the reachable pipe graph as endpoints
- Flows move across multiple branches of a pipe network when both are equally viable
- Open-ended pipes are treated as endpoints and leak fluid into and out of a block space
- Open endpoints serialize stateful information about fluid units gathered and held at the interface
- Open endpoints turn a fluid block into 1000 fluid units and back
- Open endpoints undo their transaction when their flow changes from pull to push
- Open endpoints cannot pull fluids back when a full liquid block was not placed yet
- Open endpoints waterlog blocks when the provided fluid is water
- A collision response is triggered when different types of fluids meet at open endpoints
- Fluids are transferred instantly by the throughput of a completed flow per tick
- Pumps cut flows when vital pipes are removed
- Pumps do not lose progress of finished flows when an unrelated part of the pipe network changes
- Pumps do not lose progress of finished flows when reversed
- Pumps distribute their throughput across available input flows evenly
- Pumps distribute gathered input fluid across outputs evenly
- Pumps expose furthest reachable pipefaces to other pumps for chained transfer
- Chained pumps with fully overlapping flow sections provide their endpoints at the entrance of the other pump
- Chained pumps with overlapping flow sections participate in two shared endpoints, one for each pump dominating the contested region
- Chained pumps with overlapping flow only transfer via the optimal of the two possible endpoints based on their speeds
- Chained pumps of equal speed pick one of the two available endpoints deterministically
- Pumps transfer without flows when no pipe is between the pump and the endpoint
- Pumps serialize and recover stateful information about held fluid units at open endpoints
- Chained pumps do not actively transfer when both are partaking with push flows (or both pulling)
- A pull flow originating from an inter-pump endpoint only commences when the corresponding push flow is completed
- Chained pumps re-determine the optimal flow when the speed of one is changed at runtime
- Throughput of chained pumps is determined by their weakest link in terms of speed
- Endpoints created for chained pumps is treated equally to other available endpoints when fluid is distributed
- Pipes do not contain a physical amount of fluid.
- Pipes never hold serialized vital stateful information about fluid transfer.
- Pipes synchronize local flow progress and fluid type to clients
- Flows in a pipe progress with the speed of the network flow
- A networks flow speed depends on the speed of the aggregated pump
- Pipe flows of different flow graphs of different pumps interact with each other
- A collision response is triggered when two different types of fluid meet within a pipe
- Pipes spawn particles to illustrate contained flows/liquids of flows
- The fluid transfer role is exposed through a TE behaviour with some callbacks and properties
- Open endpoints show particles when interacting with in-world fluids
2020-08-24 21:02:03 +02:00
simibubi
fb72a686e7 Ported in-world interfaces
- Outlines now support shading/normals
- Refactored Value boxes to use the outliner system
- Ported scrolloption, filter and frequency slot rendering
2020-05-16 17:51:29 +02:00
simibubi
071482bb26 Ported Outline utility to 1.15
- Outliner can now be used in 1.15
- Ported Chassis range display to use new Outlines
2020-05-15 17:13:38 +02:00
simibubi
a97418e784 Better Schematics
- Visual rework to Schematic items and their interface
- Written Schematics can now be re-used in Schematic Tables
- Schematic and Quill selection is now smoother and more precise
- Schematics no longer re-render their preview every time they are re-positioned
- Schematic tools now move, rotate or flip the schematic more smoothly
- Schematic tools now render the new cuboid outlines rather than plain GL lines
- Fixed Schematics not rendering TileEntities in their preview
- Fixed inconsistent shifting when rotating Schematics with an "odd by even" size
- Fixed typo in Mechanical Press tooltip
2020-04-27 14:04:06 +02:00
simibubi
db8e52be2e Bugs & Refactors
- Added new selection/outline particles for use in place of bounding box rendering
- Refactored JEI categories
- Slots for chance outputs now have a slighly different appearance in JEI
- Redstone links no longer cause a redstone update when loaded in
- Redstone links no longer mess up windmill bearings on chunk reload
- Fixed redstone links not working properly after movement in a contraption
- Filter output amounts can no longer be increased beyond the stack limit
- Chassis range visualization now uses the new outline particle
- Kinetic networks are now aware of movement, such as NBT-item placement, schematic placement and other means of tileentity movement and will reset/reconnect
- Fixed pistons/bearings/etc not being movable by chassis
- Fixed pistons/bearings/etc moving a clone of themselves when attached to the initial block
- Fixed pistons/bearings/etc stopping or losing their structure when loaded incorrecly
- Pulleys can now be moved while extended, moving attached ropes and their own attached structure with them
- Brittle blocks such as ladders/torches/etc can no longer be moved unless their attached block is moved
- Fixed mechanical pistons messing up their kinetic information when changing into a different extension state.
- Fixed misplaced client code introduced by a ScreenOpener hotfix
- Fixed inconsistent belt initialization when belts are placed by schematics or structures, causing them to break at random
- Clutches and Gearshifts now await their turn to re-attach when changed, allowing multiple to be used in a network and swapped within one tick without causing components to break.
- Fixed flexcrate interface crashing if the block gets removed while open
- Some additions/modifications in texture assets
- Pistons no longer get blocked by their push limit if the blocks pushed are attached to each other
2020-04-16 20:46:15 +02:00
simibubi
14b06ec22a Alt-Shift-R
- Axis -> Shaft
- Gear -> Cogwheel
- Large_Gear -> Large_Cogwheel
- Axis_Tunnel -> Encased_Shaft
- Half_Axis -> Shaft_Half
- Fixed further name inconsistencies in other Object Holders
- Added Skeleton for Encased Fan
2019-08-29 01:51:28 +02:00
simibubi
a0149425d5 Improved Belts
- Limiting belts to 45 Degree angles allows for actual hitboxes and vanilla model action
- Animation now only moves around the texture coordinates of cached vertices
2019-08-10 01:00:36 +02:00
simibubi
f67a61290f Forge Proofing
- Updated to Forge 28.0.45, Fixes #5
- Tidied up mods.toml and build.gradle
2019-08-06 19:00:51 +02:00
simibubi
e943690baa Shifting Things Around
- Removed some old resources inherited from TMA
- Introduced a new package structure, grouping by modules rather than types
2019-07-23 12:54:53 +02:00