RedM documentation
Murphy's Craft
Crafting System
Job-Locked Crafting
This guide explains how to restrict access to craft categories and specific recipes based on player job and grade.
Table of Contents
Introduction
The job-locking system allows you to:
- Restrict entire craft categories to specific jobs
- Lock individual recipes within a category
- Define a minimum grade required to access crafts
Relevant files: shared/craft/*.lua
Locking an Entire Category
To restrict an entire category to a specific job, add the job and jobgrade parameters at the category definition level.
Syntax
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
job |
string or table | No | Required job name (e.g., "doctor", "sheriff", "blacksmith") |
jobgrade |
number | No | Minimum grade required (0 = any grade) |
Example - Doctor Category
Locking Specific Recipes
You can also lock individual recipes within a category that is accessible to everyone.
Syntax
Example - Mixed Recipes
System Behavior
Priority Rules
- No
jobspecified → Accessible to all players jobspecified withoutjobgrade→ Any grade of that job can accessjobandjobgradespecified → Player must have the job AND grade ≥ required grade- Recipe with
job→ Overrides category restrictions for that recipe
Category Visibility
- A category is hidden if the player doesn't meet access requirements
- A category is also hidden if it contains no accessible recipes for the player
Summary Table
Category job |
Recipe job |
Result |
|---|---|---|
| Not defined | Not defined | Accessible to all |
"doctor" |
Not defined | Accessible to doctors only |
| Not defined | "doctor" |
Recipe accessible to doctors only |
"doctor" |
"sheriff" |
Recipe accessible to sheriffs (override) |
Complete Examples
Example 1: Exclusive Doctor Category
Example 2: Public Category with Restricted Recipes
Important Notes
Warning: Job names (
job) must exactly match the names used in your framework (VORP, RSG-Core, REDEMRP).
Tip: Test your configurations with
Config.Debug = trueinshared/config.luato see filtering logs.
Reminder: The
freeaccess = trueparameter allows access to the recipe without specialization progression. It is independent of the job-locking system.
Last updated: September 9, 2026