GUI-based workbenches with configurable input/output slots and persistent recipes designed in-game.
custom_crafting_tables.yml and linked to a pack block via assigned_block or a pack furniture item via assigned_furniture (or both).vanilla table is reserved for the real Minecraft workbench — recipes saved to it fire in every vanilla crafting table in the world. No block or furniture trigger needed. Add recipes with /zcraft create vanilla <name>./zcraft create <tableId> <recipeName> and stored persistently so they survive restarts.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
| Command | Permission | Description |
|---|---|---|
/zcraft newtable | cxp.craft.admin | Open the in-game table creation wizard — configure layout, triggers, and save without touching any file. |
/zcraft deletetable <tableId> | cxp.craft.admin | Remove a table definition from custom_crafting_tables.yml and hot-reload. Saved recipes for that table are kept in the database. |
/zcraft tables | cxp.craft.admin | List all currently loaded table definitions with their row count, slot counts, and assigned block CMD. |
/zcraft reload | cxp.craft.admin | Reload both table definitions and recipes from disk/database without restarting. |
| Command | Permission | Description |
|---|---|---|
/zcraft open [tableId] | cxp.craft | Open a crafting table GUI directly by name (no physical block needed). Defaults to the default table. |
/zcraft create <tableId> <name> | cxp.craft.admin | Open the recipe designer for a new or existing recipe on the given table. |
/zcraft edit <tableId> <name> | cxp.craft.admin | Alias for /zcraft create. |
/zcraft delete <tableId> <name> | cxp.craft.admin | Delete a saved recipe by table ID and recipe name. |
/zcraft list [tableId] | cxp.craft | List all saved recipes, optionally filtered by table. |
/zcraft browse [tableId] | cxp.craft.admin | Open the recipe browser GUI, optionally filtered to one table. |
/zcraft debug <tableId> <name> | cxp.craft.admin | Dump detailed recipe info to chat (grid, outputs, mode, permission). |
You never need to edit custom_crafting_tables.yml by hand — the wizard handles everything.
/zcraft newtable to open the setup GUI.forge_table). Letters, numbers, underscores only.&6color codes).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.custom_crafting_tables.yml and loaded immediately. No restart needed./zcraft create <tableId> <recipeName>.cancel in chat at any prompt to go back to the setup menu without changing anything./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.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.
Order doesn't matter — only the set of items counts. Useful for combining ingredients without a fixed arrangement.
customizer:item_key) — most specific/zcraft create <tableId> <recipeName> to open the recipe designer GUI for that table.| Key | Required | Default | Description |
|---|---|---|---|
enabled | No | true | Enable or disable the entire module or a specific table. |
storage.type | No | sqlite | sqlite or mongodb. |
storage.sqlite.file | No | custom_crafting_recipes.db | SQLite database file (relative to plugin folder). |
assigned_block | No* | — | 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_furniture | No* | — | 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_name | Yes | — | Name of this crafting table (legacy color codes supported). |
permission.required | No | false | Whether the permission node is required to use this table. |
permission.node | No | — | Permission node string checked when required: true. |
gui.title | Yes | — | Inventory title (legacy color codes). |
gui.rows | Yes | — | Number of GUI rows (1–6). |
gui.input_slots | Yes | — | List of slot indices that serve as input slots. |
gui.output_slots | Yes | — | List of slot indices that serve as output slots (usually just one). |
behavior.return_items_on_close | No | true | Return input items to the player's inventory when they close the GUI without crafting. |
behavior.consume_inputs | No | true | Whether input items are removed from slots on successful craft. |
behavior.allow_partial_outputs | No | false | If false, the craft is blocked if the player's inventory is completely full. |
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.
vanilla table work in every vanilla crafting table on the server. No custom block, no furniture, no setup needed for players./zcraft create vanilla <recipeName> — e.g. /zcraft create vanilla magic_sword.assigned_block and assigned_furniture can be set on the same table — either trigger opens it./zcraft delete takes effect immediately without a reload./zcraft deletetable only removes the table definition — saved recipes stay in the database and will reattach if you recreate the same table ID.mongodb: section under storage with uri, database, and collection keys.