Minecraft-Technocracy / Technocracy

Absolutely excessive tech mod for minecraft
GNU Lesser General Public License v2.1
8 stars 7 forks source link

Saline/Salt Works Multistructure #45

Closed Cydhra closed 3 years ago

Cydhra commented 4 years ago

We need a multiblock structure to enrich stuff in liquids by evaporating them. The design has not been finalized yet. Basically we want a tile-able 5x2x5 structure, were liquids can be pumped in and then slowly evaporate the liquid, creating an enriched version of the liquid. Example: Water -> Brine Brine -> Lithiumchlorine

Optionally, a player might be able to heat the structure externally (by hot fluids?, by a heater?) thus amplifying the process.

The 5x5 tiles of the structure may share walls with directly neighbouring tiles. (This will also share fluids between the pools).

Visual examples, details, mechanics and recipes can be discussed here.

tth05 commented 4 years ago

Example of a Saline Saline

The blocks at the center of each tile are the outputs. The grey blocks in the side will the be the inputs (All four inputs are required for every tile). One input can be used to fill all tiles and one output can be used to empty all tiles. Although all inputs and outputs for each tile are a requirement.

Heating: Saline side Below the inputs is space for heating agents, both input and output. These are optional and also not required on all sides and also not between tiles. But to make heating agents function, the whole bottom layer (except for the frame) has to be replaced with blocks that have heating tubes built into them. This would have to be done for the whole floor, so heating a single tile is not an option (if you have multiple).

The fluids will be custom rendered, with the input fluid being on top and the output fluid on the bottom.

Cydhra commented 4 years ago

Heat Transfer Logic is implemented, so one should be able to use it for external heating of the structure now. Do multiblocks implement ILogicClient, yet? If not, this must be implemented (at least for Saline), too.

tth05 commented 4 years ago

Here's what we decided on using in the processing logic of the saline. All heat is calculated and stored in milli-Heat.

MultiBlock Physics-Constants (Config)

heat_drain = 0.02
heat_loss = 0.0001
agent_conversion_per_tile = 50
heat_storage_capacity_per_tile = 500_000

Example Recipe

input: Brine
output: Aquaeous Lithium
boost_heat: 900

Equations

max_agent_conversion_per_tick (mB) = agent_conversion_per_tile * tiles

max_heat_usage (mH) = stored_heat - (stored_heat * e^(-heat_drain)) * tiles
boost_conversion (mB) = Math.floor(max_heat_usage / boost_heat)

total_heat_loss = boost_conversion * boost_heat + stored_heat * heat_loss
total_conversion = base_conversion + boost_conversion

display_temperature = 300 + (100 * stored_heat) / (tiles * heat_storage_capacity_per_tile)
Cydhra commented 4 years ago

The default values in the above comment were changed, because they were completely beyond any reasoning. The current default values can always be found in net.cydhra.technocracy.foundation.content.multiblock.MultiBlockPhysics.kt

Cydhra commented 3 years ago

Superseded by #67 and #71