Edit

Share via


Loot and Trade Table Functions

Both loot and trade tables share a similar same function set. While most work on both, some only work within a specific type. There are limitations to loot and trade tables in general: for instance, there isn't a way to add can_place_on or can_destroy onto an item through loot or trade tables. See below for the different functions available and an example on how they can be used.

In this tutorial you will learn the following:

  • There are a variety of loot and trade table functions and they can modify a player's loot experience.

Requirements

It's recommended that the following be completed before beginning this tutorial.

Enchanting

These different enchanting functions let you set unique enchanting parameters. Check out our reference documentation for examples and a more detailed explanation of enchanting tables.

enchant_book_for_trading (trade table only)

This function enchants a book using the algorithm for enchanting items sold by villagers. It takes four parameters: base_cost, base_random_cost, per_level_random_cost, and per_level_cost.

enchant_random_gear

Enchants an item using the same algorithm used while enchanting equipment vanilla mobs spawn with. Takes a chance modifier to manipulate the algorithm.

enchant_randomly

Generates a random enchantment that is compatible with the item. Supports the optional treasure boolean (true/false) to allow treasure enchantments to be toggled on and off.

enchant_with_levels

Applies an enchantment as if it were enchanted through an enchanting table using a minimum and maximum XP level defined through the levels parameter. Supports the optional treasure boolean (true/false) to allow treasure enchantments to be toggled on and off.

set_potion

This function sets the potion type of compatible items with a potion ID.

specific_enchants

This function lets you set a list of specific enchantments on an item. It also lets you apply enchantments to items that wouldn't normally be enchantable in-game.

You can also define the enchantments as objects to specifically define an enchantment level.

Note

Max enchantment levels are hard-coded and can't be overwritten.

Modifying items

The following set of functions allow you to modify the results in different ways, such as setting how many of an item is returned, setting its data value, or even setting the name and lore of an item.

Check out our reference documentation for examples and a more detailed explanation of how to modify items in Minecraft: Bedrock Edition.

looting_enchant (loot table only)

This function allows you to modify the count of how many items are returned when an entity is killed by an item with the looting enchantment.

Note

The looting_enchant function only works with loot tables that are called by the death of an entity.

random_aux_value

Similar to random_block_state, this function lets you pick a random auxiliary value for an item.

random_block_state

Lets you randomize the block state of the resulting item.

random_dye

This function affects the colors of the random leather items supplied by a leather worker.

set_actor_id

This function only works with a spawn egg and is used to set the entity ID of that spawn egg. You can also inherit the entity ID of the entity that's associated with that loot table (like making a rabbit drop a rabbit spawn egg) by omitting the id.

set_banner_details

This function only works on banners and currently only supports a banner type of 1. A banner type of 1 results in a villager banner.

set_book_contents

This function allows you to set the contents of a book.

Note

Be aware that you can only use rawtext on the book's contents (pages) at the timing of writing this — rawtext does not work for the author or title tags.

set_count

Sets the quantity of items returned by setting the count value. It could either be an exact number or a min/max range.

set_damage

Sets the percentage of durability remaining for items that have durability by setting the damage value. 1.0 is 100% of durability remaining (undamaged) while 0.0 has no durability remaining.

set_data

Sets the data value of a block or item to an exact ID. This is useful for things like returning a specific potion or an item of a specific color.

set_data_from_color_index

Inherits the data value of the resulting item from the associated entity's color index. An in-game example would be a pink sheep dropping pink wool when you kill it or shear it. If the associated entity doesn't have a color index set (or if it's used inside a chest's loot table), it always yields a data value of 0.

set_lore

This function lets you set the lore of an item. Each line within the lore object represents a single line of text. There's currently no support for rawtext.

set_name

This function lets you set the name of an item. There's currently no support for rawtext.

Miscellaneous

The following functions don't seem to fit anywhere else, but will likely come in handy while you're creating your world. Check out our reference documentation for examples and a more detailed explanation of how to use these miscellaneous functions in Minecraft: Bedrock Edition.

exploration_map

Transforms a normal map into a treasure map that marks the location of hidden treasure. The destination value defines what type of treasure map they receive.

These are the currently supported destinations:

  • buriedtreasure

  • endcity

  • fortress

  • mansion

  • mineshaft

  • monument

  • pillageroutpost

  • ruins

  • shipwreck

  • stronghold

  • temple

  • village

fill_container

This function lets you define the loot table for a chest. When the item is generated and the player places it, it will be full of the contents defined inside the referenced loot table. Loot tables for chests are generated at the time of opening or breaking. Consider it a Schrödinger's box. The content of the chest isn't decided until you look inside.

furnace_smelt (loot table only)

The "furnace_smelt" function can be called on the loot dropping from an entity. If an entity is killed with fire (like if a player is hunting chickens with a sword that has a fire aspect enchantment), the dropped loot will be the cooked version of the item - as if you cooked the chicken in a furnace.

Note

This function will not work in villager trades or with chests.

trader_material_type

This function affects the type of items a fisherman will trade for their wares.

Multiple functions

You can define multiple functions simultaneously, and these multiples can even be multiple of the same function. If there's a conflict between functions, the last to be defined will be the one expressed.