Immersive Crafting
Immersive Crafting is a library mod adding support for data-driven in-world crafting.
Crafting recipes are completely data-driven and reside in the data/${your_datapack}/ic_recipes
folder. Recipes can also be generated using the fabric-datagen API.
Immersive Crafting provides several built-in recipe types, such as crafting items when clicking with an item on a block. Everything is designed to be highly customizable.
Documentation
Up-to-date documentation can be found here.
Example
The following example crafts a nether star from five diamonds when the player right-clicks on a quartz block with a stack of diamonds at night.
{
"type": "immersive_crafting:use_item_on",
"ingredient": {
"type": "immersive_crafting:item",
"stack": {
"count": 5,
"id": "minecraft:diamond"
}
},
"predicate": {
"conditions": [
{
"type": "immersive_crafting:invert",
"condition": {
"type": "immersive_crafting:day_time",
"end_time": 12999,
"start_time": 0
}
},
{
"type": "immersive_crafting:block",
"block": {
"id": "minecraft:quartz_block"
}
}
]
},
"result": [
{
"type": "immersive_crafting:item",
"stack": {
"count": 1,
"id": "minecraft:nether_star"
}
}
]
}
Usage & Dependencies
- Immersive Crafting for Fabric depends on Fabric API.
- It is recommended to use JEI to view the recipes.
All Versions
+ Add Version- port to 26.1
- fix mod crashing on dedicated servers
- temporarily remove support for EMI, as it is not yet available on 26.1
- add JEI support
- port to 26.1
- fix mod crashing on dedicated servers
- temporarily remove support for EMI, as it is not yet available on 26.1
- add JEI support
- fix incorrect registry creation
### Known issues:
EMI might not display recipes properly if connected to a dedicated server.
- fix incorrect registry creation
### Known issues:
EMI might not display recipes properly if connected to a dedicated server.
- Allow use item recipes to take multiple ingredients.
If less than one or more than two ingredients are present, parsing the recipe will fail.
- Validate recipe ingredients and predicates. This should prevent exceptions from being thrown at runtime.
- remove
spawn_at_playerin favor offrom_face. This property determines how stacks are crafted. - Block Stacks (see below): If
from_faceis true, the block will be spawned at the block position next to the
on which the item was used. Otherwise, the block the player used the item on will be replaced.
- allow blocks to be possible results. The placement of blocks is determined based on the value of the
fromFace
- Separate Ingredients and stacks. This means:
- Stacks still test against recipe contexts, but contrary to ingredients and conditions, they should not return if
match a contexts, but rather true if they can be crafted under the current circumstances, e.g. if a block can be
placed at the given
BlockPos.- Stacks are now tested to check if they can be crafted, not if they meet certain conditions
- the item and tag ingredients (which replace the item stack) have more freedom and can match against tags as well
specific items.
### Known issues:
EMI might not display recipes properly if connected to a dedicated server.
- Allow use item recipes to take multiple ingredients.
If less than one or more than two ingredients are present, parsing the recipe will fail.
- Validate recipe ingredients and predicates. This should prevent exceptions from being thrown at runtime.
- remove
spawn_at_playerin favor offrom_face. This property determines how stacks are crafted. - Block Stacks (see below): If
from_faceis true, the block will be spawned at the block position next to the
on which the item was used. Otherwise, the block the player used the item on will be replaced.
- allow blocks to be possible results. The placement of blocks is determined based on the value of the
fromFace
- Separate Ingredients and stacks. This means:
- Stacks still test against recipe contexts, but contrary to ingredients and conditions, they should not return if
match a contexts, but rather true if they can be crafted under the current circumstances, e.g. if a block can be
placed at the given
BlockPos.- Stacks are now tested to check if they can be crafted, not if they meet certain conditions
- the item and tag ingredients (which replace the item stack) have more freedom and can match against tags as well
specific items.
### Known issues:
EMI might not display recipes properly if connected to a dedicated server.
- Add +modloader to version
- fix api jar uploading
### Known issues:
EMI might not display recipes properly if connected to a dedicated server.
- Add +modloader to version
- fix api jar uploading
### Known issues:
EMI might not display recipes properly if connected to a dedicated server.
- set up unit tests for common module
- Port to 1.21
- Fix registries not being created correctly
### Known issues:
EMI might not display recipes properly if connected to a dedicated server.
- set up unit tests for common module
- Port to 1.21
- Fix registries not being created correctly
### Known issues:
EMI might not display recipes properly if connected to a dedicated server.
- ported to 1.20.6
- t
## Breaking Changes
- the mutually exclusive resource location and tag fields for the block condition are now grouped into the
block
``
json5
{
// this is new
"block": {
"id": "minecraft:stone"
},
// nothing changed here
"hardness": {
"min": 1
}
}
`
Instead of leaving out id and tag, one must now leave out the whole block key instead. If block is present,
it must contain id *xor* tag`.- support Neoforge instead of Forge
- ported to 1.20.6
- t
## Breaking Changes
- the mutually exclusive resource location and tag fields for the block condition are now grouped into the
block
``
json5
{
// this is new
"block": {
"id": "minecraft:stone"
},
// nothing changed here
"hardness": {
"min": 1
}
}
`
Instead of leaving out id and tag, one must now leave out the whole block key instead. If block is present,
it must contain id *xor* tag`.- support Neoforge instead of Forge
- added multiloader support
- added multiloader support
- Fix Tree rendering when a node only has a single child.
- The complete API has javadoc comments now.
- Clients with immersive crafting will now be able to browse recipes.
- Initial Condition tree implementation. Can be accessed from emi
- more javadoc
- Added basic support for EMI (predicates are still missing)
- Recipe in- and outputs are now based on the same powerful