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
RecipeCoreinstances 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.