この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめです。
この記事では、こんな疑問を解決します!
- enchant_with_levelsでレベルに応じたエンチャント付与
- 実例
enchant_with_levelsはエンチャントを付与させることのできる、item_modifierの1項目です。
具体的な使い方はもちろんのこと、同じitem_modifierのenchant_randomlyとの違いについても解説していきます。
さっそく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
enchant_with_levelsでレベルに応じたエンチャント付与
enchant_with_levelsを用いることで、レベルに応じたエンチャントをアイテムに付与することが出来ます。
このレベルというのはjsonファイル内で指示するもので、エンチャントテーブルでエンチャントを施す際に用いられるプレイヤーのレベルと同義です。
enchant_with_levelsではレベルを消費することはありませんが、「レベルは幾つ」という指示が必要になるわけですね。
なので多くのプレイヤーは「30以上を指定すると、良いエンチャントが付与されるようになる」ということが、経験から分かるかと思います。
enchant_randomlyとの違い
エンチャントを付与するitem_modifierとして、enchant_randomlyが存在します。
こちらとの違いは、エンチャントテーブルによるエンチャントの付与をベースにしているかどうかです。
enchant_with_levelsはエンチャントテーブルによるエンチャント付与を彷彿とさせますが、enchant_randomlyはそうではありません。
enchant_randomlyはエメラルドなどといった本来エンチャントが付与されることのないアイテムにも対応しているほか、武器に水中採掘など本来付与されることのないエンチャントを付与することも可能です。
自由度が高いenchant_randomlyですが、サバイバルモードで体験できるエンチャントを行いたい場合には、enchant_with_levelsをおすすめします。
実例
ここからは実際の例を見ていきます。
まず、データパックの構造は以下の通りです。
- データパック本体
- data
- フォルダ
(今回はsampleと命名したとします)- item_modifiers
- jsonファイル
(今回はtest.jsonと命名したとします)
- jsonファイル
- loot_tables
- jsonファイル
(今回はtest.jsonと命名したとします)
- jsonファイル
- item_modifiers
- フォルダ
- pack.mcmeta
- data
item_modifier、ルートテーブルのどちらでも扱えるため、上記ではその2か所を示しています。
jsonファイルに記述するものは、生成サイトを利用するのがおすすめです。
item_modifierはこちらをクリック
ルートテーブルはこちらをクリック
item_modiferの場合
item_modiferの場合は、itemコマンドを使用して適用させます。
手元にエンチャント可能なアイテムを持った状態で、以下のようなコマンドを実行すればOKです。
/item modify entity @s weapon.mainhand sample:test
先述している通り、エンチャントテーブルで扱えるアイテムのみが対象となりますので、エンチャント出来ないアイテムを手に持った状態で実行しても変化が起きません。
その点にだけ気を付けましょう。
また、jsonファイルの記述内容の例としては、以下の通り。
[
{
"function": "minecraft:enchant_with_levels",
"levels": 30,
"treasure": true
}
]
levelsとtreasureの2項目を指示する必要があり、levelsはレベルのことですね。
treasureはトレジャーエンチャントを含めるかどうかです。
含めたい場合にはtrueにし、含めない場合にはfalseを選択しましょう。
トレジャーエンチャントとは、エンチャントの本からしか付与させることのできないエンチャントのことで、修繕のエンチャントなどが当てはまります。
ルートテーブルの場合
ルートテーブルにenchant_with_levelsを組み込んだ場合には、lootコマンドなどで付与させることが出来ます。
記述例としては、以下の通り。
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:trident",
"functions": [
{
"function": "minecraft:enchant_with_levels",
"levels": 30,
"treasure": true
}
]
}
]
}
]
}
enchant_with_levelsとして書きこむ内容はitem_modifierの時と変わらず、気をつけるべき点も変わりません。
エンチャントできるアイテムに対して、指示をしましょう。
lootコマンドで付与させる場合のコマンド例はこちら。
/loot give @s loot sample:test
まとめ
というわけで、今回のまとめです。
- enchant_with_levelsを指示することで、エンチャントテーブルでエンチャントするときと同様のことを行える。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!