Skip to content

feat: build pizzas on a peel, bake them in the oven and serve them in slices - #101

Merged
JustinasLa merged 1 commit into
mainfrom
feat/pizza
Oct 29, 2026
Merged

JustinasLa merged 1 commit into
mainfrom
feat/pizza

Conversation

@JustinasLa

Copy link
Copy Markdown
Contributor

Summary

Pizzas, built on a pizza peel and baked in the oven like a baking tray:

  1. Place a pizza peel and right-click it with dough to start a pizza.
  2. Right-click with a paste to spread it straight on the dough (optional, one per pizza, before any topping).
  3. Right-click with toppings (cheese, cut or chopped vegetables, fruit, sausage, spices) to lay them on it, up to max-toppings (default 6). An empty hand takes the top layer back.
  4. Sneak and right-click with an empty hand to carry the peel into a lit oven. The pizza cooks after cook-seconds and burns at burn-seconds, and every layer then shows its cooked or burnt look.
  5. Right-click the baked pizza with an empty hand to take a slice (slices, default 4). The pizza left on the peel shows the slices gone; the last slice leaves the peel empty.
  • Layers: each lies in its own pizza_N slot of the peel (InteractibleFurniture), lifted onto the one below by its thickness, as on the sandwich board. SandwichLayer describes pizza layers too; its models can now take extra tags (the bake: raw, cooked, burnt) and a suffix tried first (_left3 while three slices are left).
  • In the oven: the cavity takes pizza peels as well as baking trays, and OvenCavityManager bakes them. The bake is kept in the peel's variables, so it survives restarts and trips in and out of the oven.
    • InteractibleFurniture draws a nested peel smaller but doesn't scale its slots' lift, so the layers floated above it. The lift now follows the peel's size, and peels whose size changed are stacked again every half second, including peels held in an oven.
  • A slice:
    • Its food is its crust (the output type's food in types.yml) plus its share of what the other layers hold, counting lasting tags but not their own cooking. The bake applies to all of it.
    • Nutrition is the layers' average, weighted by food. Quality, freshness and variety come from all layers (new composition context PIZZA).
    • Its toppings name it: "Cheese, Pineapple and Basil Pizza Slice". Sauce, and a topping named "" (salt), don't count towards the name.
    • The first slice is built once and kept on the peel (PotReference.encodeStack, now public), so every slice is the same and they stack. Baking further forgets it.
    • The first slice fires DishCookedEvent once for the pizza.
  • Breaking a peel drops a baked pizza as its slices left, and a raw one as its layers.
  • Config: new pizzas.yml, which sets the furniture ids, max-toppings, output (one slice), slices, the bake times, and the base, sauce and topping layers.

The peel furniture and its slots, the pizza_slice food type, its models and the ItemsAdder models are server config. They're on Dev only so far, like the sandwiches.

Documentation impact

  • Central Cooking documentation: no change. pizzas.yml documents its keys, and the README lists the feature.

Contract

  • Affected behavior:
    • Clicking or breaking a pizza peel.
    • Ovens now also take pizza peels into their cavity; nothing changes for baking trays.
    • SandwichLayer.model keeps its behaviour for sandwiches.
  • Tests run: mvn -o -B clean verify: 1312 tests pass and line coverage is still 100%. New PizzaCoverageTest; OvenCoverageTest, CookingLifecycleTest and CommandManagerCoverageTest cover the oven, the new config file and the composition context.
  • Tested on Dev: placing the peel, building a pizza and baking it in the oven. Slices and the layer lift in the oven aren't tested in-game yet.
  • Player wiki (ProvinceSystem /wiki/cooking or related pages): no change.

🤖 Generated with Claude Code

… slices

Dough on a placed pizza peel starts a pizza; a paste can be spread straight
on it and cheese, vegetables, fruit, sausage and spices go on top. Carried
into a lit oven like a baking tray, it cooks and then burns, and every layer
shows it. A baked pizza is taken off a slice at a time; every slice of a
pizza is the same, and the pizza on the peel shows the slices gone.

Layer lifts follow the peel's size, so the layers stay on the peel in an
oven's cavity, which draws it smaller.

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

coderabbitai Bot commented Oct 29, 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: 53ce7ad2-c9e8-4c32-839a-371e0e4cbc5e
  • 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

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the size:XL 500-999 effective changed lines (tests excluded in mixed PRs). label Oct 29, 2026
@JustinasLa
JustinasLa merged commit cbd2523 into main Oct 29, 2026
3 checks passed
@JustinasLa
JustinasLa deleted the feat/pizza branch October 29, 2026 16:33
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