Skip to content

Crafting / Core / Recipe / Internal

Purpose

This folder contains framework-internal helpers used to support recipe resolution.

Everything in Recipe/Internal exists to: - hide optional-system complexity - cache conversions safely - prevent public callers from depending on implementation details

Nothing in this folder is a supported extension point.


What lives here

RecipeCache

  • RecipeCache
  • Internal utility that converts Unity-facing recipe assets into RecipeCore instances when optional systems are present.
  • Used exclusively by RecipeResolve.
  • Caches converted recipes to avoid repeated allocations and conversions.

Key characteristics: - Conversion only occurs when the relevant compile-time defines are present. - Converted RecipeCore instances are hidden (HideFlags.DontSave). - Failure to resolve is handled gracefully with warnings, not exceptions.

Callers must never reference or depend on this type directly.


What does NOT belong here

  • Public recipe APIs
  • Game-specific recipe logic
  • Validation rules
  • Runtime mutation logic
  • Any type that external code might reasonably need

If a type needs to be accessed by gameplay code, it does not belong here.


Visibility & stability

All types in this folder are: - internal - excluded from public API guarantees - free to change without notice

This includes: - method signatures - caching strategy - conversion behaviour - presence or absence of types

Teachables and external consumers are intentionally unable to access this folder.


Usage rules

  • Always resolve recipes via RecipeResolve.
  • Treat failure to resolve as a supported, expected outcome.
  • Never cache or store references to internal recipe helpers.

If you find yourself wanting to reach into this folder, that is a signal that a public seam is missing, not that this folder should be exposed.


Design notes

  • Internal recipe plumbing is intentionally boring.
  • Optional systems must not leak into the public API.
  • This folder exists to keep the public surface honest and minimal.

Stability stops at this boundary.