Remark: This tutorial only works for the 1.8 version of the Custom Crafter module. For the 1.9 version, see Custom Crafting Module Creation 1.9.

This tutorial will teach you how to make your own modules using the Custom Crafter base module. On this page, each example will be illustrated using screenshots and the commands that go with it. All information can also be found as a video on Accidental Games's channel.

Tutorial made by SugarCaney

Installing the base module Edit

Before you start, make sure you have the Custom Crafter base module installed. The One-Click command and the schematic can be found on the Gamemode 4 website:

Setting up the clock Edit


Summoning the CCClock

Connecting with the base module Edit

After you have finished installing the base module you can start creating your fill clock. First you have to summon in a specific ArmorStand to tell the base module you're having your contraption there. This ArmorStand should have a custom name of CCClock. To summon in the ArmorStand, you could use the following command:

/summon ArmorStand ~ ~ ~ {CustomName:"CCClock",NoGravity:1b,Marker:1b}
Every time the main Custom Crafter clock pulses, a redstone block will be placed directly below it. Because of a quirk in the One-Click MCEdit filter Sparks uses, it is recommended to make sure the ArmorStand floats a few tenths of a block above the block that is supposed to become a redstone block[1].

The 'setblock-clock' completed

After you have summoned in the ArmorStand, make sure you put a command block in that turns the redstone block back into whatever block you want (as long as it is not a redstone block). This could e.g. be achieved with a command like this:

/setblock ~ ~1 ~ minecraft:wool 14
You might want to break the redstone block to update the clock as replacing a redstone block does not emit a new pulse to command blocks.

Creating the fill-clock Edit


Execution order

To create the fill clock, put two command blocks alongside the block underneath the ArmorStand to get a strip of blocks turning into redstone blocks and wool blocks as shown in the image to the right. In that image, I used the following two commands:

/fill ~-1 ~ ~1 ~-5 ~ ~1 minecraft:redstone_block
/fill ~-1 ~ ~-1 ~-5 ~ ~-1 minecraft:wool 14
Make sure the blocks first get set to redstone blocks and then to another kind of block. You can check in which order the commands get executed by looking in the debug screen. First all commands on the X-axis will be executed then both Y-commands and finally the commands on the Z-axis sides of the block. All from negative to positive. This means that the right command block must fill the redstone blocks and the left must fill the wool blocks.

Now you should have your bar of redstone block awesomeness! Does it work? Check if it works by breaking wool blocks, when they pop back up. You're good to go!

Prepare your crafting recipes Edit

Before you'll be implementing the crafting recipes, you first have to make some preperations. Although you could in theory skip this step, it is strongly advised to follow this step to prevent mistakes (typos are the worst).

For this tutorial. We will be making a recipe to gain 4 string back from any coloured wool block.

Pre-make the crafting recipes Edit

To make it easier to get the data tags of the Custom Crafter right, we make a mock up of the recipe in regular droppers first. For our wool-recipe we'll make the following recipes (in 2 separate droppers):


1st recipe. 2nd result.

Fetching data tags Edit

Fetching setup

/blockdata setup

To fetch the blockdata of the hopper, use the following command on the droppers:

/blockdata ~ ~-1 ~ {}
When you execute that command in a command block (make sure you don't forget the empty curly brackets), the blockdata of the block will show up in the commandblock output.


Command output

Implementing the recipe Edit

All crafting recipes in the Custom Crafter will get checked the same way. First you have to check for each Custom Crafter if there is a dropper with the required recipe. Once that check succeeds, the crafter's score in the GM4_crafting-objective will become 1. Then you want to execute all actions (like replacing the droppers inventory with the recipe's result) on all ArmorStands with the name GM4_CustomCrafte­r that have a crafting score of at least 1.

It is extremely important that the commands get executed in the right order. You only want stuff to happen when your crafting recipe is used. Make sure you know the order of execution (as explained in section 2.2).

Checking for the recipe Edit

From our blockdata acquired in step 3, we can easily check if the dropper contains the right materials. For the check, we will use the following (template) command:

/execute @e[type=ArmorStand,name=GM4_CustomCrafter] ~ ~ ~ testforblock ~ ~ ~ minecraft:dropper -1 {<data that the dropper should match>}
This command will execute the testforblock command as all ArmorStands that are Custom Crafters (name=GM4_CustomCrafter). The testforblock command will check if the dropper at its place (-1 = ignoring the damage value) has all the data as specified in the squiggly brackets.

For the data tag we have to specify what items have to be stored in the crafter to mark the craft as successful. For that, we use the Items-tag of the recipe-dropper that we got from step 3:

There is still one problem though. We want to be able to convert any colour of wool instead of only white wool. The information we got from the dropper will also fetch the damage values required. This means that using this tag, all wool blocks must have a damage value of 0; white wool (Damage:0s). Luckily, Minecraft will only check for the data tags you specify: so we can easily get rid of the Damage-tag. If we fill this in the template command, we will get the following:
/execute @e[type=ArmorStand,name=GM4_CustomCrafter] ~ ~ ~ testforblock ~ ~ ~ minecraft:dropper -1 {Items:[0:{Slot:0b,id:"minecraft:wool",Count:1b}]}
Also note that the wool is placed in the top-left slot of the dropper to allow players to easily automate the process.

Creating the result Edit

The result has to be executed after you have performed the check. For the result, we use the following template command:

/execute @e[type=ArmorStand,name=GM4_CustomCrafter,score_GM4_crafting_min=1] ~ ~ ~ blockdata ~ ~ ~ {<new data of the dropper>}


Finished custom crafting recipe

This command will execute as all ArmorStands called GM4_CustomCrafter that have succeeded the previous command. The GM4_crafting objective is an objective that will keep track of successfully executed commands using the SuccessCount stat. When a command get executed successfully (like when you put in the right crafting recipe), the score will become 1, otherwise it will be 0. Once everything matches the crafter, the blockdata of the dropper will be set to a certain value. This value happens to be the items of the result. If we take the Items-tag from the other dropper we made in step 3 and fill it into the {} in the command, you should get the following command:

/execute @e[type=ArmorStand,name=GM4_CustomCrafter,score_GM4_crafting_min=1] ~ ~ ~ blockdata ~ ~ ~ {Items:[0:{Slot:4b,id:"minecraft:string",Count:4b,Damage:0s}]}
Now the setup should be complete. Give it a try yourself!

Tech Tree Custom Crafters Edit

Some modules such as Mastercraftman's Workbench and Equivalent Exchange use Tech Tree Custom Crafters. These are custom crafters that will develop special recipes, exclusive to that type of crafter. All you need to do is simply rename the dropper and replace the item on top of the head of the armor stand.

Every Tech-Tree crafter requires a recipe. So, put these commands after the last recipe check and before the next. When this recipe is entered, it will upgrade the crafter.

Changing the Dropper Name Edit

This step must be completed for custom and exclusive recipes. Think of a name for your crafter (Let's choose Iron Crafter) and put that name into this command.

/execute @e[type=ArmorStand,name=GM4_CustomCrafter,score_GM4_crafting_min=1] ~ ~ ~ blockdata ~ ~ ~ {CustomName:"Iron Crafter"}
This will edit the GUI display name of the dropper. It is only visible if you exit out of the dropper.

Changing the Display Block Edit

This step is optional, but will help you distinguish your crafters from others.

/execute @e[type=ArmorStand,name=GM4_CustomCrafter,score_GM4_crafting_min=1] ~ ~ ~ entitydata @e[type=ArmorStand,c=1] {Equipment:[0:{},1:{},2:{},3:{},4:{id:"YOUR BLOCK OR ITEM HERE",Count:­0b,Damage:0s,}]}
This will change the item the armor stand is wearing. Make it personal!

Adding Crafter-Specific Recipes Edit

To have exclusive custom crafting recipes to your crafter, you will need to add an NBT tag to the recipe detection.

/execute @e[type=ArmorStand,name=GM4_CustomCrafter] ~ ~ ~ testforblock ~ ~ ~ minecraft:dropper -1 {CustomName:"YOUR CUSTOM DROPPER NAME HERE",<Item Tags for Recipe>}
Then you have a custom custom crafter. It will perform all normal custom crafter recipes and any custom ones you have added. This means you only need to have 1 in your base to act as a custom crafter.

Beyond the basics Edit

Of course, there is more you can do than just put in the crafting result. All actions rely on the same mechanic though: /execute @e[type=ArmorStand,name=GM4_CustomCrafter,score_GM4_crafting_min=1] ~ ~ ~ <anything you would like>. If you want to make more things happen: make sure you execute it after the recipe check but before your next recipe check.

This section will contain examples of commands that serve as example for the given effect. Feel free to experiment with the values in the commands!

Playing Sounds Edit

/execute @e[type=ArmorStand,name=GM4_CustomCrafter,score_GM4_crafting_min=1] ~ ~ ~ playsound @a[r=4] ~ ~ ~ 1 1.3 1
This command simply plays the sound to all players within a 4 block range of the Custom Crafter.

Changing top block of the crafter Edit

/execute @e[type=ArmorStand,name=GM4_CustomCrafter,score_GM4_crafting_min=1] ~ ~ ~ entitydata @e[type=ArmorStand,c=1] {Equipment:[0:{},1:{},2:{},3:{},4:{id:"minecraft:emerald_block",Count:­0b,Damage:0s,}]}
Use the entitydata-command to edit the Equipment-tag of the ArmorStand that represents the Custom Crafter. The last of 5 slots represents the item that the ArmorStand wears as head gear. Setting it to an emerald block in this case.

Changing the name of the crafter Edit

/execute @e[type=ArmorStand,name=GM4_CustomCrafter,score_GM4_crafting_min=1] ~ ~ ~ blockdata ~ ~ ~ {CustomName:"Amazing Crafter"}


Dropper with {CustomName:"Amazing Crafter"}

Use blockdata to set the inventory name of the dropper to anything you like. If you want to make the Custom Crafter even more custom, you could check in your recipe for the {CustomCrafter:"Your Name"} tag.

Shapeless recipes Edit

Remove the Slot tags of the detection command to make a recipe shapeless. For example,

/execute @e[type=ArmorStand,name=GM4_CustomCrafter] ~ ~ ~ testforblock ~ ~ ~ minecraft:dropper -1 {Items:[0:{Slot:0b,id:"minecraft:emerald",Count:1b},{Slot:1b,id:"minecraft:diamond",Count:1b}]}
/execute @e[type=ArmorStand,name=GM4_CustomCrafter] ~ ~ ~ testforblock ~ ~ ~ minecraft:dropper -1 {Items:[0:{id:"minecraft:emerald",Count:1b},{id:"minecraft:diamond",Count:1b}]}
The items can now be put in any slot of the Custom Crafter.

References Edit

  1. [1]