Jump to content

Expanded Foods 1.6.9


l33tmaan

Recommended Posts

15 minutes ago, Drew Borrowdale said:

Do we have any plans to boil bones in water to make stock?

i was thinking it could be used in place of water for soup but with a higher nutrition.

Well, considering bones officially have zero nutrition it feels a tad off to me to suddenly "magic" some out of thin air.

But you could go the same route as salt - add some minor healing. Have Water + bone in the giant sauce pan -> get bone broth which gives +2 Healing per unit.

Link to comment
Share on other sites

  

33 minutes ago, Lisabet said:

so first two slots are meat, then dumpling then breadcrumbs? was trying to follow the recipe in the handbook guide

also, didn't pemmican used to make batches of 6? I liked using them as travel food but I don't have a big enough supply of fat to only get 1 per...even 2 or 3 would be nice

Yes, that meal recipe should work.
As for the pemmican, I've tweaked the nutrient values so they're individually less good, but they now give 3 balls instead of 1.

22 minutes ago, Drew Borrowdale said:

Do we have any plans to boil bones in water to make stock?

i was thinking it could be used in place of water for soup but with a higher nutrition.
just something to do with all these bones we get. 

That's a nice idea. We'll see.

  • Cookie time 1
Link to comment
Share on other sites

6 minutes ago, DoctorVanGogh said:

Well, considering bones officially have zero nutrition it feels a tad off to me to suddenly "magic" some out of thin air.

But you could go the same route as salt - add some minor healing. Have Water + bone in the giant sauce pan -> get bone broth which gives +2 Healing per unit.

Bones have marrow which does have a far amount of nutrition which is why they are used in stock :)   

Link to comment
Share on other sites

  • l33tmaan changed the title to Expanded Foods 1.3.2

Updated to 1.3.2!

  • Memory leak during multiplayer fixed (among other issues)
  • Keys swapped for screw press; it now displays how much time is remaining
  • Milk bottles now give dairy instead of protein
  • Bottles and screw presses don't explode in water
  • Pemmican buffed; now gives 3 balls instead of 1
  • Mixing bowl can no longer accept infinite liquids
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Drew Borrowdale said:

hmm

i can't seem to get the update as my AV flags exper.dll as a trojan and deletes it :(

exper.dll from 1.3.1 is fine though.

note sure why this flags but is it safe to bring over the dll from the older zip file and replace the flagged one?

We don't know what's up with that, man. I don't wanna say "just trust us", but Jake didn't add anything malicious. You can look through the .dll yourself if you want.
But bringing over the old dll. wouldn't include the new changes from this one, which kind of defeats the purpose.

Edited by l33tmaan
Link to comment
Share on other sites

Like you said, it's probably a false positive from whatever Jake did to get the multiplayer aspects working properly. Perhaps your antivirus thinks it's stealing your credit card info and sending it to a secret server in Malaysia. 🤔 Which one do you use, anyway?

  • Like 1
Link to comment
Share on other sites

On 4/11/2021 at 1:47 AM, DoctorVanGogh said:

Um..... err.... I have issues with 1.3.0 :D
 

  • UI: Mixing Bowls have unexpected interactivity:
    • Interaction hints & clicks only register on the TABLE part of the mixing bowl, not on the pan or ladle
  • Models: There is overlapping geometry on the axle on the underside of the mixing bowl leading to texture z-fighting
  • UI: There is no indication on intermediate cooking products (I checked muffin dough with one, two or three portions of berries) on the amount of ingredients, only the final baked product has differences (1/2/3x fruit sat.)
  • Balance: Fruit added to muffins (maybe other baked things) does not have a 50% bonus for "cooked" foods
  • UI/Audio: A powered mixing bowl will drive me insane with it's CONSTANT grinding. Please consider a change in model so it accepts power not just from below but also the sides so players can easily add brakes/transmission. (maybe turn the bottom "table" into more of a "box") (btw: LOVE the custom model-  its audio issues not withstanding :D).

Now have to test more ^^

---
Edit:

  • You cannot manually add an item into the output slot of the mixing bowl, so full automation is problematic (since you cannot guarantee ejection of the created item).
    If however you never remove a previously created item from the output slot the bowl will happily eject items like the quern.
  • Automating input seems... .... ... challenging :D
    Adding a hopper above the bowl and filling it with 50% raw dough & 50% meat nuggets will sadly not produce lots & lots of meat dumplings. Instead it will fill all 6 input slots of the bowl with either meat or dough (whatever came first in the hopper) and then not create anything, since "six of one" is not a valid recipe.
    Maybe this could be solved if you could "lock" a bowl to a specific recipe? It could then block inputs to only accept "approved" slots & amounts. Better Crates does some "locking" thing. Totally spitballing here, but you added powering the thing, so I'm thinking full on factory automation train here ^^

You can also connect a chute to the bottom of the mixing bowl to get the output. As for the input locking I will definitely look into a way to get something there, full automation will still be pretty tough with current vanilla mechanics, as there is no liquid transport system, and hoppers/chutes trying to input multiple items will get clogged, meaning you will really only be able to do 4 item or less recipes with no liquids, unless you make some type of advanced sorting system out of Archimedes screws. 

Link to comment
Share on other sites

6 hours ago, jakecool19 said:

full automation will still be pretty tough with current vanilla mechanics, as there is no liquid transport system

Well, here you go: You just added "implement hoses & pipes" to your task list :D

All joking aside, it's probably better to wait for 1.15 for this. The "rope physics" previews lend themselves really well to a low tier "hose" system, with maybe actual pipes as upgraded versions.

6 hours ago, jakecool19 said:

meaning you will really only be able to do 4 item or less recipes with no liquids, unless you make some type of advanced sorting system out of Archimedes screws. 

Yeah, but there are a lot of recipes you can make with 4 unique ingredients. I think most people here would want to setup batch processing for things like "make dough", not "make this fancy salad with that syrup, these nuts, that oil and crispy nuggets of that fish". (No slight against piscetarians intended here 😜).
 

  

 

7 hours ago, l33tmaan said:

We don't know what's up with that, man. I don't wanna say "just trust us",

Yeah, don't trust them saying "trust us" - trust those other people 😁

Although on that note...


 

Spoiler

image.thumb.png.665f7ac9ce7c21d474d88ebedea4d3b9.png

What are those "strange experiments" you are distributing to us, @jakecool19? 😕

 

Edited by DoctorVanGogh
Link to comment
Share on other sites

More bugs:
 

  • Crash when trying to remove juice with a bottle from a barrel. (Presumably the same as @Lisabet observed)
  • Crash when trying to add (fully expecting it to fail) a bucket of juice B to a barrel filled with juice A.
    Spoiler

     

    
    
    Running on 64 bit Windows with 16 GB RAM 
    Version: v1.14.8 (Stable)14.04.2021 11:03:22: Critical error occurred
    System.Exception: Asset game:textures/item/food/liquid/blackcurrant.png could not be found
       at Vintagestory.Common.AssetManager.Get(AssetLocation Location)
       at Vintagestory.API.Client.GuiElement.getImageSurfaceFromAsset(ICoreClientAPI capi, String texFileName)
       at Vintagestory.API.Client.GuiElement.getPattern(ICoreClientAPI capi, String texFileName, Boolean doCache)
       at Vintagestory.API.Client.GuiElement.fillWithPattern(ICoreClientAPI capi, Context ctx, String texFileName, Boolean nearestScalingFiler, Boolean preserve)
       at Vintagestory.GameContent.GuiDialogBarrel.fullnessMeterDraw(Context ctx, ImageSurface surface, ElementBounds currentBounds)
       at Vintagestory.API.Client.GuiElementCustomDraw.Redraw()
       at Vintagestory.API.Client.GuiComposer.Compose(Boolean focusFirstElement)
       at Vintagestory.GameContent.GuiDialogBarrel.SetupDialog()
       at Vintagestory.API.Client.GuiDialog.TryOpen()
       at Vintagestory.GameContent.BlockEntityBarrel.OnBlockInteract(IPlayer byPlayer)
       at Vintagestory.GameContent.BlockBarrel.OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel)
       at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseBlock(Block selectedBlock, BlockSelection blockSelection)
       at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt)
       at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt)
       at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt)
       at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt)
       at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt)
       at _jeEziyUSYl0BpbOxT46FYwj5VWL._IIIrDcgMyMKwpTkEZsHikpfl3dh(Single )
       at _idIkJkIueHHf3Oz2WNlBdD0E1XR._DvzT6D0wN3fMakeuDyljJJ09hok(Single )
       at _idIkJkIueHHf3Oz2WNlBdD0E1XR._V5piYzG7beYPldE6UVxY58dqacE(Single )
       at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(Object sender, FrameEventArgs e)
       at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
       at OpenTK.GameWindow.RaiseRenderFrame(Double elapsed, Double& timestamp)
       at OpenTK.GameWindow.DispatchRenderFrame()
       at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
       at _YrS2W1MoaeqC4xqH8ItdZB6vADN._8t1BmEWVlCT9mjx5M0vFIzU9tif(_7T00Rjby4si0wyEBez5dXNqLm7h , String[] )
       at _ejKuc6cg0k8V39o8jDIzquyczbO._8t1BmEWVlCT9mjx5M0vFIzU9tif(ThreadStart )
    -------------------------------
    

     

     

     

    (barrel had red currant juice, bucket had black currant juice).

  • Using the same bucket to remove identical juices from fully filled screw presses will give more juice than the presses contained, and will in fact "overfill" the bucket:
    Press A & B had 2.5 L of juice each, using one bucket to first empty press A, then B results in a bucket full of 11.75L of juice

    Spoiler

     


     

Edited by DoctorVanGogh
Link to comment
Share on other sites

Is there (or could there be) config options to modify the saturation values of the foods in this mod? Also to perhaps disable certain recipes? Server I'm playing on is adding mods, but is looking to maintain a specific level of difficulty, thus may not want things like vinegar or salt from water.

Link to comment
Share on other sites

5 hours ago, DoctorVanGogh said:

More bugs:
 

  • Crash when trying to remove juice with a bottle from a barrel. (Presumably the same as @Lisabet observed)
  • Crash when trying to add (fully expecting it to fail) a bucket of juice B to a barrel filled with juice A.
      Reveal hidden contents

     

    
    
    Running on 64 bit Windows with 16 GB RAM 
    Version: v1.14.8 (Stable)14.04.2021 11:03:22: Critical error occurred
    System.Exception: Asset game:textures/item/food/liquid/blackcurrant.png could not be found
       at Vintagestory.Common.AssetManager.Get(AssetLocation Location)
       at Vintagestory.API.Client.GuiElement.getImageSurfaceFromAsset(ICoreClientAPI capi, String texFileName)
       at Vintagestory.API.Client.GuiElement.getPattern(ICoreClientAPI capi, String texFileName, Boolean doCache)
       at Vintagestory.API.Client.GuiElement.fillWithPattern(ICoreClientAPI capi, Context ctx, String texFileName, Boolean nearestScalingFiler, Boolean preserve)
       at Vintagestory.GameContent.GuiDialogBarrel.fullnessMeterDraw(Context ctx, ImageSurface surface, ElementBounds currentBounds)
       at Vintagestory.API.Client.GuiElementCustomDraw.Redraw()
       at Vintagestory.API.Client.GuiComposer.Compose(Boolean focusFirstElement)
       at Vintagestory.GameContent.GuiDialogBarrel.SetupDialog()
       at Vintagestory.API.Client.GuiDialog.TryOpen()
       at Vintagestory.GameContent.BlockEntityBarrel.OnBlockInteract(IPlayer byPlayer)
       at Vintagestory.GameContent.BlockBarrel.OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel)
       at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseBlock(Block selectedBlock, BlockSelection blockSelection)
       at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt)
       at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt)
       at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt)
       at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt)
       at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt)
       at _jeEziyUSYl0BpbOxT46FYwj5VWL._IIIrDcgMyMKwpTkEZsHikpfl3dh(Single )
       at _idIkJkIueHHf3Oz2WNlBdD0E1XR._DvzT6D0wN3fMakeuDyljJJ09hok(Single )
       at _idIkJkIueHHf3Oz2WNlBdD0E1XR._V5piYzG7beYPldE6UVxY58dqacE(Single )
       at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(Object sender, FrameEventArgs e)
       at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
       at OpenTK.GameWindow.RaiseRenderFrame(Double elapsed, Double& timestamp)
       at OpenTK.GameWindow.DispatchRenderFrame()
       at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
       at _YrS2W1MoaeqC4xqH8ItdZB6vADN._8t1BmEWVlCT9mjx5M0vFIzU9tif(_7T00Rjby4si0wyEBez5dXNqLm7h , String[] )
       at _ejKuc6cg0k8V39o8jDIzquyczbO._8t1BmEWVlCT9mjx5M0vFIzU9tif(ThreadStart )
    -------------------------------
    

     

     

     

    (barrel had red currant juice, bucket had black currant juice).

  • Using the same bucket to remove identical juices from fully filled screw presses will give more juice than the presses contained, and will in fact "overfill" the bucket:
    Press A & B had 2.5 L of juice each, using one bucket to first empty press A, then B results in a bucket full of 11.75L of juice

Hmm, I'm not able to replicate the two crashes. I'm DEFINITELY not having issues with exchanging liquids between barrels and bottles, but I can't put cranberry juice in the same barrel as black currant juice. It won't let me.
I am having those same issues with juices, though. It seems to interact oddly with the saucepan, putting together 2.5 +1.5 liters results in 5 liters, a full saucepan, while getting the same amounts from the screwpress using a bucket results in 11.75-12 liters (it seems to change). Darn, I thought we'd ironed those kinks out.

3 hours ago, Snowman said:

Is there (or could there be) config options to modify the saturation values of the foods in this mod? Also to perhaps disable certain recipes? Server I'm playing on is adding mods, but is looking to maintain a specific level of difficulty, thus may not want things like vinegar or salt from water.

I can look into config options, sure. It's getting too complex for me to tell people "just go change the numbers in the .json"... which you can still do in the meantime. 😅

Link to comment
Share on other sites

1 hour ago, l33tmaan said:

Hmm, I'm not able to replicate the two crashes.

Okay... I can expand on those crashes:

  1. Create empty world
  2. Spawn Barrel
  3. Place Barrel
  4. Spawn 1 portion of cranberry juice (literally the raw droplets)
  5. Open Barrel GUI
  6. Try putting juice portion into item barrel slot
  7. Crash

Are you sure you don't have some development texture copies floating around in paths not included for the distributed version?

 

Spoiler

System.Exception: Asset game:textures/item/food/liquid/cranberry.png could not be found
   at Vintagestory.Common.AssetManager.Get(AssetLocation Location)
   at Vintagestory.API.Client.GuiElement.getImageSurfaceFromAsset(ICoreClientAPI capi, String texFileName)
   at Vintagestory.API.Client.GuiElement.getPattern(ICoreClientAPI capi, String texFileName, Boolean doCache)
   at Vintagestory.API.Client.GuiElement.fillWithPattern(ICoreClientAPI capi, Context ctx, String texFileName, Boolean nearestScalingFiler, Boolean preserve)
   at Vintagestory.GameContent.GuiDialogBarrel.fullnessMeterDraw(Context ctx, ImageSurface surface, ElementBounds currentBounds)
   ...

It's always a liquid texture lookup not in the expandedfoods namespace for the barrel fullness meter....

 

Link to comment
Share on other sites

Yeah, I can't replicate them because I fixed the issue as soon as Lisabet brought it up and thought I released it in 1.3.2. As it turns out, that is not the case. Oops!

The barrel doesn't like textures that are outside of the /game directory, so it was an easy fix. I'll have 1.3.3 out later today. I'm trying to have some actual content out, but all these bugfixes keep interrupting me. 😛

  • Sad 1
Link to comment
Share on other sites

Okay... it's not you.... well it is, but even if you weren't it would not matter - vanilla is borked ;)

The barrel GUI has a bug in the "fullness" meter draw code. Custom texture cause it to blow.

Workaround:
Copy your liquid texture assets from `expandedfoods\textures\item\food` also into `game\textures\item\food`. It's ugly and may lead to collisions with other mods, but the barrel gui does a hard-coded lookup under the `game\textures` path for the fullness bar 😢

 

Spoiler

Look Ma! No Crash!1!!
2021-04-14_19-18-13.thumb.png.8837180c8a1cc68f3f1d5b3b6e6afc3e.png

Edit:
Well crap... could have saved myself 20 minutes of debugging... 😉

Edited by DoctorVanGogh
Link to comment
Share on other sites

  • l33tmaan changed the title to Expanded Foods 1.3.3

Updated to 1.3.3!

  • Can now add fried meat & ANY cooked meat to salads (including fish)
  • Bottles no longer crash the game when used on a barrel
  • Fruit juice turns into rot upon rotting; barrel recipes added for juice > vinegar conversion
  • Screw press liquid overfilling patched
  • Eliminated false salad clone
Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.