This is a data pack that allows you to place items on top of the CraftingTable and craft them without opening the GUI.
Crafting Table
QTable can be activated just by installing the Crafting Table.
QTable will not be activated if placed while sneaking.
Stick Table
You can place them by right-clicking on the ground while holding the eight sticks.
Right-click an empty slot 3 times with your bare hands to destroy it.
Unsupported recipe
- armor dye
- book cloning
- firework star
- map extending
- repair item
Uninstall
To remove the data pack, execute the following command and delete the folder.
function qrafting_table:uninstall
How to create a custom recipe.
This data pack allows you to easily add recipes from external data packs.
To begin, add the following files to your data pack.
📂data
└📂qrafting_table
└📂tags
└📂functions
└📄displays.json
└📄item_tags.json
└📄items.json
└📄poses.json
└📄positions.json
└📄recipes.json
└📄recycle_items.json
How to add a recipe
1.Create a 📄mcfunction of any name in any location and write its location to 📄recipes.json.
2.Enter the following command into the 📄mcfunction you created.
(Pink is a Boiler Plate.)
(You can add an item by adding an Orange.)
Standard recipe for 3x3
execute if data entity @s {ArmorItems:[{tag:{air:(Number of empty slots)}}]} if entity @e[tag=(Slot number),tag=(Tag name of the item),distance=..0.625,limit=1] at @s run summon minecraft:item ~ ~1.3 ~ {Item:{(Item nbt)}}
(Number of empty slots)
0b~8b
(Slot number)
Enter as QT_1, the numbering scheme matches the numeric keypad.
(Tag name of the item)
For vanilla items, enter something like QT_stone.
(Item nbt)
id:stone,Count:1b,tag:{} etc.
Standard recipe for 2x2
execute if data entity @s {ArmorItems:[{tag:{air:(Number of empty slots)}}]} at @e[tag=(Tag name of the item),distance=..0.625,limit=9] positioned (Move the slot) if entity @e[tag=(Tag name of the item),distance=..0.001,limit=1] at @s run summon minecraft:item ~ ~1.3 ~ {Item:{(Item nbt)}}
(Number of empty slots)
0b~8b
(Tag name of the item)
For vanilla items, enter something like QT_stone.
(Move the slot)
^ ^ ^0.1875 to move to the upper slot..
^0.1875 ^ ^ to move to the left slot.
(Item nbt)
id:stone,Count:1b,tag:{} etc.
Shapeless recipes
execute if data entity @s {ArmorItems:[{tag:{air:(Number of empty slots)}}]} if entity @e[tag=(Tag name of the item),distance=..0.625,limit=9] at @s run summon minecraft:item ~ ~1.3 ~ {Item:{(Item nbt)}}
(Number of empty slots)
0b~8b
(Tag name of the item)
For vanilla items, enter something like QT_stone.
(Item nbt)
id:stone,Count:1b,tag:{} etc.
Register items for multiple use
execute store result entity @s ArmorItems[0].tag.(Any name) byte 1 if entity @e[tag=(Tag name of the item),distance=..0.625,limit=9]
(Any name)
The id of the item to use is recommended.
stone apple etc.
(Tag name of the item)
For vanilla items, enter something like QT_stone.
Shapeless recipes that use multiple of the same item
execute if data entity @s {ArmorItems:[{tag:{air:(Number of empty slots),(Registered name):(Number of use)}}]} if entity @e[tag=(Tag name of the item),distance=..0.625,limit=9] at @s run summon minecraft:item ~ ~1.3 ~ {Item:{(Item nbt)}}
(Number of empty slots)
0b~8b
(Registered name)
The name specified in the above command.
(Number of use)
0b~8b
(Item nbt)
id:stone,Count:1b,tag:{} etc.
Register a name for the custom item
1.Create a 📄mcfunction of any name in any location and write its location to 📄items.json.
2.Enter the following command into the 📄mcfunction you created.
(Pink is a Boiler Plate.)
execute if data entity @s {HandItems:[{(Item nbt)}]} run tag @e[tag=QT_Target,distance=..0.001,limit=1] add (Name of the item to register.)
(Item nbt)
id:"minecraft:stone",Count:1b,tag:{} etc.
(Name of the item to register.)
Any name.
Grouping item
1.Create a 📄mcfunction of any name in any location and write its location to 📄item_tags.json.
2.Enter the following command into the 📄mcfunction you created.
(Pink is a Boiler Plate.)
tag @s[tag=(Registered item name)] add (Group name)
(Tag name of the item)
For vanilla items, enter something like QT_stone.
(Group name)
Any name.
Registration of location name for Items with custom model data
1.Create a 📄mcfunction of any name in any location and write its location to 📄displays.json.
2.Enter the following command into the 📄mcfunction you created.
(Pink is a Boiler Plate.)
execute if data entity @s {HandItems:[{(Item nbt)}]} run data merge entity @s {CustomName:'"(location name)"'}
(Item nbt)
id:stone,Count:1b,tag:{} etc.
(location name)
A name to divide the locations to be placed.
It does not interfere if it is covered by an item name.
Location Registration
1.Create a 📄mcfunction of any name in any location and write its location to 📄positions.json.
2.Enter the following command into the 📄mcfunction you created.
(Pink is a Boiler Plate.)
execute if entity @s[name=(Location Name)] positioned (Location) run function qrafting_table:position
(Location Name)
Registered Location Name.
(Location)
^ ^ ^ to specify location
do not use ^0 ^0 ^0. Please move it at least 0.002.
Pose Registration
1.Create a 📄mcfunction of any name in any location and write its location to 📄poses.json.
2.Enter the following command into the 📄mcfunction you created.
(Pink is a Boiler Plate.)
data merge entity @s[name=(Location Name)] {Pose:{(pose)}}
(Location Name)
Registered Location Name.
(pose)
RightArm:[] or HeadArm:[]
For the head, do not use [0f,0f,0f].
Recycled items
1.Create a 📄mcfunction of any name in any location and write its location to 📄recycle_items.json.
2.Enter the following command into the 📄mcfunction you created.
(Pink is a Boiler Plate.)
execute if entity @s[tag=(Tag name of the item)] run summon armor_stand ~ ~ ~ {HandItems:[{(Item nbt)}],Tags:[QT_Slot],Small:true,Marker:true,Invisible:true}
It cannot be changed for each recipe.
(Tag name of the item)
Items to use.
(Item nbt)
Items to be returned.