Fast Crafting
Official compatibility
| Element | Reference |
|---|---|
TypeWriter | Required. Use the official TypeWriter release supported by the extension release. |
| Related extensions | Install the related extensions listed on this page before using entries that depend on them. |
The FastCrafting Extension provides a Typewriter crafting interface backed by the GuiAndDialogs API. Recipe definitions are catalogued once per entry configuration, while craft availability is recalculated from each player's server-side inventory. Validation and item mutation remain server-authoritative.
Features
- Optimized recipe catalog - Recipe definitions are cached per entry configuration; inventory-dependent craft limits are calculated per player.
- Integrated one-inventory menu - Optional Crafting and Recipes tabs, without nested menus, a close button or an external vanilla workbench.
- Quick crafting - A permission-gated second row exposes currently available recipes; the permission row is hidden completely when the player lacks the configured permission.
- Recipe catalogue controls - Nine BTC/RPGCORE profession categories, available/total counters, alphabetical or availability sorting, all/available/missing filters, Paper Dialog search and dynamic pagination.
- Direct crafting - Clicking a catalogue or quick-craft recipe crafts immediately using the selected quantity; shift-click crafts the maximum when enabled.
- Manual classic matrix - The integrated Crafting tab can embed a temporary 3x3 matrix and output slot. The matrix is never populated automatically from a catalogue recipe, and inputs are returned safely when the menu closes.
- MiniMessage rendering - Integrated labels and lore use MiniMessage; legacy
&colour codes are not part of the integrated menu contract. - Official/custom split - The public artifact targets Java 21 bytecode and official Typewriter/Paper/GuiAndDialogs. The BTC artifact targets Java 25 and uses the BTC GUI, BTC Core and RPGCORE crafting metadata.
Entries
- Actions - Open FastCrafting: Opens the customized crafting menu.
User guide
Trigger the fastcrafting action from commands, NPCs, events, or other Typewriter entries.
Menu modes
integratedMenu.enabled defaults to false to preserve existing legacy pages. When enabled, the entry uses one 54-slot inventory with the following layout:
| Area | Crafting tab | Recipes tab |
|---|---|---|
| Row 1 | Crafting/Recipes tabs | Crafting/Recipes tabs |
| Row 2 | Permission-gated quick recipes | Configured recipe categories |
| Rows 3-5 | Manual 3x3 matrix, output and quantity controls | Recipes for the selected category |
| Row 6 | Refresh and menu controls | Search, sort, filter and page indicator |
Recipe catalogue clicks craft directly. Only manual interaction with the 3x3 input slots can populate the matrix.
Configuration
| Setting | Purpose |
|---|---|
recipeNamespace | Restrict recipes to one namespace. |
disableVanillaRecipes | Exclude minecraft: recipes. |
useMMOItemsRecipes | Add MMOItems station recipes when MMOItems is enabled. |
dropWhenInventoryFull | Drop overflow results; input items are always returned on menu close. |
integratedMenu | Enable the single-inventory menu, categories, quick-craft row, filters, search and pagination. |
classicCrafting | Configure the optional manual 3x3 matrix and output slot. |
Integrated menu settings
| Setting | Default | Description |
|---|---|---|
enabled | false | Enables the integrated one-inventory menu; legacy pages remain unchanged when disabled. |
quickCraftPermission | fastcrafting.quickcraft | Permission required to display the quick-craft row; blank makes it visible to everyone. |
defaultTab | CRAFTING | Initial tab: CRAFTING or RECIPES. |
defaultSort | AVAILABLE_FIRST | AVAILABLE_FIRST or ALPHABETICAL. |
defaultFilter | ALL | ALL, AVAILABLE or MISSING. |
quickRecipesPerPage | 8 | Number of quick-craft recipes shown on row 2. |
recipesPerPage | 27 | Number of catalogue recipes shown on rows 3-5. |
categoryIds | Custom: nine RPGCORE professions; public: crafting | Profession categories displayed on the Recipes tab. |
searchEnabled | true | Enables the Paper Dialog search action. |
Runtime contract
The implementation does not expose a /fastcraft Bukkit command or client-authoritative crafting state. Craft actions are scoped to the active GUI session and inventory mutations remain server-authoritative.
Compatibility
The public extension is for the official Paper/Typewriter stack and emits Java 21 bytecode for Java 21 compatibility. It must be paired with the official GuiAndDialogs/OmniGUI extension and does not import BTC Core or RPGCORE. Its default integrated catalogue exposes the crafting category.
The BTC custom extension targets Java 25 and the BTC Core/RPGCORE stack. Its recipe metadata resolves profession identifiers from BtcCraftingRegistry, allowing the standard BTC categories (combat, mining, woodcutting, farming, fishing, crafting, smelting, alchemy, enchanting) to be displayed with available/total counters. The public artifact deliberately does not provide these RPGCORE categories.
For custom BTC recipes, use the BTC crafting namespace (for example custom) and configure RPGCORE profession metadata. The public variant reads the official Bukkit/Paper recipe catalogue and keeps the public dependency boundary intact.
Troubleshooting
The extension is not visible
Check that the installed release matches the supported TypeWriter release and that the related extensions listed in the compatibility section are present.
An entry is missing
In the Typewriter Web panel, use the Search bar or the + button to find or create the entry with its exact identifier. Entry IDs and field names are case-sensitive; do not translate them.
The entry saves but nothing happens
Check that the entry is connected to the trigger, command, objective, event, or menu interaction required by its type. Test with optional permissions and criteria removed, then add them back one at a time.
An integration does not work
Verify the dependency and version shown in the extension card, then check the server log for the first error. Do not replace a missing dependency with a similarly named plugin unless the extension source explicitly supports it.