Skip to content

Dietary Properties

Dietary labels use a blacklist model. A recipe is assumed to satisfy a property unless one of its ingredients violates that property.

Property Display Meaning Implies
VEGAN Vegan Contains no animal products VEGETARIAN
VEGETARIAN Vegetarian Contains no meat or fish
GLUTEN_FREE Gluten-Free Contains no gluten

How Calculation Works

When a recipe is previewed or crafted, Heirloom checks the selected ingredients. Vanilla ingredients are compared against dietary config. Custom ingredients can already carry stored dietary data, so a later recipe does not need to know every raw ingredient that originally created them.

Inheritance Example

If a custom sauce was made with milk, and that sauce is later used in a sandwich, the sandwich should not become vegan just because the sandwich recipe only sees SAUCE. Stored dietary data keeps that history attached to the ingredient.

Example: Adding Kosher Or Halal

You can add server-specific dietary rules the same way the bundled file defines VEGAN, VEGETARIAN, and GLUTEN_FREE. The important idea is that a property describes what is allowed, and its violators list describes what breaks that rule.

For example, a simple halal-style rule might blacklist pork materials and pork-based custom foods:

"HALAL": {
  "display_name": "Halal",
  "description": "Contains no server-defined non-halal ingredients",
  "violators": {
    "items": [
      "PORKCHOP",
      "COOKED_PORKCHOP"
    ],
    "custom_items": [
      "BACON",
      "CHRISTMAS_HAM"
    ]
  }
}

A simple kosher-style rule can use the same structure:

"KOSHER": {
  "display_name": "Kosher",
  "description": "Contains no server-defined non-kosher ingredients",
  "violators": {
    "items": [
      "PORKCHOP",
      "COOKED_PORKCHOP"
    ],
    "custom_items": [
      "BACON",
      "CHRISTMAS_HAM"
    ]
  }
}

After adding those entries under dietary_properties, reload and test a few chains. If BACON is made from PORKCHOP, the bacon will not receive HALAL or KOSHER. If that bacon is later used in EGGS_AND_BACON, BLT, or a custom burger, the finished food also will not receive those properties because custom ingredients carry their stored dietary data forward.

Note

Heirloom enforces the rules you configure; it does not decide real-world religious law. If your server also wants to treat alcohol, shellfish, meat-and-dairy combinations, or specific addon drinks as disallowed, add those vanilla or custom item IDs to the appropriate violators lists and test the recipe chains players actually use.

Hierarchy

hierarchy_rules hide weaker labels when a stronger label is present. Bundled data treats VEGAN as implying VEGETARIAN, so vegan foods do not need to show both labels.

Contains Lines

The contains_settings block controls "Contains:" lore. Use it for practical warnings, not just marketing labels. It is most useful for common allergens, roleplay restrictions, or server-specific diet rules.