Skip to content

feat: cook rice into boiled rice, fried rice, rice pudding and sushi - #121

Open
JustinasLa wants to merge 2 commits into
mainfrom
feat/rice
Open

JustinasLa wants to merge 2 commits into
mainfrom
feat/rice

Conversation

@JustinasLa

Copy link
Copy Markdown
Contributor

Rice was a full CustomCrops crop with no Cooking recipe. This adds boiled rice, fried rice, rice pudding and sushi.

What rice was before this

  • conversions.yml turned harvested rice into vegetable(type=vegetable_2;origin=Rice), with no RICE override, so it showed the tomato model.
  • Nothing cooked it. The only thing that took it was the generic vegetable_2 path: the cutting board cut it into "Rice (Cut)" (tomato_cut model) and "Rice (Chopped)". On Dev only, the juicer also pressed it into Rice Paste.
  • So none of the four dishes existed. I didn't find any partial version to reuse.

Station choices

dish where why
Boiled Rice soup pot (water, heat) Rice is now its own grain(type=rice) type. Its pot option has output: grain(type=boiled_rice), the same way chopped corn's pan option pops into popcorn. Before this, only the frying pan honoured output. Now PotReference does too: rice is raw once it's in the water, turns into Boiled Rice when done, burns as boiled rice if left in, and comes back as plain rice if taken out early. It isn't Raw in hand, and since its only option has an output, it has no cut step.
Fried Rice frying pan Boiled rice's frying_pan option outputs fried_rice. The pan used to refuse anything not Raw, so it now also takes a piece whose option here names an output (CookingOutput.turnsHere, never burnt). The pan cooks each piece on its own, so "rice with egg, veg or meat" happens when you take it out: fried rice stirs in the other pieces beside it that are fried (Cooked, not raw or burnt). Their food is added to its own, their origins name it (Egg Fried Rice), and quality, freshness and variety come from all of them. The config is the new frying-pan.yml (stir-ins, plus a bonuses poison like pot.yml's, so a grilled red mushroom hides in it). Pieces still raw stay in the pan, and taking the egg out first keeps it as a plain fried egg.
Rice Pudding empty pot, masher, ladle It's a pot.yml mash, like mashed potatoes, with no Java: 2 boiled rice, a cup of milk and a sweetener (sugar or maple syrup). Cinnamon, vanilla or nutmeg are extras that make it Aromatic. It serves 2 ladles onto plates. Milk on its own starts a pudding, because for mashed potatoes milk is only an extra.
Sushi cutting board, knife A board recipe sums all its inputs, and the board is single-origin, so rice plus salmon couldn't go together. New recipe keys: combine: true takes one of each input line per unit, as many units as every line has, and leaves the rest on the board. On a single-origin station, only inputs on the same line must share an origin (so one fish at a time). origin-from: 2 fills {origin} from the filet: 1 boiled rice + 1 raw filet gives 2 Salmon Sushi.

Notes

  • Food numbers (repo scale): rice 8/5, boiled 10/5 (+Boiled), fried 12/6 (+Cooked) plus whatever it stirred in, sushi 10/7 per piece. The pudding's food is its ingredients' total split over its 2 servings.
  • Items: new tfmc_cooking items reuse tfmc_pack's unused ricebowl, ricesoup and sushi food icons. Fried rice is the rice bowl with golden grains and bits of egg, peas and carrot. In the pot, pan and on the board rice shows as a loose heap of grains. Burnt and rotten looks tint only the food, so the bowl stays brown.
  • Old rice items already converted as vegetable_2 keep working as before (cut, juicer paste, salads). Only newly picked-up rice is the new type.
  • Two small related changes: PotReference.keepsOnRebuild keeps a boiled piece that only fries from then on, so boiled rice survives a restart. CookingOutput.restoreInput now uses the cooking clock, so a piece that came in already cooked (boiled rice taken off before it fries) keeps its Boiled step.
  • Dev config (IF whitelists for the pan/pot/board/plate and the juicer's rice paste line) goes on separately with an apply script.

Tests

mvn -o -B clean verify: 1454 tests pass, 100% line coverage. New: RiceCookingTest (pot, pan and stir-ins, shipped config, pudding paths) and CombineRecipeTest.

🤖 Generated with Claude Code

Harvested rice is now its own grain type (it was a vegetable_2 with the tomato model,
which the board cut into "Rice (Cut)"). It boils in the soup pot into boiled rice: the
pot now honours a cooking option's output like the frying pan. Boiled rice goes into
the pan although it isn't raw and fries into fried rice, which stirs in the other fried
pieces beside it when it's taken out (frying-pan.yml stir-ins: Egg Fried Rice, with a
poison bonus like the other dishes). Two boiled rice, a cup of milk and a sweetener make
rice pudding as a pot.yml mash. A boiled rice and a raw fish filet roll into two pieces of
sushi on the cutting board through a new combine recipe (one of each input, mixed origins,
origin-from names it Salmon Sushi). New tfmc_cooking items reuse tfmc_pack's rice bowl,
rice soup and sushi icons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b3152261-4dc4-413b-baa2-2af237b96578
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@github-actions github-actions Bot added the size:XL 500-999 effective changed lines (tests excluded in mixed PRs). label Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL 500-999 effective changed lines (tests excluded in mixed PRs).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant