From e7beaa124610f56e08aec18134f02b62da1b54d8 Mon Sep 17 00:00:00 2001 From: XxFran10xX <318299142+XxFran10xX@users.noreply.github.com> Date: Sat, 31 Oct 2026 03:19:40 +0100 Subject: [PATCH 1/2] config: keep cooked food hot for 30 minutes and warm until 2h30 Every food type now ages warmth 450 times slower (age.warmth 450), and the Warm step starts at age 4. The jar ends warmth at age 20, so food is Hot for 30 minutes and Warm until 2h30. Main and Tutorial already run these values; this brings the default configs in line with them. Co-Authored-By: Claude Opus 5.5 --- src/main/resources/tags.yml | 3 ++- src/main/resources/types.yml | 50 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/main/resources/tags.yml b/src/main/resources/tags.yml index d3e1f70..aae974d 100644 --- a/src/main/resources/tags.yml +++ b/src/main/resources/tags.yml @@ -39,6 +39,7 @@ butter_spiced: name: "#f0f0f0Spiced" value: 1 craft-quality-pct: 0.10 +# types.yml age.warmth 450 makes each age unit 7.5 minutes; warmth expires at age 20 (2h30). warmth: ageable: true hot: @@ -48,7 +49,7 @@ warmth: food-mult: 1.25 warm: name: "#dea254Warm" - value: 10 + value: 4 nutrition-mult: 1.30 food-mult: 1.20 processed: diff --git a/src/main/resources/types.yml b/src/main/resources/types.yml index f90043b..7a8914a 100644 --- a/src/main/resources/types.yml +++ b/src/main/resources/types.yml @@ -1,5 +1,9 @@ +# Warmth ages 450 times slower: Hot for 30 minutes, Warm until 2h30. +# Only applies when the food has a warmth track; see tags.yml. ####Meats roast: + age: + warmth: 450 name: "#d9baa5{inherit}" overrides: CHICKEN: @@ -56,6 +60,8 @@ roast: burn: 40 meat_poultry: + age: + warmth: 450 name: "#d9baa5{inherit}" overrides: CHICKEN: @@ -76,6 +82,8 @@ meat_poultry: burn: 30 meat_poultry_leg: + age: + warmth: 450 name: "#d9baa5{inherit} Leg" overrides: CHICKEN: @@ -91,6 +99,8 @@ meat_poultry_leg: burn: 30 meat_red_meat: + age: + warmth: 450 name: "#d9baa5Steak" overrides: BEEF: @@ -114,6 +124,8 @@ meat_red_meat: burn: 30 meat_pork: + age: + warmth: 450 name: "#d9baa5Pork" model: meat_pork food: 18 @@ -125,6 +137,8 @@ meat_pork: burn: 30 sausage: + age: + warmth: 450 name: "#d9baa5Sausage" model: sausage food: 18 @@ -136,6 +150,8 @@ sausage: burn: 30 sausage_chain: + age: + warmth: 450 name: "#d9baa5Sausage Chain" model: sausage_chain food: 18 @@ -158,6 +174,7 @@ vegetable_1: food: 6 nutrition: 4.5 age: + warmth: 450 freshness: 2.33 ###Veggies — raw CustomCrops @@ -179,6 +196,7 @@ vegetable_2: food: 10 nutrition: 7.5 age: + warmth: 450 freshness: 2.33 ###Veggies — raw (chop only, no cut step; excludes from cut_vegetables recipe) @@ -197,6 +215,7 @@ vegetable_chop_only: food: 8 nutrition: 6 age: + warmth: 450 freshness: 2.33 ###Veggies — cut vanilla (pan + pot) @@ -225,6 +244,7 @@ vegetable_cut: time: 15 burn: 30 age: + warmth: 450 freshness: 1.67 ###Veggies — cut CustomCrops (pan + pot) @@ -256,6 +276,7 @@ vegetable_cut_2: time: 15 burn: 30 age: + warmth: 450 freshness: 1.67 ###Veggies — chopped garnish vanilla (no cooking; cook on cut stage) @@ -274,6 +295,7 @@ vegetable_chopped: food: 6 nutrition: 4.5 age: + warmth: 450 freshness: 1.33 ###Veggies — chopped garnish CustomCrops @@ -295,10 +317,13 @@ vegetable_chopped_2: food: 10 nutrition: 7.5 age: + warmth: 450 freshness: 1.33 ###Seasoning — does not spoil seasoning_1: + age: + warmth: 450 name: "#f0f0f0{inherit}" overrides: SALT: @@ -310,6 +335,8 @@ seasoning_1: ###Sweetener — does not spoil sweetener_1: + age: + warmth: 450 name: "#f0f0f0{inherit}" overrides: SUGAR: @@ -339,6 +366,7 @@ spice_1: food: 0 nutrition: 0 age: + warmth: 450 freshness: 14 ###Garnish — chopped (no cooking yet) @@ -357,10 +385,13 @@ garnish_chopped: food: 8 nutrition: 6 age: + warmth: 450 freshness: 1.33 ###Baked goods bread: + age: + warmth: 450 name: "#d9c4a5{prefixes}{fillers}Bread" model: bread food: 16 @@ -375,6 +406,7 @@ dry_ration: food: 20 nutrition: 5 age: + warmth: 450 freshness: 10 ###Fruits — raw vanilla (no cut step) @@ -391,6 +423,7 @@ fruit_1: food: 6 nutrition: 5.25 age: + warmth: 450 freshness: 0.67 ###Fruits — raw CustomCrops @@ -422,6 +455,7 @@ fruit_2: food: 10 nutrition: 8.75 age: + warmth: 450 freshness: 0.67 ##Crops @@ -431,6 +465,7 @@ wheat: food: 4 nutrition: 4 age: + warmth: 450 freshness: 10 flour: @@ -439,6 +474,7 @@ flour: food: 4 nutrition: 4 age: + warmth: 450 freshness: 10 tag-labels: freshness: @@ -450,6 +486,7 @@ yeast: food: 4 nutrition: 4 age: + warmth: 450 freshness: 2 tag-labels: freshness: @@ -461,6 +498,7 @@ dough: food: 4 nutrition: 4 age: + warmth: 450 freshness: 0.5 rising: 1 tag-labels: @@ -469,12 +507,16 @@ dough: ##SAUCE sauce: + age: + warmth: 450 name: "{colour}{prefixes}{fillers}Sauce" food: 6 nutrition: 5 ##SOUP soup: + age: + warmth: 450 name: "{colour}{prefixes}{fillers}Soup" food: 26 nutrition: 8 @@ -486,6 +528,7 @@ cup_of_milk: food: 10 nutrition: 6 age: + warmth: 450 freshness: 0.25 tag-labels: freshness: @@ -498,6 +541,7 @@ milk_bucket: food: 10 nutrition: 6 age: + warmth: 450 freshness: 0.25 tag-labels: freshness: @@ -509,6 +553,7 @@ seafood_whole: food: 6 nutrition: 6 age: + warmth: 450 freshness: 2.33 seafood_fish_filet: @@ -523,6 +568,7 @@ seafood_fish_filet: time: 15 burn: 30 age: + warmth: 450 freshness: 2.33 tag-labels: freshness: @@ -541,6 +587,7 @@ seafood_jellyfish: time: 15 burn: 30 age: + warmth: 450 freshness: 2.33 tag-labels: freshness: @@ -559,6 +606,7 @@ seafood_octopus: time: 15 burn: 30 age: + warmth: 450 freshness: 2.33 tag-labels: freshness: @@ -572,6 +620,7 @@ butter: food: 10 nutrition: 6 age: + warmth: 450 freshness: 7 tag-labels: freshness: @@ -591,6 +640,7 @@ egg: time: 12 burn: 25 age: + warmth: 450 freshness: 1 tag-labels: freshness: From b3556da131b385adb546708d42f424247f571810 Mon Sep 17 00:00:00 2001 From: XxFran10xX <318299142+XxFran10xX@users.noreply.github.com> Date: Sat, 31 Oct 2026 03:25:22 +0100 Subject: [PATCH 2/2] config: bring the default configs in line with Main Main's Cooking config files had values tuned live that the defaults never got. Take them all, keeping the repo's comments and the newer husbandry keys (enabled, restore-lost-animals) that Main gets from the code defaults: - types.yml: food values and freshness multipliers on 21 types, and frying pan options for three vegetable types. - tags.yml: Rotten after 1.25 days, soup thickness steps at 20/40/60/80, dough rising after 20 seconds and risen after 45. - config.yml: respawn food 200, nutrition drain every 240 seconds. - husbandry.yml: profession forager, speed care share 0.30, horses up to 27 health, 0.27 speed and 0.8 jump. - crops.yml: leaves, logs, fences, lanterns and similar blocks count as open sky over crops. Co-Authored-By: Claude Opus 5.5 --- src/main/resources/config.yml | 4 +- src/main/resources/crops.yml | 2 +- src/main/resources/husbandry.yml | 10 ++--- src/main/resources/tags.yml | 18 ++++----- src/main/resources/types.yml | 69 ++++++++++++++++++-------------- 5 files changed, 57 insertions(+), 46 deletions(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 57c2efa..f75ba64 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -191,11 +191,11 @@ sauce-dict: nutrition: max-food: 200 - respawn-food: 80 + respawn-food: 200 max-diet: 40 attribute-name: nutrition drain-amount: 1 - drain-interval: 120 + drain-interval: 240 lerp-step-rate: 1.0 diet-tiers: - id: terrible diff --git a/src/main/resources/crops.yml b/src/main/resources/crops.yml index 94f46da..45ead91 100644 --- a/src/main/resources/crops.yml +++ b/src/main/resources/crops.yml @@ -8,7 +8,7 @@ planting: # Greenhouses: clear, stained and tinted glass, including panes, are allowed. allow-glass-roofs: true # Additional Bukkit block materials allowed anywhere above the crop. - allowed-cover: [] + allowed-cover: [OAK_LEAVES, SPRUCE_LEAVES, BIRCH_LEAVES, JUNGLE_LEAVES, ACACIA_LEAVES, DARK_OAK_LEAVES, MANGROVE_LEAVES, CHERRY_LEAVES, AZALEA_LEAVES, FLOWERING_AZALEA_LEAVES, PALE_OAK_LEAVES, OAK_LOG, OAK_WOOD, SPRUCE_LOG, SPRUCE_WOOD, BIRCH_LOG, BIRCH_WOOD, JUNGLE_LOG, JUNGLE_WOOD, ACACIA_LOG, ACACIA_WOOD, DARK_OAK_LOG, DARK_OAK_WOOD, MANGROVE_LOG, MANGROVE_WOOD, CHERRY_LOG, CHERRY_WOOD, PALE_OAK_LOG, PALE_OAK_WOOD, MANGROVE_ROOTS, MUDDY_MANGROVE_ROOTS, VINE, CAVE_VINES, CAVE_VINES_PLANT, HANGING_ROOTS, GLOW_LICHEN, PALE_HANGING_MOSS, BEE_NEST, OAK_FENCE, SPRUCE_FENCE, BIRCH_FENCE, JUNGLE_FENCE, ACACIA_FENCE, DARK_OAK_FENCE, MANGROVE_FENCE, CHERRY_FENCE, PALE_OAK_FENCE, BAMBOO_FENCE, CRIMSON_FENCE, WARPED_FENCE, OAK_FENCE_GATE, SPRUCE_FENCE_GATE, BIRCH_FENCE_GATE, JUNGLE_FENCE_GATE, ACACIA_FENCE_GATE, DARK_OAK_FENCE_GATE, MANGROVE_FENCE_GATE, CHERRY_FENCE_GATE, PALE_OAK_FENCE_GATE, BAMBOO_FENCE_GATE, CRIMSON_FENCE_GATE, WARPED_FENCE_GATE, IRON_BARS, IRON_CHAIN, SCAFFOLDING, LANTERN, SOUL_LANTERN, TORCH, WALL_TORCH, COBWEB, OAK_BUTTON, SPRUCE_BUTTON, BIRCH_BUTTON, JUNGLE_BUTTON, ACACIA_BUTTON, DARK_OAK_BUTTON, MANGROVE_BUTTON, CHERRY_BUTTON, PALE_OAK_BUTTON, BAMBOO_BUTTON, CRIMSON_BUTTON, WARPED_BUTTON, STONE_BUTTON, POLISHED_BLACKSTONE_BUTTON, LEVER, WHITE_BANNER, WHITE_WALL_BANNER, ORANGE_BANNER, ORANGE_WALL_BANNER, MAGENTA_BANNER, MAGENTA_WALL_BANNER, LIGHT_BLUE_BANNER, LIGHT_BLUE_WALL_BANNER, YELLOW_BANNER, YELLOW_WALL_BANNER, LIME_BANNER, LIME_WALL_BANNER, PINK_BANNER, PINK_WALL_BANNER, GRAY_BANNER, GRAY_WALL_BANNER, LIGHT_GRAY_BANNER, LIGHT_GRAY_WALL_BANNER, CYAN_BANNER, CYAN_WALL_BANNER, PURPLE_BANNER, PURPLE_WALL_BANNER, BLUE_BANNER, BLUE_WALL_BANNER, BROWN_BANNER, BROWN_WALL_BANNER, GREEN_BANNER, GREEN_WALL_BANNER, RED_BANNER, RED_WALL_BANNER, BLACK_BANNER, BLACK_WALL_BANNER, WEEPING_VINES, WEEPING_VINES_PLANT, TWISTING_VINES, TWISTING_VINES_PLANT, LADDER, SOUL_TORCH, SOUL_WALL_TORCH, REDSTONE_TORCH, REDSTONE_WALL_TORCH, COPPER_TORCH, COPPER_WALL_TORCH, COPPER_LANTERN, EXPOSED_COPPER_LANTERN, WEATHERED_COPPER_LANTERN, OXIDIZED_COPPER_LANTERN, WAXED_COPPER_LANTERN, WAXED_EXPOSED_COPPER_LANTERN, WAXED_WEATHERED_COPPER_LANTERN, WAXED_OXIDIZED_COPPER_LANTERN, COPPER_CHAIN, EXPOSED_COPPER_CHAIN, WEATHERED_COPPER_CHAIN, OXIDIZED_COPPER_CHAIN, WAXED_COPPER_CHAIN, WAXED_EXPOSED_COPPER_CHAIN, WAXED_WEATHERED_COPPER_CHAIN, WAXED_OXIDIZED_COPPER_CHAIN, COPPER_BARS, EXPOSED_COPPER_BARS, WEATHERED_COPPER_BARS, OXIDIZED_COPPER_BARS, WAXED_COPPER_BARS, WAXED_EXPOSED_COPPER_BARS, WAXED_WEATHERED_COPPER_BARS, WAXED_OXIDIZED_COPPER_BARS, OAK_HANGING_SIGN, OAK_WALL_HANGING_SIGN, SPRUCE_HANGING_SIGN, SPRUCE_WALL_HANGING_SIGN, BIRCH_HANGING_SIGN, BIRCH_WALL_HANGING_SIGN, JUNGLE_HANGING_SIGN, JUNGLE_WALL_HANGING_SIGN, ACACIA_HANGING_SIGN, ACACIA_WALL_HANGING_SIGN, DARK_OAK_HANGING_SIGN, DARK_OAK_WALL_HANGING_SIGN, MANGROVE_HANGING_SIGN, MANGROVE_WALL_HANGING_SIGN, CHERRY_HANGING_SIGN, CHERRY_WALL_HANGING_SIGN, PALE_OAK_HANGING_SIGN, PALE_OAK_WALL_HANGING_SIGN, BAMBOO_HANGING_SIGN, BAMBOO_WALL_HANGING_SIGN, CRIMSON_HANGING_SIGN, CRIMSON_WALL_HANGING_SIGN, WARPED_HANGING_SIGN, WARPED_WALL_HANGING_SIGN, END_ROD, LIGHTNING_ROD, COCOA] # Decoration allowed only within max-height blocks above the crop (pergolas, lantern posts). # "#name" entries are vanilla block tags. Double slabs are full blocks and still count as a roof. low-cover: diff --git a/src/main/resources/husbandry.yml b/src/main/resources/husbandry.yml index 7a03857..8eebfc4 100644 --- a/src/main/resources/husbandry.yml +++ b/src/main/resources/husbandry.yml @@ -32,7 +32,7 @@ care: grow-up: 1h -profession: farming +profession: forager exp: min: 6 @@ -395,14 +395,14 @@ mounts: speed: min-pct: 0.40 genetics-pct: 0.30 - care-pct: 0.20 + care-pct: 0.30 HORSE: min-health: 10 - max-health: 20 + max-health: 27 min-speed: 0.0675 - max-speed: 0.2025 + max-speed: 0.27 min-jump: 0.24 - max-jump: 0.6 + max-jump: 0.8 DONKEY: min-health: 10 max-health: 20 diff --git a/src/main/resources/tags.yml b/src/main/resources/tags.yml index aae974d..027f11f 100644 --- a/src/main/resources/tags.yml +++ b/src/main/resources/tags.yml @@ -2,7 +2,7 @@ #########Do not change these unless you know # craft-quality-pct: upward star-roll bonus when this step is active on an extra ingredient (e.g. 0.05 = +5% craft quality) # stars: added to inherited quality while this step is active. Negative lowers the star rating. -# Age values are seconds at age.freshness 1.0 (stale = 1 day, rotten = 3 days). +# Age values are seconds at age.freshness 1.0 (stale = 1 day, rotten = 1.25 days). # Per-type duration is types.yml age.freshness (higher = lasts longer). freshness: ageable: true @@ -17,7 +17,7 @@ freshness: quality-reduce: 0.25 rotten: name: "#0a6935Rotten" - value: 259200 + value: 108000 nutrition-mult: 0.05 food-mult: 0.6 quality-reduce: 0.75 @@ -137,22 +137,22 @@ soup_thickness: value: 0 light: name: "#9c95cfLight" - value: 300 + value: 20 nutrition-mult: 1.05 food-mult: 1.2 creamy: name: "#dbb886Creamy" - value: 900 + value: 40 nutrition-mult: 1.1 food-mult: 1.4 velvety: name: "#eb844dVelvety" - value: 1800 + value: 60 nutrition-mult: 1.15 food-mult: 1.75 thick: name: "#a6a18aThick" - value: 3600 + value: 80 nutrition-mult: 1.2 food-mult: 2.0 @@ -197,7 +197,7 @@ flavourful: food-mult: 1.0 nutrition-mult: 1.1 -# Dough proofing. Values are seconds at age.rising 1 (dough uses 1): rising after 5 minutes, risen after 15. +# Dough proofing. Values are seconds at age.rising 1 (dough uses 1): rising after 20 seconds, risen after 45. rising: ageable: true unrisen: @@ -206,11 +206,11 @@ rising: stars: -3 rising: name: "#d4b483Rising" - value: 300 + value: 20 stars: -1 risen: name: "#e6c98aRisen" - value: 900 + value: 45 stars: 0 # A BreweryX brew poured into the saucepan as its liquid. diff --git a/src/main/resources/types.yml b/src/main/resources/types.yml index 7a8914a..df944bf 100644 --- a/src/main/resources/types.yml +++ b/src/main/resources/types.yml @@ -68,7 +68,7 @@ meat_poultry: name: "#d9baa5Chicken" model: meat_poultry model: meat_poultry - food: 18 + food: 20 nutrition: 8 mashable: true cooking-options: @@ -90,7 +90,7 @@ meat_poultry_leg: name: "#d9baa5Chicken Leg" model: meat_poultry_leg model: meat_poultry_leg - food: 18 + food: 20 nutrition: 8 cooking-options: frying_pan: @@ -110,7 +110,7 @@ meat_red_meat: name: "#d9baa5Venison" model: meat_red_meat model: meat_red_meat - food: 18 + food: 20 nutrition: 8 mashable: true cooking-options: @@ -128,7 +128,7 @@ meat_pork: warmth: 450 name: "#d9baa5Pork" model: meat_pork - food: 18 + food: 20 nutrition: 8 cooking-options: frying_pan: @@ -141,7 +141,7 @@ sausage: warmth: 450 name: "#d9baa5Sausage" model: sausage - food: 18 + food: 20 nutrition: 8 cooking-options: frying_pan: @@ -154,7 +154,7 @@ sausage_chain: warmth: 450 name: "#d9baa5Sausage Chain" model: sausage_chain - food: 18 + food: 20 nutrition: 8 carve-sequence: sausage @@ -171,11 +171,11 @@ vegetable_1: PUMPKIN: model: pumpkin model: carrot - food: 6 + food: 7 nutrition: 4.5 age: warmth: 450 - freshness: 2.33 + freshness: 7 ###Veggies — raw CustomCrops vegetable_2: @@ -193,11 +193,11 @@ vegetable_2: CORN: model: corn model: tomato - food: 10 + food: 12 nutrition: 7.5 age: warmth: 450 - freshness: 2.33 + freshness: 7 ###Veggies — raw (chop only, no cut step; excludes from cut_vegetables recipe) vegetable_chop_only: @@ -212,11 +212,11 @@ vegetable_chop_only: GARLIC: model: garlic model: olive - food: 8 + food: 9 nutrition: 6 age: warmth: 450 - freshness: 2.33 + freshness: 7 ###Veggies — cut vanilla (pan + pot) vegetable_cut: @@ -231,7 +231,7 @@ vegetable_cut: PUMPKIN: model: pumpkin_cut model: carrot_cut - food: 6 + food: 7 nutrition: 4.5 mashable: true cooking-options: @@ -245,7 +245,7 @@ vegetable_cut: burn: 30 age: warmth: 450 - freshness: 1.67 + freshness: 5 ###Veggies — cut CustomCrops (pan + pot) vegetable_cut_2: @@ -263,7 +263,7 @@ vegetable_cut_2: CORN: model: corn_cut model: tomato_cut - food: 10 + food: 12 nutrition: 7.5 mashable: true cooking-options: @@ -277,7 +277,7 @@ vegetable_cut_2: burn: 30 age: warmth: 450 - freshness: 1.67 + freshness: 5 ###Veggies — chopped garnish vanilla (no cooking; cook on cut stage) vegetable_chopped: @@ -292,11 +292,11 @@ vegetable_chopped: PUMPKIN: model: pumpkin_chopped model: carrot_chopped - food: 6 + food: 7 nutrition: 4.5 age: warmth: 450 - freshness: 1.33 + freshness: 4 ###Veggies — chopped garnish CustomCrops vegetable_chopped_2: @@ -314,11 +314,11 @@ vegetable_chopped_2: CORN: model: corn_chopped model: tomato_chopped - food: 10 + food: 11 nutrition: 7.5 age: warmth: 450 - freshness: 1.33 + freshness: 4 ###Seasoning — does not spoil seasoning_1: @@ -386,7 +386,7 @@ garnish_chopped: nutrition: 6 age: warmth: 450 - freshness: 1.33 + freshness: 4 ###Baked goods bread: @@ -394,7 +394,7 @@ bread: warmth: 450 name: "#d9c4a5{prefixes}{fillers}Bread" model: bread - food: 16 + food: 26 nutrition: 5 tag-labels: freshness: @@ -424,7 +424,7 @@ fruit_1: nutrition: 5.25 age: warmth: 450 - freshness: 0.67 + freshness: 7 ###Fruits — raw CustomCrops fruit_2: @@ -456,7 +456,7 @@ fruit_2: nutrition: 8.75 age: warmth: 450 - freshness: 0.67 + freshness: 7 ##Crops wheat: @@ -550,7 +550,7 @@ milk_bucket: seafood_whole: name: "#6fa8dc{inherit}" - food: 6 + food: 15 nutrition: 6 age: warmth: 450 @@ -559,10 +559,14 @@ seafood_whole: seafood_fish_filet: name: "#6fa8dc{inherit} Filet" model: seafood_fish_filet - food: 6 + food: 10 nutrition: 6 mashable: true cooking-options: + frying_pan: + tag: 1 + time: 15 + burn: 30 pot: tag: 3 time: 15 @@ -578,10 +582,14 @@ seafood_fish_filet: seafood_jellyfish: name: "#87cefa{inherit} Cubes" model: seafood_jellyfish - food: 5 + food: 9 nutrition: 5 mashable: true cooking-options: + frying_pan: + tag: 1 + time: 15 + burn: 30 pot: tag: 3 time: 15 @@ -597,10 +605,14 @@ seafood_jellyfish: seafood_octopus: name: "#d2691e{inherit}" model: seafood_octopus - food: 7 + food: 11 nutrition: 7 mashable: true cooking-options: + frying_pan: + tag: 1 + time: 15 + burn: 30 pot: tag: 3 time: 15 @@ -626,7 +638,6 @@ butter: freshness: stale: "#c3db81Rancid" rotten: "#8B7355Spoiled" - egg: name: "#f5e6c8Egg" model: egg