Idea: containers processing their content and fuelled workshops

Example 1: cakes. Imagine the Cook crafts unbaked dough, puts it in an oven and after sitting there for some time it becomes the cake. The input part can be done by adding requires_baking material tag and making an oven a container accepting only this tag. The problem is the dough must be able to recognise it was put in the oven and convert itself to a cake after some time without being restocked prior to that. This can be done to mature juice into wine, milk into cheese, tan leather and dry plant fiber as well. Technical problem here is some recipes should require putting something into a processing container after crafting.

Example 2: fuel. Cauldrons, ovens, kilns and forges should require fuel (wood or coal) to be functional. The problem is the AI would have to load the workshop with fuel if it’s empty and they want to craft something using that workshop. I know right now the recipes use fuel as in ingredient but in case of a kiln or oven there could be several objects processed at once to save fuel (and time because the recipes would take only crafting time into account while maturing time of objects sharing a kiln/oven would overlap).

While there may be some workarounds using new container features I think it is not possible without an entirely new component which has a UI displaying its contents in a grid, so one can see how much time is left for an item to mature. Besides it requires locking an item in a container so it doesn’t get restocked before it matures. The fuel concept seems harder and can be worked around by adding fuel to ingredients so it seems less important.

Pros: time and fuel saved, more immersion
Cons: more to do for the AI

What do you think?

3 Likes

My dream mod basically needs this. There’d be so much more potential for “tech” mods.

1 Like

This is speculation, my coding skills are not great enough to know for sure, but here is an idea:

  • a workshop converts materials, so it might be in an action somewhere, where the crafter stands next to a workshop, and the action code tells the game to convert the materials. If true, this is what you’re gonna use.
  1. Add a new entity in the game, the oven’s soul, one that will be able to perform said converting action as if it was a crafter.
  2. Don’t give said the oven’s soul any representation in the game, except maybe cubemitters inside the oven.
  3. Make sure the cook can’t use the recipes.
  4. Find a way to create a UI, without needing to have an hearthling doing the crafting to trigger a button in the menu.
  5. repeat for another machine.

Bonus feature: the player can turn the oven on and off, as in, he/she can order goods to be made.

1 Like

This can -ish be done now. Think of how the gold flakes work. You could have the blacksmith make “Fuel Pellets” or something simular from a single piece of wood or coal. I’ve tested it before and can confirm that you can produce multiple items from a single recipe. Then just add how many ever pellets you want to said recipies.

Not quite the same as what you want…but it’s mostly there.

So bring Minecraft’s crafting menus to Stonehearth?


I was actually thinking this same thing. Doing EXACTLY this wouldn’t be hard, but it would cause the cook to be stuck at the workbench till it was done, kinda defeating what we’d really want to happen. As far as giving the workbench a soul…that’s above my paygrade.

out of curiosity, why would it. The entire point of it is that the soul takes care of the crafting without the need for the cook. The soul is the crafter. You can make the cook necessary in the process (and I recommend you do) by writing actions to put stuff in and take stuff out of the oven, but as long as these two * are separate actions, the cook can mind his own business in between. (I’d argue)

I can confirm as well. My peg planning mod makes use of it.

*Edit for clarity: input and output, not in/output and crafting.

My statement was without the workbench having a soul. I was saying that currently the cook would still be “crafting” the recipe, thus forced to stay next to it. You could change his animation so that it looked like he was idle, but he’d still have to be there “crafting”.

I wouldn’t know where to begin with giving an object life in this sense.

Not quite, just a grid displaying individual items and progress bars next to them without an option to take stuff in or out manually (that would be the Lings’ job). I don’t think this is a functional crafting grid as in Minecraft (which is a system I truly hate).

I think this wouldn’t be that hard idea-wise. The visible workshop would actually not be a workshop and instantiate an invisible entity being an actual workshop when active. The downside is unless the AI is modified the fuel must be loaded manually each time (what kills most of the time efficiency purpose of the whole idea).

Ah, I haven’t thought of this, saving fuel by using split recipes would be a good idea, would also allow to make different sources of fuel have different values (so a log is split to 3 fuel units and a lump of coal to 6). This would actually make sense even without the whole mechanism.

A potentially easier alternative to having the containers perform work on items would be to simply have the items grow/change into a new state when in the appropriate container. Think of how a tree sapling matures into the different tree stages, but imagine it could only happen when stored inside a crate.

At the moment the opposite is possible (e.g. food doesn’t rot when it’s stored), so this tells me that the game can track whether an item is in a container or not… if that can be flipped around then it should be easy enough to make a container which only accepts certain “unmatured” products, and ensure those products can’t be stored in a normal container.

A possible stumbling-block though is whether it’s possible for items to update while they’re in a container. Although if food rots when placed on input/output shelves as I’ve heard it does, then it seems possible to pull this off.

1 Like

That’s how I imagined it from the very beginning and frankly I don’t see an option to understand it differently, because you have to store something in a container to allow it process the thing. Whether it’s technically done by an item itself or by the container is a matter of which is easier to code.

Food rotting is actually not a good example because it is handled in a somewhat unique way code-wise and I think it would be better to modify the evolve component to allow detecting current container uri or material tags. The problem is then forbidding the AI from restocking items before they mature.

Food does rot when stored. In stockpiles or crates.
screenshot%202018_02_16__11_53_50

I think what happens is that once the item actually changes into a rotten form, it disappears very fast, so we usually not have time to see it. And they are always the last category in the gui.

4 Likes

The idea wasn’t to allow for fuel use (forgot to read that part.). It was to make keg’s, or ovens, or stuff like that, Places which you put stuff in, wait a while, and then got other stuff out again. For that, it works (theorethically), not for fuel.

I was referring to the furnace menu. And if this is what you were referring to as well, I apologize that we’re talking past each other.


I agree that it’d be an issue of restocking, but rotting food may be the way to go. Think about it, food rots, so why not clone that mechanic and modify it to become maturing?

I don’t know if you can make it so it only works in certain containers. I have messed around with the rotting mechanic somewhat, to make a box of eggs prone to rotting, and I saw it was just time dependent, so I don’t know if there is a way to tell the game that cave-at. One can certainly use it to, for instance, let clay goods dry by the air without a container.