FancyCrafting icon

FancyCrafting -----

Custom Crafting GUI, Custom Recipes/Grids All Vanilla Recipes,...



Please submit bugs, questions, issues and suggestions on Discord

A easy to use API for developers to take advantage of custom shaped/shapeless recipes with nbt/textures/meta/enchantments….

If you're a server owner:
FancyCrafting may be required in a plugin which has directed you to this page, download the plugin and put it in your 'plugins' directory and boom, you're good to go!

FancyCrafting is simple and easy to use, first download and import the plugin into your project or use maven:

Code (Text):
<dependency>
            <groupId>de.ancash</groupId>
            <artifactId>fancycrafting</artifactId>
            <version>4.5.3</version>
</dependency>
You will want to import it as a dependency into your plugin.yml just so no errors occur.

You'll want to import:
Code (Java):

import de.ancash.fancycrafting.recipe.IShapedRecipe ;
import de.ancash.fancycrafting.base.AbstractFancyCrafting ;
 

Code (Java):

ItemStack [ ] ingredientsArray = new ItemStack [ ] {
                new ItemStack (Material. COAL_BLOCK ), new ItemStack (Material. COAL_BLOCK ),
                new ItemStack (Material. COAL_BLOCK ), new ItemStack (Material. COAL_BLOCK ),
} ;
 
//dimension of this array is 2 x 2
//up to 8 x 6 possible (8 x 6 = 48 ingredients)
 
ItemStack result = new ItemStack (Material. DIAMOND_BLOCK ) ;
 
IShapedRecipe shapedRecipe = new IShapedRecipe (ingredientsArray, 2, 2, result, "Shaped Tutorial", UUID. randomUUID ( ) ) ;
 
AbstractFancyCrafting. registerRecipe (shapedRecipe ) ;
 

You'll want to import:
Code (Java):

import de.ancash.fancycrafting.recipe.IShapelessRecipe ;
import de.ancash.fancycrafting.base.AbstractFancyCrafting ;
 

Code (Java):

ItemStack [ ] ingredientsArray = new ItemStack [ ] {
                new ItemStack (Material. COAL_BLOCK ), new ItemStack (Material. COAL_BLOCK ),
                new ItemStack (Material. COAL_BLOCK ), new ItemStack (Material. COAL_BLOCK ),
} ;
 
//dimension of this array does not matter
//however max length is 48 & null values will be ignored
//Any other collection can be used as well
 
ItemStack result = new ItemStack (Material. DIAMOND_BLOCK ) ;
 
IShapelessRecipe shapelessRecipe = new IShapelessRecipe ( Arrays. asList (ingredientsArray ), result, "Shapeless Tutorial", UUID. randomUUID ( ) ) ;
 
AbstractFancyCrafting. registerRecipe (shapelessRecipe ) ;
 

You'll want to import:
Code (Java):

import de.ancash.fancycrafting.recipe.IRandomShapedRecipe ;
import de.ancash.fancycrafting.base.AbstractFancyCrafting ;
 

Code (Java):

Map <ItemStack, Integer > probMap = new HashMap <> ( ) ;
 
probMap. put ( new ItemStack (Material. DIAMOND_BLOCK ), 1 ) ;
probMap. put ( new ItemStack (Material. COAL_BLOCK ), 1 ) ;
 
//the probability of one item from the map appearing is
//it's value divided by the sum of all values
 
ItemStack [ ] ingredientsArray = new ItemStack [ ] {
          new ItemStack (Material. COAL_BLOCK ), new ItemStack (Material. COAL_BLOCK ),
          new ItemStack (Material. COAL_BLOCK ), new ItemStack (Material. COAL_BLOCK ),
} ;
 
ItemStack result = new ItemStack (Material. CHEST ) ;
ItemMeta meta = result. getItemMeta ( ) ;
meta. setDisplayName ( "Random Result" ) ;
meta. setLore ( Arrays. asList ( "§7Diamond Block: §a50%", "§7Coal Block: §a50%" ) ) ;
result. setItemMeta (meta ) ;
 
IRandomShapedRecipe randomShapedRecipe = new IRandomShapedRecipe (ingredientsArray, 2, 2, result, "Random Shaped Recipe", UUID. randomUUID ( ), probMap ) ;
 
AbstractFancyCrafting. registerRecipe (randomShapedRecipe ) ;
 

You'll want to import:
Code (Java):

import de.ancash.fancycrafting.recipe.IRandomShapelessRecipe ;
import de.ancash.fancycrafting.base.AbstractFancyCrafting ;
 

Code (Java):

Map <ItemStack, Integer > probMap = new HashMap <> ( ) ;
 
probMap. put ( new ItemStack (Material. DIAMOND_BLOCK ), 1 ) ;
probMap. put ( new ItemStack (Material. COAL_BLOCK ), 1 ) ;
 
//the probability of one item from the map appearing is
//it's value divided by the sum of all values
 
ItemStack [ ] ingredientsArray = new ItemStack [ ] {
          new ItemStack (Material. COAL_BLOCK ), new ItemStack (Material. COAL_BLOCK ),
          new ItemStack (Material. COAL_BLOCK ), new ItemStack (Material. COAL_BLOCK ),
} ;
 
ItemStack result = new ItemStack (Material. CHEST ) ;
ItemMeta meta = result. getItemMeta ( ) ;
meta. setDisplayName ( "Random Result" ) ;
meta. setLore ( Arrays. asList ( "§7Diamond Block: §a50%", "§7Coal Block: §a50%" ) ) ;
result. setItemMeta (meta ) ;
 
IRandomShapelessRecipe randomShapelessRecipe = new IRandomShapelessRecipe ( Arrays. asList (ingredientsArray ), result, "Random Shaped Recipe", UUID. randomUUID ( ), probMap ) ;
   
AbstractFancyCrafting. registerRecipe (randomShapelessRecipe ) ;
 

Installation:


Custom Recipes:


Custom Grids:


Vanilla Crafting Table (3x3 & 2x2):


Random Recipes (Results):


Recipe Blacklisting:


Auto Crafter:


Commands:
Sub commands of "/fc":
No arguments: Opens default grid. Permission: "fancycrafting.open"
"<1-8> <1-6>": Opens different grids, first width then heigth. Permission: "fancycrafting.open.<1-8>x<1-6>"
"<player>": Opens default grid for a player. Permission: "fancycrafting.open.other"
"<player> <1-8> <1-6>": Opens different grids for a player, first width then height. Permission: "fancycrafting.open.other.<1-8>x<1-6>"
No arguments: Reload vanilla & custom recipes and config files. Permission: "fancycrafting.admin.reload"
No arguments: Opens a GUI to create a new custom recipe. Permission: "fancycrafting.admin.create"
"<recipe-name>":
Edit one or multiple custom recipes with the same name where "<recipe-name>" is the name of the recipe with " " replaced with "-". If there are two or more custom recipes with the same name, you can click through them by clicking the arrow buttons. Permission: "fancycrafting.admin.edit"
No arguments:
View all custom recipes. Permission: "fancycrafting.admin.view"
"<recipe-name>": View all custom recipes with the same name where "<recipe-name>" is the name of the recipe with " " replaced with "-". Most vanilla recipes can be viewed as well. Permission: "fancycrafting.view.<recipe-name>"

All Players do not have these permissions by default, even if they are op.
All permission have to be set explicitly.

Crafting Custom Recipes with perms-for-custom-recipes Set to true requires the player to have the permission: "fancycrafting.craft.<recipe-name>" (replace " " with "-")

Crafting vanilla Recipes with perms-for-vanilla-recipes Set to true requires permission: "fancycrafting.craft.<recipe-name>" (replace " " with "-") where recipe-name is the Name of the result

"fancycrafting.admin.create"


"fancycrafting.admin.edit"


"fancycrafting.admin.view"

"fancycrafting.qc"

"fancycrafting.open"

"fancycrafting.admin.reload"

To open the crafting GUI from inside a Deluxe Menus GUI you have to add the following commands:
Code (YAML):
- ' [close ]'
- ' [player ] fc open <delay=2>'

Important:
Requires
ILibrary(https://www.spigotmc.org/resources/ilibrary.89796/)
Requires NBTNexus(https://www.spigotmc.org/resources/nbtnexus.111041/)
Resource Information
Author:
----------
Total Downloads: 11,260
First Release: Dec 31, 2020
Last Update: Jan 3, 2025
Category: ---------------
All-Time Rating:
13 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings