この記事では、エンチャントの仕組みについて説明する。
基本的な仕組み[]
エンチャントテーブルでエンチャントテーブルを付与する為に必要なレベルの値は、各スロットごとのエンチャントレベルによって決定される。このエンチャントレベルは、後に説明するエンチャントの選定にも一部補正の上で使用される。ここでのエンチャントレベルは、「効率強化V」の「V」などエンチャントの強さを表す値(エンチャント強度)とは異なる。
プレイヤーがエンチャントテーブルに適切なアイテムをを置くと、そのたびに周囲の置かれた本棚の数にしたがって次の公式により基本エンチャントレベルが設定される。
- 基本エンチャントレベル =floor(randomInt(1,8) + floor(本棚数/2) + randomInt(0,本棚数))
ここで、floor()は与えられた値の小数部を切り捨てた値、randomInt()は与えられた上限・下限値の範囲から均等分布でランダムに整数を選択するものである。本棚数の上限は15であり、計上の仕組みは#本棚の設置を参照。
この基本値は、エンチャントテーブルの上・中・下の3つのスロットのエンチャントレベルの値に、次の公式に拠って変換される。
- 上のスロットのエンチャントレベル = max(基本値/3, 1)
- 中のスロットのエンチャントレベル = (基本値×2)/ 3 + 1
- 下のスロットのエンチャントレベル = max(基本値, b×2)
ここでmax()は、与えられた値の内最も大きいものを選択するものである。
本棚の数と各スロットのレベルの取りうる範囲 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
本棚の数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
上 | 1~2 | 1~3 | 1~4 | 1~5 | 1~6 | 1~7 | 2~7 | 2~8 | 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 |
注:上表より、必ずしも下のスロットほどレベルの高いエンチャントが割り当てられるとは限らない。例えば本棚が0個の時、割り当てられたレベルが上から(2, 1, 1)となることもありうる。
本棚の設置[]
エンチャントテーブルの周囲に本棚を設置することで、候補となるエンチャントのレベルを増大させることができる。レベル8以上のエンチャントを使用するには、必ず本棚を設置する必要がある。
本棚は、左図の青色ガラスで示すようにエンチャントテーブルを囲む5×5の正方形上に、エンチャントテーブルと同じ高さおよびそのもう1段上に設置する必要がある。ただしエンチャントのレベルに影響するのは15個までであり、16個以上の本棚を設置してもそれ以上の効果を発揮しない。
本棚が効果を発揮するには、エンチャントテーブルとの間に阻害するブロックがあってはならないが、この「阻害」の基準がエディションによって次のように異なっている。なお、接続が阻害されていなければ本棚からエンチャントテーブルに向かって標準銀河系アルファベットのパーティクルが吸い込まれていく。
Java Edition[]
Java Editionでは、接続が阻害されないためには、間のブロックは空気または雪や草のような、逐一破壊せずとも他のブロックを設置した際に置き換えられて消滅するブロックでなくてはならない。
阻害するブロックがあってはならない位置は、正方形の辺上の本棚についてはその辺の中央の本棚とテーブルの間の位置、角の本棚については本棚とテーブルを斜めに結んだ間の位置である。下段・上段それぞれの本棚は、自分と同じ高さの位置のみに着目する。
図示すると次のようになる。ここで、透明なブロックが阻害するブロックがあってはならない位置、はその本棚の接続には特に影響を及ぼさない位置である。
辺上 | 角 | 下段 | 上段 |
---|---|---|---|
Bedrock Edition[]
Bedrock Editionでは、接続が阻害されないためには、間のブロックは空気でなければならず、雪や草含め空気以外のブロックは全て接続を阻害する。
ブロックがあってはならない位置は、正方形の辺中央の本棚については本棚とテーブルの間の位置、それ以外の本棚については角の本棚とテーブルを斜めに結んだ間の位置である。本棚は自分の段に関係なく、上段・下段のいずれにブロックがあっても阻害を受ける。
図示すると次のようになる。ここで、透明なブロックが阻害するブロックがあってはならない位置、はその本棚の接続には特に影響を及ぼさない位置である。
辺中央 | それ以外 | 下段 | 上段 |
---|---|---|---|
設置例[]
以下、最大レベル30を引き出すために必要な本棚15個の配置例を示す。
レベル変更[]
先述の通り候補となるエンチャントはエンチャントレベルに依存しており、エンチャントレベルは周囲の本棚の数にしたがって決定される。本棚を一々破壊せずにレベルを変更する簡単な方法として、松明などの適当なブロックで本棚の結びつきを阻害してやることがある。
Java Edition[]
左図の配置の本棚に対しては、羊毛で示した場所に下表のように松明等を設置することでレベルを変更できる。
有効本棚数 | |||
---|---|---|---|
0 | |||
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | |||
13 | |||
14 | |||
15 |
Bedrock Edition[]
左図の配置の本棚に対しては、羊毛で示した場所に下表のように松明等を設置することでレベルを変更できる。
有効本棚数 | ||||
---|---|---|---|---|
0 | ||||
1 | ||||
2 | ||||
3 | ||||
4 | ||||
5 | ||||
6 | ||||
7 | ||||
8 | ||||
9 | ||||
10 | ||||
11 | ||||
12 | ||||
13 | ||||
14 | ||||
15 |
エンチャントの選定の仕組み[]
#基本的な仕組みで設定されたエンチャントレベルはそのスロットからエンチャントを付与するために到達が必要なレベルであるが、さらに以下に述べるいくつかのステップを経て、付与するエンチャントの種類や強度を決定するためにも使用される。
以下のステップは、エンチャントテーブルだけでなく、村人や行商人との取引における防具・道具・武器のエンチャントやルートテーブルのアイテム関数などの場面で、指定のレベルに基づきランダムにエンチャントを選択する際にも使用される。
ステップ1 - エンチャントレベルの補正[]
まず初めに、エンチャントレベルの値をエンチャントの選択に使用できるようにする為に補正を加える。
この補正には、アイテムの素材や種類に基づいたエンチャント適性が使用される。エンチャント適性が高いほど補正後のエンチャントレベルが高くなり、より高位のエンチャントが付与されやすくなる。防具・剣・道具に関しては下表の通り、釣り竿などその他のアイテムに関してはすべて一律で1である。
素材 | 防具のエンチャント適性 | 剣・道具のエンチャント適性 |
---|---|---|
木 | - | 15 |
革 | 15 | - |
石 | - | 5 |
チェーン | 12 | - |
鉄 | 9 | 14 |
金 | 25 | 22 |
ダイヤモンド | 10 | 10 |
カメの甲羅 | 9 | - |
ネザライト | 15 | 15 |
補正済みエンチャントレベルは、次の公式によって決定される。
- 補正値 = F × (B + R1 + R2 + 1)
- ここで...
- F は0.85以上1.15以下の乱数である。
- R1 やR2 はそれぞれ独立したランダムな整数であり、下限値は0、上限値はエンチャント適性の 1⁄4 である。
- B は#基本的な仕組みでそのスロットに割り当てられた元々のエンチャントレベルである。
- 使用する乱数はすべて三角分布によって抽出されるため、範囲の中央値が最も選択されやすい。
- 除算の剰余は切り捨てられる。
- 最終値が非整数になった場合は切り捨て、1以下になった場合は1に変換される。
// 0以上n-1以下の範囲から均一分布で乱整数を抽出 function randomInt(n); // 0以上1未満の範囲から均一分布で乱数を抽出 function randomFloat(); // 1以上1+(エンチャント適性/2)以下の範囲から三角分布で乱数を抽出 enchantability_2 = enchantability / 2; int rand_enchantability = 1 + randomInt(enchantability_2 / 2 + 1) + randomInt(enchantability_2 / 2 + 1); // エンチャントレベルを抽出 int k = chosen_enchantment_level + rand_enchantability; // 0.85以上1.15以下の範囲から三角分布で乱数を抽出 float rand_bonus_percent = 1 + (randomFloat() + randomFloat() - 1) * 0.15; // 補正済みエンチャントレベルを最終計算 int final_level = (int)(k * rand_bonus_percent + 0.5); if ( final_level < 1 ) final_level = 1
ソース:Minecraft 1.8のソースコード
ステップ2 - 候補の絞り込み[]
次に、補正済みエンチャントレベルに基づいて可能なエンチャントの候補のリストが作成される。
各種のエンチャントには、その種類と強度(II、IVなど)によって出現可能な補正済みエンチャントレベルの範囲が下表のように定められている。現在の補正済みエンチャントレベルがその種類・強度の許容範囲内に含まれていれば、そのエンチャントが候補リストに追加される。なおエンチャントレベルが複数の強度の範囲に被って含まれている場合は、より高い強度の候補が選択される。
防具のエンチャント | 補正済みエンチャントレベル | ||||
---|---|---|---|---|---|
I | II | III | IV | V | |
ダメージ軽減 | 1 ~ 12 | 12 ~ 23 | 23 ~ 34 | 34 ~ 45 | — |
火炎耐性 | 10 ~ 18 | 18 ~ 26 | 26 ~ 34 | 34 ~ 42 | — |
落下耐性 | 5 ~ 11 | 11 ~ 17 | 17 ~ 23 | 23 ~ 29 | — |
爆発耐性 | 5 ~ 13 | 13 ~ 21 | 21 ~ 29 | 29 ~ 37 | — |
飛び道具耐性 | 3 ~ 9 | 9 ~ 15 | 15 ~ 21 | 21 ~ 27 | — |
水中呼吸 | 10 ~ 40 | 20 ~ 50 | 30 ~ 60 | — | — |
水中採掘 | 1 ~ 41 | — | — | — | — |
棘の鎧 | 10 ~ 60 | 30 ~ 70 | 50 ~ 80 | — | — |
水中歩行 | 10 ~ 25 | 20 ~ 35 | 30 ~ 45 | — | — |
氷渡り | 10 ~ 25 | 20 ~ 35 | — | — | — |
束縛の呪い | 25 ~ 50 | — | — | — | — |
ソウルスピード | 10 ~ 25 | 20 ~ 35 | 30 ~ 45 | — | — |
スニーク速度上昇 | 25 ~ 75 | 50 ~ 100 | 75 ~ 125 | — | — |
剣のエンチャント | 補正済みエンチャントレベル | ||||
I | II | III | IV | V | |
ダメージ増加 | 1 ~ 21 | 12 ~ 32 | 23 ~ 43 | 34 ~ 54 | 45 ~ 65 |
アンデッド特効 | 5 ~ 25 | 13 ~ 33 | 21 ~ 41 | 29 ~ 49 | 37 ~ 57 |
虫特効 | 5 ~ 25 | 13 ~ 33 | 21 ~ 41 | 29 ~ 49 | 37 ~ 57 |
ノックバック | 5 ~ 55 | 25 ~ 75 | — | — | — |
火属性 | 10 ~ 60 | 30 ~ 80 | — | — | — |
ドロップ増加 | 15 ~ 65 | 24 ~ 74 | 33 ~ 83 | — | — |
範囲ダメージ増加 | 5 ~ 20 | 14 ~ 29 | 23 ~ 38 | — | — |
弓のエンチャント | 補正済みエンチャントレベル | ||||
I | II | III | IV | V | |
射撃ダメージ増加 | 1 ~ 16 | 11 ~ 26 | 21 ~ 36 | 31 ~ 46 | 41 ~ 56 |
パンチ | 12 ~ 37 | 32 ~ 57 | — | — | — |
フレイム | 20 ~ 50 | — | — | — | — |
無限 | 20 ~ 50 | — | — | — | — |
道具のエンチャント | 補正済みエンチャントレベル | ||||
I | II | III | IV | V | |
効率強化 | 1 ~ 51 | 11 ~ 61 | 21 ~ 71 | 31 ~ 81 | 41 ~ 91 |
シルクタッチ | 15 ~ 65 | — | — | — | — |
幸運 | 15 ~ 65 | 24 ~ 74 | 33 ~ 83 | — | — |
釣り竿のエンチャントレベル | 補正済みエンチャントレベル | ||||
I | II | III | IV | V | |
宝釣り | 15 ~ 65 | 24 ~ 74 | 33 ~ 83 | — | — |
入れ食い | 15 ~ 65 | 24 ~ 74 | 33 ~ 83 | — | — |
汎用のエンチャント | 補正済みエンチャントレベル | ||||
I | II | III | IV | V | |
耐久力 | 5 ~ 55 | 13 ~ 63 | 21 ~ 71 | — | — |
修繕 | 25 ~ 75 | — | — | — | — |
消滅の呪い | 25 ~ 50 | — | — | — | — |
トライデントのエンチャント | 補正済みエンチャントレベル | ||||
I | II | III | IV | V | |
召雷 | 25 ~ 50 | — | — | — | — |
水生特効 | 1 ~ 21 | 9 ~ 29 | 17 ~ 37 | 25 ~ 45 | 33 ~ 53 |
忠誠 | 12 ~ 50 | 19 ~ 50 | 26 ~ 50 | — | — |
激流 | 17 ~ 50 | 24 ~ 50 | 31 ~ 50 | — | — |
クロスボウのエンチャント | 補正済みエンチャントレベル | ||||
I | II | III | IV | V | |
拡散 | 20 ~ 50 | — | — | — | — |
貫通 | 1 ~ 50 | 11 ~ 50 | 21 ~ 50 | 31 ~ 50 | — |
高速装填 | 12 ~ 50 | 32 ~ 50 | 52 ~ 50 | — | — |
補正済みエンチャントレベルが余りにも低いと、アイテムによっては対応しているエンチャントのどの範囲にも達しないことがある。この場合はエンチャントが付与されず、経験値も消費されない。
トレジャーエンチャント[]
いくつかのエンチャントは「トレジャーエンチャント」と呼ばれる。これはエンチャントテーブルからは決して付与されることはなく、チェストや釣り、交易、物々交換で得られるエンチャントの本でのみ付与される。チェストからは本だけでなく、それが付与された装備も見つかることがある。
ステップ3 - 候補からエンチャントの構成を選択[]
付与できるエンチャントの候補のリストを得たので、最後に実際に付与するエンチャントをこのリストから選択していく。各候補には、エンチャントの種類にしたがって所定の「比重」が下表のように与えられており、この比重が大きいほど選出されやすい。
具体的には次の処理によって候補が選択される。
- リスト内の候補の全比重(Tとおく)の総和を計算する。
- T-1以下の自然数をランダムに選択し、これをwとおく。
- 各候補の比重をwから減算していき、wが負になった時の候補が選択される。
この処理は確率的には、各候補を「比重」の数だけ複製した上で複製後の全候補の中から均等な確率で一つの候補を選択することに等しい。
したがって各エンチャントの選択確率は、そのエンチャントの比重全候補の比重によって与えられる。
エンチャントの種類 | エンチャント | 比重 | エンチャントテーブル からの入手の可否 |
---|---|---|---|
防具 | ダメージ軽減 | 10 | 可 |
落下耐性 | 5 | 可 | |
火炎 | 5 | 可 | |
飛び道具耐性 | 5 | 可 | |
水中採掘 | 2 | 可 | |
爆発耐性 | 2 | 可 | |
水中呼吸 | 2 | 可 | |
水中歩行 | 2 | 可 | |
氷渡り | 2 | 不可 | |
棘の鎧 | 1 | 可 | |
スニーク速度上昇 | 1 | 不可 | |
束縛の呪い | 1 | 不可 | |
ソウルスピード | 1 | 不可 | |
剣 | ダメージ増加 | 10 | 可 |
虫特効 | 5 | 可 | |
ノックバック | 5 | 可 | |
アンデッド特効 | 5 | 可 | |
火属性 | 2 | 可 | |
ドロップ増加 | 2 | 可 | |
範囲ダメージ増加 | 2 | 可 | |
ツルハシ シャベル 斧 クワ ハサミ |
効率強化 | 10 | 可 |
幸運 | 2 | 可 | |
シルクタッチ | 1 | 可 | |
弓 | 射撃ダメージ増加 | 10 | 可 |
フレイム | 2 | 可 | |
パンチ | 2 | 可 | |
無限 | 1 | 可 | |
釣り竿 | 宝釣り | 2 | 可 |
入れ食い | 2 | 可 | |
トライデント | 忠誠 | 5 | 可 |
水生特効 | 2 | 可 | |
激流 | 2 | 可 | |
召雷 | 1 | 可 | |
クロスボウ | 貫通 | 10 | 可 |
高速装填 | 5 | 可 | |
拡散 | 2 | 可 | |
全般 | 耐久力 | 5 | 可 |
修繕 | 2 | 不可 | |
消滅の呪い | 1 | 不可 |
この処理により最低でも1つのエンチャントが必ず付与される。さらに補正済みレベルの高さに応じた確率で、次の処理にしたがって追加のエンチャントが付与されることがある。
- (補正済みレベル + 1) / 50の確率でそのまま続行、さもなくば追加のエンチャント選択は終了。
- 既に選ばれたエンチャントと競合する物を候補のリストから外す。
- 残りのエンチャント候補から先ほどと同様にエンチャントを選択する。
- 補正レベルを半分に割り、小数点以下を切り捨てる(候補は既に決定済みなのでこれによってエンチャントの品位が下がることはない。この処理はエンチャントの個数が増えるに従って継続確率を低下させるためのもの)。
- 1に戻る。
エンチャントの競合[]
いくつかのエンチャントは他のエンチャントと競合する。この場合、両方を同じアイテムに付与することはできない。
エンチャントの競合のルール[]
- 全てのエンチャントはそれ自身と競合する(そのため同種のエンチャントを2つ付与することはできない)。
- 全ての防御系エンチャント(ダメージ軽減、爆発耐性、火炎耐性、飛び道具耐性)は互いに競合する。
- 全ての追加ダメージ系エンチャント(ダメージ増加、アンデッド特効、虫特効)は互いに競合する。
- シルクタッチは幸運、ドロップ増加、宝釣りと競合する。
- 水中歩行と氷渡りは互いに競合する。
- 修繕と無限は互いに競合する。
- 激流は召雷、忠誠と競合する。
- 拡散と貫通は互いに競合する。
競合するエンチャントを合わせ持ったアイテムは /give
コマンドで入手することができる。こうしたエンチャントの振る舞いは不安定だが、基本的には次のような振る舞いをする。
- 同じエンチャントを複数持つアイテムは最初のものが適用される。
- ダメージを軽減するエンチャントを複数持っている防具ではそれぞれが効力を発揮する。
- ダメージを増加するエンチャントを複数持っている武器ではそれぞれが効力を発揮する。
- シルクタッチと幸運の両方を持っている場合はシルクタッチが優先され、シルクタッチの影響を受けないブロックに対しては幸運が適用される。
- 修繕と無限の両方が付与された弓では、両方のエンチャントが適用される。
歴史[]
Java Edition | |||||
---|---|---|---|---|---|
1.18.2 | 22w07a | 本棚の検出方式が変更された。従来は上段・下段の本棚は別の段のブロックにも接続が阻害されていたが、自分の段のブロックのみに着目するようになった。また正方形の辺の端と真ん中の間の本棚は、角ではなく辺の真ん中のブロックに阻害されるようになった。 |