Skip to content
kaldownPublic

About

WoW addon library providing profession recipe data with skill-up difficulty ranges

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

CraftLib

CurseForge Wago License: All Rights Reserved PayPal Buy Me a Coffee

If you find this useful, consider supporting development via PayPal or Buy Me a Coffee.

Other addons:

Comprehensive crafting recipe database and API for World of Warcraft addon developers.

Features

  • Complete recipe data with skill levels, reagents, and difficulty thresholds
  • Source information for every recipe (trainers, vendors, quests, drops, reputation, discovery)
  • Fast lookups by spell ID or crafted item ID
  • Skill-based filtering and difficulty calculation
  • Per-expansion data: one install serves Classic Era / Vanilla, Season of Discovery, The Burning Crusade, and Wrath of the Lich King - it detects the running client and loads the matching recipe set automatically

Coverage

CraftLib bundles a separate, cumulative recipe set for each Classic-family client and registers the correct one automatically (no configuration):

Client Professions Skill cap
Classic Era / Vanilla 9 300
Season of Discovery 9 300
The Burning Crusade Classic 10 (+ Jewelcrafting) 375
Wrath of the Lich King Classic 11 (+ Inscription) 450

Professions: Alchemy, Blacksmithing, Enchanting, Engineering, Leatherworking, Tailoring, Cooking, First Aid, Mining - plus Jewelcrafting (TBC and later) and Inscription (WotLK). Every recipe carries Wowhead-verified difficulty thresholds and a real acquisition source.

Usage

Add CraftLib as a dependency in your .toc file:

## Dependencies: CraftLib

API

-- Check if database is ready
if CraftLib:IsReady() then
    -- Get all recipes for a profession
    local recipes = CraftLib:GetRecipes("cooking")

    -- Filter by skill level
    local available = CraftLib:GetAvailableRecipes("cooking", 225)

    -- Look up by spell ID
    local recipe = CraftLib:GetRecipeBySpellId("cooking", 33359)

    -- Look up by crafted item ID
    local recipe = CraftLib:GetRecipeByItemId(27667)

    -- Find all recipes that produce an item (reverse lookup)
    local producers = CraftLib:GetRecipeByProduct(27667)

    -- Get difficulty color (orange/yellow/green/gray)
    local difficulty = CraftLib:GetRecipeDifficulty(recipe, 300)
end

Available Functions

Function Description
IsReady() Check if database has loaded
GetProfessions() Get all registered professions
GetProfession(key) Get a specific profession
GetRecipes(key) Get all recipes for a profession
GetAvailableRecipes(key, skillLevel) Filter recipes by skill level
GetRecipeBySpellId(key, spellId) Look up recipe by spell ID
GetRecipeByItemId(itemId) Look up recipe by crafted item ID
GetRecipeByProduct(itemId) Find all recipes that produce an item
GetRecipeDifficulty(recipe, skillLevel) Get difficulty color
GetVendorBuyPrice(itemId) Per-unit vendor buy price (copper) for confirmed vendor-stocked reagents, or nil
GetActiveProfile() Active client profile: "VANILLA", "TBC", "WOTLK", or "SOD"

Recipe Data Structure

Each recipe contains:

Field Description
id Spell ID
name Recipe name
itemId Crafted item ID
skillRequired Minimum skill to learn and craft
skillRange Difficulty thresholds {orange, yellow, green, gray}
reagents List of {itemId, name, count}
source How to obtain (trainer, vendor, quest, drop, reputation)
expansion Which expansion the recipe belongs to

Data Generation

CraftLib recipe data uses a three-phase pipeline for verified source accuracy:

Phase 1: Extract from DB2

# Extract certain sources (TRAINER, REPUTATION, QUEST) from DB2
python scripts/extract_db2_sources.py --version 2.5.5.65463 --profession FirstAid

Phase 2: Verify Sources and Difficulty from Wowhead

# Single-pass: fetches difficulty + source + trainer status from Wowhead
python scripts/fetch_wowhead_sources.py --profession FirstAid

Phase 3: Generate Recipes.lua

# Generate Lua from verified sources (fails if any PENDING)
python scripts/generate_recipes.py --version 2.5.5.65463 --profession FirstAid

Verified sources are tracked under Data/Sources/<Bucket>/*.json for reproducibility. 55 removed/never-implemented recipes are filtered from the output (tracked in Data/Sources/removed_recipes.json). The pipeline is driven per client by the Makefile - make vanilla-all, make wotlk-all, and make sod-all regenerate each bucket from its own pinned game build.

Data Sources

  • DB2 Tables: Spell, SpellName, SpellEffect, SpellReagents, Item, ItemSparse, SkillLine, SkillLineAbility, ItemEffect, Faction
  • Wowhead: Source verification (VENDOR vs DROP) and difficulty thresholds
  • Fetcher: db2-parser submodule

Addons Using CraftLib

  • LazyProf - Profession leveling optimizer

Supported Game Versions

One install serves every live Classic-family client - CraftLib detects which one you are on and registers the matching recipe data:

  • Classic Era / Anniversary (Vanilla)
  • Season of Discovery
  • The Burning Crusade Classic
  • Wrath of the Lich King Classic - including the Titan (3.80) seasonal WotLK client

Hardcore runs on the Classic Era client and is covered by the Vanilla data.

License

All Rights Reserved - See LICENSE for details.

About

WoW addon library providing profession recipe data with skill-up difficulty ranges

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages