ENFR

Custom Crafting Module

GUI-based workbenches with configurable input/output slots and persistent recipes designed in-game.

← Back to Docs
In one sentence: Custom crafting tables are GUI workbenches where players place items in input slots and click the output slot to craft — recipes are created in-game by admins and saved persistently to SQLite or MongoDB.

Contents

1. How it works 2. Configuration 3. Commands 4. Creating a table in-game 5. Recipe matching 6. Creating a recipe in-game 7. All config keys 8. Vanilla workbench recipes 9. Tips & gotchas

1. How it works

2. Configuration

File location: plugins/CustomiZer/custom_crafting_tables.yml

custom_crafting_tables:
  enabled: true
  storage:
    type: sqlite
    sqlite:
      file: custom_crafting_recipes.db
  tables:
    basic_workbench:
      enabled: true
      display_name: "&aBasic Workbench"
      assigned_block: "mypack:workbench_block"      # pack block that opens this table on right-click
      assigned_furniture: "mypack:workbench_item"  # OR a placed furniture that opens this table on right-click
      permission:
        required: false
        node: "customizer.craftingtable.basic_workbench"
      gui:
        title: "&8⚒ Basic Workbench"
        rows: 5
        input_slots: [10, 11, 12, 19, 20, 21, 28, 29, 30]   # 3×3 grid
        output_slots: [24]
      behavior:
        return_items_on_close: true
        consume_inputs: true
        allow_partial_outputs: false

3. Commands

Table management

CommandPermissionDescription
/zcraft newtablecxp.craft.adminOpen the in-game table creation wizard — configure layout, triggers, and save without touching any file.
/zcraft deletetable <tableId>cxp.craft.adminRemove a table definition from custom_crafting_tables.yml and hot-reload. Saved recipes for that table are kept in the database.
/zcraft tablescxp.craft.adminList all currently loaded table definitions with their row count, slot counts, and assigned block CMD.
/zcraft reloadcxp.craft.adminReload both table definitions and recipes from disk/database without restarting.

Recipe management

CommandPermissionDescription
/zcraft open [tableId]cxp.craftOpen a crafting table GUI directly by name (no physical block needed). Defaults to the default table.
/zcraft create <tableId> <name>cxp.craft.adminOpen the recipe designer for a new or existing recipe on the given table.
/zcraft edit <tableId> <name>cxp.craft.adminAlias for /zcraft create.
/zcraft delete <tableId> <name>cxp.craft.adminDelete a saved recipe by table ID and recipe name.
/zcraft list [tableId]cxp.craftList all saved recipes, optionally filtered by table.
/zcraft browse [tableId]cxp.craft.adminOpen the recipe browser GUI, optionally filtered to one table.
/zcraft debug <tableId> <name>cxp.craft.adminDump detailed recipe info to chat (grid, outputs, mode, permission).

4. Creating a table in-game

You never need to edit custom_crafting_tables.yml by hand — the wizard handles everything.

  1. 1Run /zcraft newtable to open the setup GUI.
  2. 2Table ID — click the Bookshelf, type a unique ID in chat (e.g. forge_table). Letters, numbers, underscores only.
  3. 3GUI Title — click the Name Tag, type the title players will see (supports &6color codes).
  4. 4Rows — click one of the 1–6 glass panes to set the GUI height.
  5. 5Trigger — optionally click the Note Block to set an assigned_block (pack:id) and/or the Item Frame to set an assigned_furniture (pack:id). Players right-click that block/furniture in the world to open the table.
  6. 6Click Design Layout → (Painting). In the slot painter, click each slot to cycle: ■ INPUT■ OUTPUT → empty. Click ✓ Done when finished.
  7. 7Back in the setup menu, click ✓ Save Table (Emerald) — the table is written to custom_crafting_tables.yml and loaded immediately. No restart needed.
  8. 8Add recipes with /zcraft create <tableId> <recipeName>.
Type cancel in chat at any prompt to go back to the setup menu without changing anything.
Step 1 — /zcraft newtable opens this setup menu
📚Table ID
🏷️GUI Title
🎵Block
🖼️Furniture
1row
2rows
3rows
4rows ✓
5rows
6rows
🎨Layout →
💎Save ✓
Selected / ready Not selected
Step 6 — clicking 🎨 Design Layout opens the slot painter (example: 3×3 input + 1 output)
INPUT
INPUT
INPUT
OUT
INPUT
INPUT
INPUT
INPUT
INPUT
INPUT
Back
Done
Empty (click once) INPUT — blue (click twice) OUTPUT — red (click three times)
To delete a table: /zcraft deletetable <tableId>. This removes the definition but keeps its recipes in the database — useful if you want to recreate the table later with the same ID.

5. Recipe matching

Shaped recipes

Items must match the saved layout. The layout can be placed anywhere in the input grid — the plugin slides the pattern across available slots (offset matching), so a 2×2 recipe works in any corner of a 3×3 grid.

Shapeless recipes

Order doesn't matter — only the set of items counts. Useful for combining ingredients without a fixed arrangement.

Item identity resolution order

  1. Custom pack PDC key (customizer:item_key) — most specific
  2. CustomModelData integer value
  3. Display name (exact match)
  4. Vanilla Bukkit Material — least specific
This resolution order means two custom items with the same vanilla material but different pack IDs are always treated as distinct in recipes.

6. Creating a recipe in-game

  1. 1Run /zcraft create <tableId> <recipeName> to open the recipe designer GUI for that table.
  2. 2Place ingredients into the blue input slots in the desired arrangement.
  3. 3Place the result item into the red output slot.
  4. 4Optionally toggle Shaped / Shapeless mode and set a permission node using the control buttons in the last row.
  5. 5Close the GUI — the recipe is saved automatically and is active immediately.
Recipe Designer — /zcraft create basic_workbench my_recipe (5-row table example)
🌾input
🌾input
input
🌾input
🌾input
input
⚔️output
input
input
input
🔀Shaped
🔑Perm
💾Save
Input slot — place your ingredients here Output slot — place the crafted result here Locked — not part of this table's layout

7. All config keys

KeyRequiredDefaultDescription
enabledNotrueEnable or disable the entire module or a specific table.
storage.typeNosqlitesqlite or mongodb.
storage.sqlite.fileNocustom_crafting_recipes.dbSQLite database file (relative to plugin folder).
assigned_blockNo*Pack block key (pack:id) that opens this table when right-clicked. At least one of assigned_block or assigned_furniture must be set.
assigned_furnitureNo*Pack furniture item key (pack:id) that opens this table when right-clicked as a placed furniture. Can be used together with or instead of assigned_block.
display_nameYesName of this crafting table (legacy color codes supported).
permission.requiredNofalseWhether the permission node is required to use this table.
permission.nodeNoPermission node string checked when required: true.
gui.titleYesInventory title (legacy color codes).
gui.rowsYesNumber of GUI rows (1–6).
gui.input_slotsYesList of slot indices that serve as input slots.
gui.output_slotsYesList of slot indices that serve as output slots (usually just one).
behavior.return_items_on_closeNotrueReturn input items to the player's inventory when they close the GUI without crafting.
behavior.consume_inputsNotrueWhether input items are removed from slots on successful craft.
behavior.allow_partial_outputsNofalseIf false, the craft is blocked if the player's inventory is completely full.

8. Adding recipes to the vanilla crafting table

The vanilla table is a special reserved table that hooks into the real Minecraft workbench — the one players open by right-clicking any normal crafting table in the world.

Recipes saved to the vanilla table work in every vanilla crafting table on the server. No custom block, no furniture, no setup needed for players.
  1. 1Run /zcraft create vanilla <recipeName> — e.g. /zcraft create vanilla magic_sword.
  2. 2The designer opens with a 3×3 grid, matching the vanilla workbench exactly. Place your ingredients and output as normal.
  3. 3Close the GUI — the recipe is saved immediately and works in all vanilla workbenches on the server.
Vanilla Designer — /zcraft create vanilla magic_sword (4-row GUI, mirrors the 3×3 workbench)
💎input
💎input
💎input
⚔️output
🪵input
input
input
input
input
input
💾Save
Input slot — place ingredients Output slot — place result Recipe fires in every vanilla workbench on the server
All existing vanilla Minecraft recipes (sticks, tools, etc.) are untouched. CustomiZer only intercepts the slot when one of your custom recipes matches — otherwise Bukkit handles crafting as normal.

9. Tips & gotchas