Enchanting/Mechanics

Basic mechanics

Whenever the player places an eligible item on the enchantment table, the enchantment levels available are randomly generated for each slot using the formula below. The enchantment level is dependent upon the number of nearby bookshelves (capped at 15) and which slot position it is in.

Base enchantment level available (base) = (1..8 + floor(b / 2) + 0..b),

where b is the number of nearby bookshelves (maximum of 15) and x..y generates a uniformly distributed random integer between x and y, inclusive. This is then modified according to the slot position:

Top slot enchantment level = max(base / 3, 1)
Middle slot enchantment level = (base × 2) / 3 + 1
Bottom slot enchantment level = max(base, b × 2)

max(x, y) returns the greater of two values x and y.

 Number of Bookshelves Min Level (in top slot) Max Level (in bottom slot) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 8 9 11 12 14 15 17 18 20 21 23 24 26 27 29 30
 Number of Bookshelves Level range of top slot Level range of middle slot Level range of bottom slot 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 - 2 1 - 3 1 - 3 1 - 4 1 - 4 1 - 5 1 - 5 1 - 6 1 - 6 1 - 7 2 - 7 2 - 8 2 - 8 2 - 9 2 - 9 2 - 10 1 - 6 1 - 7 2 - 8 2 - 9 3 - 10 3 - 11 3 - 12 3 - 13 4 - 14 4 - 15 5 - 16 5 - 17 5 - 18 5 - 19 6 - 20 6 - 21 1 - 8 2 - 9 4 - 11 6 - 12 8 - 14 10 - 15 12 - 17 14 - 18 16 - 20 18 - 21 20 - 23 22 - 24 24 - 26 26 - 27 28 - 29 30

Note that a higher experience cost for a specific slot does not necessarily mean that the enchantments from that slot will be better than the others with less cost.

In Creative mode, no levels of experience are necessary for enchantments.

Bookshelf placement

Nearby bookshelves raise the available enchantment levels; without any bookshelves, the experience level requirement will never exceed 8.

In order to have an effect, a bookshelf must be placed exactly 2 blocks, laterally, off the enchantment table and be on the same level or one block height above the table, and the 2-high space between the bookshelf and table must be air (even a torch, snow cover or carpet will block the effect), where "between" is as shown in the following diagrams (the white spaces are air, and the do not matter):

Like this from the top:
or
and like this from the side:
or

Note that the glyph particles, which fly from bookshelves, follow different rules and may appear even if the bookshelves are not enhancing the table.

There are many possible bookshelf arrangements that can reach the enchantment limit. A simple method is to surround the enchantment table with a 1-block high square of bookshelves with an empty space anywhere on the perimeter:

Another alternative that is now available is to build a 'library corner' where each bookshelf is two blocks high, as in the plan below. This arrangement gives space for 16 shelves, which is one more than needed, so if the corner bookshelf column cannot be seen, removing one of the two bookshelves in that will not have any effect, both technically and visually.

Selecting an enchantment level

As enchantments offered depend on the enchantment level and the enchantment level depends on the number of active bookshelves, an easy way to change the enchantments offered is to disable bookshelves by placing torches between them and the enchantment table. That way one can still have the entire 'ring' of bookshelves around the table but get lower-level enchantments. Breaking the torches will restore the effect of the bookshelves.

With the layout shown here, enchantments with any number of bookshelves from 0–15 may be easily checked:

How enchantments are chosen

"Enchantment level" is the required experience level (the green number on the bottom-right). "Enchantment power" is the strength of the particular enchantment. For example, "Sharpness IV" has a power of 4. The enchantment algorithm uses a three-step process.

Step one – Applying modifiers to the enchantment level

The first thing that Minecraft does is apply two modifiers to the base enchantment level. Each modifier is restricted to a certain range, with numbers close to the middle of the range more common than those near the ends.

The first modifier is based on the item's "enchantability," which depends on the material and the type of the item (see the table below). Stronger materials tend to have a lower enchantability. Minecraft picks a number between 0 and half the enchantability, then adds that number plus one to the enchantment level. Bows, books, and fishing rods have an enchantability of 1 for this purpose. This random value follows a triangular distribution (like rolling a pair of dice and adding) so results close to a quarter of the enchantability are much more likely than results at the extremes.

The modified enchantment level is calculated with the following formula:

L = B + R1 + R2 + 1

Where:

• R1 and R2 are two individual randomly generated integers:
R1 = randomInteger(0, E / 4)
R2 = randomInteger(0, E / 4)
• B is the base enchantment level.
• E is the enchantability of the item.

Division is rounded down.

Enchantability

Material Armor enchantability Sword/Tool enchantability
Wood N/A 15
Leather 15 N/A
Stone N/A 5
Chain 12 N/A
Iron 9 14
Gold 25 22
Diamond 10 10
Turtle 9 N/A
Netherite 15 15
Book 1 1

Next, Minecraft picks a value between 0.85 and 1.15, again with a triangular distribution. The modified enchantment level is multiplied by this value (so it could increase or decrease by up to 15%) and then rounded to the nearest integer.

Step 1 pseudocode

```// Returns a uniformly distributed random integer between 0 and n - 1, inclusive
function randomInt(n);

// Returns a uniformly distributed random real (fractional) number between 0 (inclusive) and 1 (exclusive)
function randomFloat();

// Returns the real number n rounded to the nearest integer.
function round(n);

// Generate a random number between 1 and 1+(enchantability/2), with a triangular distribution
int rand_enchantability = 1 + randomInt(enchantability / 4 + 1) + randomInt(enchantability / 4 + 1);

// Choose the enchantment level
int k = chosen_enchantment_level + rand_enchantability;

// A random bonus, between .85 and 1.15
float rand_bonus_percent = 1 + (randomFloat() + randomFloat() - 1) * 0.15;

// Finally, we calculate the level
int final_level = round(k * rand_bonus_percent);
if ( final_level < 1 ) final_level = 1
```

Source:[1]

Step two – Find possible enchantments

A sword with several enchantments.

Now, based on the modified level, Minecraft makes a list of all enchantment types that can be applied to the target item along with the power that each enchantment will have.

The power of each enchantment type is determined by the level and the values in the enchantments levels table. For each power value of an enchantment type, there is a minimum and maximum modified level that can produce the enchantment at that power. If the modified enchantment level is within the range, then the enchantment will be assigned that power. If the modified level is within two overlapping ranges for the same enchantment type, the higher power value is used.

Treasure

Some enchantments are "treasure" enchantments (shown in the table below), meaning they can never be created by an enchantment table, and can only be discovered in certain situations: when generating chest loot (equipment and books), when fishing, when generating enchanted book trades, and when an enchanted book is dropped by a raiding illager‌[Bedrock Edition only].

Step three – Select a set of enchantments from the list

Now that it has a list of the possible enchantments for the item, Minecraft must pick some of them that will actually be applied. Each enchantment has a statistical "weight". Enchantments with higher weights have a higher chance of being selected.

In detail, Minecraft uses the following weighted random selection algorithm:

1. Calculate the total weight of all enchantments in the list (T).
2. Pick a random integer in the half range [0; T) as a number w.
3. Iterate through each enchantment in the list, subtracting its weight from w. If w is now negative, select the current enchantment.

This algorithm produces the same results as listing each enchantment the number of times given by its weight, then choosing a random entry from the combined list.

So, for each enchantment in the list, the probability of it being selected is:

P = wT

Where:

• w is the enchantment's weight.
• T is the total weight of all enchantments in the list.
Type of enchantment Enchantment Weight Creatable by an enchantment table
Armor Protection 10 Yes
Feather Falling 5 Yes
Fire Protection 5 Yes
Projectile Protection 5 Yes
Aqua Affinity 2 Yes
Blast Protection 2 Yes
Respiration 2 Yes
Depth Strider 2 Yes
Frost Walker 2 No
Thorns 1 Yes
Curse of Binding 1 No
Sword Sharpness 10 Yes
Bane of Arthropods 5 Yes
Knockback 5 Yes
Smite 5 Yes
Fire Aspect 2 Yes
Looting 2 Yes
Sweeping Edge 2 Yes
Pickaxe
Shovel
Axe
Shears
Efficiency 10 Yes
Fortune 2 Yes
Silk Touch 1 Yes
Bow Power 10 Yes
Flame 2 Yes
Punch 2 Yes
Infinity 1 Yes
Fishing rod Luck of the Sea 2 Yes
Lure 2 Yes
Trident Loyalty 5 Yes
Impaling 2 Yes
Riptide 2 Yes
Channeling 1 Yes
Crossbow Quick Charge 5 Yes
Multishot 2 Yes
Piercing 10 Yes
All applicable Unbreaking 5 Yes
Mending 2 No
Curse of Vanishing 1 No

The player always gets at least one enchantment on an item, and there is a chance of receiving more. Additional enchantments are chosen by this algorithm:

1. With probability (modified level + 1) / 50, keep going. Otherwise, stop picking bonus enchantments.
2. Remove from the list of possible enchantments anything that conflicts with previously-chosen enchantments.
3. Pick one enchantment from the remaining possible enchantments (based on the weights, as before) and apply it to the item.
4. Divide the modified level in half, rounded down (this does not affect the possible enchantments themselves, because they were all pre-calculated in Step Two).
5. Repeat from the beginning.

When enchanting books using an enchantment table, if multiple enchantments were generated then one selected at random will be removed from the final list. This does not apply to other sources of enchanted books that use enchantment mechanics, such as fishing or chests in generated structures.

Conflicting enchantments

Some enchantments conflict with other enchantments and thus both can't be enchanted into the same item, effectively taking down the possibility for one to get an overpowered weapon.

The rules for enchantment conflicts are:

• Every enchantment conflicts with itself. (The player can't get a tool with two copies of the Efficiency enchantment.)
• All damage enchantments (Sharpness, Smite, and Bane of Arthropods) conflict with each other.
• Silk Touch and Fortune conflict with each other.
• Depth Strider and Frost Walker conflict with each other.
• Mending and Infinity conflict with each other.
• Loyalty and Riptide conflict with each other.
• Channeling and Riptide conflict with each other.
• Multishot and Piercing conflict with each other.

Conflicting enchantments may appear on an item with specially-crafted `/give` commands. The behavior of such items should not be relied upon, but in general:

• An item with multiple copies of the same enchantment will use the level of the first copy of that enchantment in the list.
• For armor with conflicting protection enchantments, all enchantments will take effect individually.
• For weapons with conflicting damage enchantments, all enchantments will take effect individually.
• For tools with both Silk Touch and Fortune, Silk Touch takes priority over Fortune on blocks affected by both enchantments. Fortune will still apply to blocks such as crops that are not affected by Silk Touch.
• For bows with both Mending and Infinity, both enchantments work individually.
• For tridents with both Loyalty and Riptide, Riptide will still function normally but the trident can no longer be thrown. Trident still can be thrown using dispenser.
• For crossbows with both Multishot and Piercing, both enchantments work individually.
A chart showing all possible enchantments on diamond tools.

References

1. Minecraft 1.8 source code