マルチプレイなら『シン・VPS』がおすすめ!

【マイクラ】set_enchantmentsでエンチャント付与【item_modifier】

【マイクラ】set_enchantmentsでエンチャント付与【item_modifier】

この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

こんにちは!
マインクラフターのなつめです。

なつめ

2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!

この記事では、こんな疑問を解決します!

本記事の内容
  • set_enchantmentsでエンチャント付与
  • 実例

set_enchantmentsはその名の通り、エンチャントを付与するためのitem_modifierとなっています。

item_modifierには複数の、エンチャントを付与することが出来る項目がありますが、それらの違いを解説するほか、具体的な例も見ていきます。

それでは、さっそく見ていきましょう!

本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。

set_enchantmentsでエンチャント付与

set_enchantを使用することで、アイテムにエンチャントを付与することが出来ます。

同じitem_modifierとしてエンチャントを付与することが出来るenchant_randomlyやenchant_with_levelsがありますが、それらとは異なり、指示したエンチャント内容そのものを付与します。

なので、ランダム性がないものになっています。

指示したものを確実に付与できるので、ランダム性が必要ない場合にはset_enchantsを使いましょう。

実例

実際の例を見ていきます。

データパックの構造としては、以下の通り。

  • データパック本体
    • data
      • minecraft
        • loot_tables
          • entities
            • cod.json
      • フォルダー
        (今回はsampleと命名したとします)
        • item_modifiers
          • jsonファイル
            (今回はtest.jsonと命名したとします)
    • pack.mcmeta

上記では、タラのドロップ品をエンチャントが付与されているアイテムに変更しているほか、item_modifierとしてset_enchantsを記述しているファイルの場所を示しています。

それぞれのjsonファイルの記述を見てみます。

タラのドロップ品を変更しているファイルの記述

cod.jsonの中身はこちら。

{
  "type": "minecraft:entity",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:diamond_axe",
          "functions": [
            {
              "function": "minecraft:set_enchantments",
              "enchantments": {
                "minecraft:fortune": 3
              }
            }
          ]
        }
      ]
    }
  ]
}

このように記述した場合、タラのドロップ品がダイヤモンドの斧となり、その斧には幸運Ⅲのエンチャントが付与されています。

記述する際に特に難しいことはなく、ennchantments内にエンチャントの指示とそのレベルを記述するだけですね。

item_modifierとしての記述

item_modifierとして記述する場合は、以下のようなものになります。

[
    {
      "function": "minecraft:set_enchantments",
      "enchantments": {
        "minecraft:infinity": 3,
        "minecraft:efficiency": 3
      },
      "add": true
    }
  ]

この場合は、無限Ⅲと効率強化Ⅲが付与されます。

本来付与されないエンチャントでもitem_modifierを使うことで付与できてしまいます。
そのため、相容れない上記のような組み合わせでも問題ありません。

また、addの項目をtrueにしているため、これから付与しようとしているエンチャントがすでに付与されていた場合は、そのレベルを合算します。

上記の例で言えば、効率強化Ⅱが付いている状態で適用させれば、効率強化Ⅴとなるわけですね。

addがfalseで指示されていた場合は、重複するエンチャントはもともとのレベルを無視して、item_modifierで指示されているレベルになります。
要は合算することなく、上書きしてしまうわけです。

適用させるコマンドとしては、以下のようなものになります。

/item modify entity @s weapon.mainhand sample:test

まとめ

というわけで、今回のまとめです。

ポイント
  • set_enchantmentsを使うことで、指示したエンチャントをアイテムに付与させることが出来る。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】