# World Interaction Client Recipes

<Callout variant='info'>
Prior to RRV 6.5.0, the path to info recipes was `rrv_world_interaction`, not `rrv/recipe`. `rrv_world_interaction` no longer functions in versions 7.0.0 and above..
</Callout>

RRV provides a format for world interaction recipes, allowing modpacks (or mods!) to show information about interactions in the world through resource packs. These JSON files should be added to a `assets/<namespace>/rrv/recipe` folder in your resource pack.

## Examples

The `left`, `right`, and `result` entries can be supplied with either an item tag, an item, a list of items, or an item stack.

### Chest Boats (Item Tags)

Recipe file - `assets/rrv/rrv/recipe/chest_boats.json`
```json
{
  "type": "rrv:world_interaction",
  "left": "#c:chests",
  "right": "#minecraft:boats",
  "result": "minecraft:oak_chest_boat"
}
```

### Cobblestone (Items)

Recipe file - `assets/rrv/rrv/recipe/cobblestone.json`
```json
{
  "type": "rrv:world_interaction",
  "left": "minecraft:water",
  "right": "minecraft:lava",
  "result": "minecraft:cobblestone"
}
```

### Priority

Recipes can also set a priority. Higher priority recipes will show up before recipes with lower priority - negative numbers are allowed.

Recipe file - `assets/rrv/rrv/recipe/cobblestone.json`
```json
{
  "type": "rrv:world_interaction",
  "left": "minecraft:water",
  "right": "minecraft:lava",
  "result": "minecraft:cobblestone",
  "priority": 10
}
```

## API

World interaction recipes can also be added programmatically via a mod's client integration.

```java
ItemView.addClientReloadCallback(() -> {
    ItemView.addWorldInteractionRecipe(new WorldInteractionClientRecipe(Identifier.fromNamespaceAndPath("example-mod", "stone_axe"), SlotContent.of(Items.STONE), SlotContent.of(Items.WOODEN_AXE), SlotContent.of(Items.STONE_AXE)));
});
```