MODなしでカスタムエンチャント:データ駆動型エンチャント形式
エンチャントがデータパックのJSONになったため、カスタムエンチャントにMODは不要になりました。ここでは、ファイル形式、実際に機能するエフェクトコンポーネント、および入手方法について説明します。
以前はハードコードされていたエンチャントですが、現在はデータパックのデータになりました。つまり、新しい名前、新しい効果、新しいコスト曲線を持つ真にカスタムなエンチャントは、JSONファイルで作成できるようになったのです。
保存場所
data/<namespace>/enchantment/lightning_strike.json
名前変更以来、他のすべてのデータパックカテゴリと同様に、単一のenchantment/です。
最小限のファイル
{
"description": { "translate": "enchantment.my_pack.lightning_strike" },
"supported_items": "#minecraft:enchantable/sword",
"weight": 2,
"max_level": 3,
"min_cost": { "base": 10, "per_level_above_first": 10 },
"max_cost": { "base": 50, "per_level_above_first": 10 },
"anvil_cost": 4,
"slots": ["mainhand"]
}
これだけで、エンチャントテーブルに表示され、アイテムに表示される実際のエンチャントが作成されます。まだ何も機能しませんが、動作は別個に定義します。
weightはエンチャントテーブルでのレア度です。バニラでは、コモンに10、非常にレアに1を使用しています。これは相対的なものであり、パーセンテージではありません。slotsはエンチャントがアクティブになる場所を決定します。mainhand、offhand、armor、headなどです。これを省略すると、エンチャントは適用されません。supported_itemsはアイテムタグまたはリストを受け取ります。#minecraft:enchantable/*タグは、適切なグループに対してすでに存在します。
動作させる
effectsは動作をアタッチします。
"effects": {
"minecraft:post_attack": [{
"effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
"requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
}]
}
run_functionはエスケープハッチです。関数でできることはすべて、エンチャントでもできます。組み込みのエフェクトタイプは、ダメージ、ノックバック、耐久性、アイテムドロップ、属性を関数なしでカバーし、より安価です。
requirementsは任意の述語を受け取るため、ターゲットの種類、天候、またはランダムなチャンスに基づいてゲートを設定するのは1ブロックのJSONです。
名前を付ける
descriptionはテキストコンポーネントなので、ハードコードされた名前でも機能します。
"description": { "text": "Lightning Strike", "color": "gold" }
しかし、translateキーとリソースパック内の言語ファイルを組み合わせることで、他の言語のプレイヤーにも正しく表示されます。このサイトがMojang自身の翻訳からゲーム用語を採用しているのと同じ理由です。
入手可能にする
3つの方法があり、通常は複数の方法を組み合わせます。
- エンチャントテーブル —
weightとコスト曲線が設定されると自動的に利用可能になります。 - ルートテーブル — あなたのエンチャントがリストされている
enchant_randomly、またはコストで競合させる場合はenchant_with_levels。 - 村人が取引をする — 取引アイテムにあなたのエンチャントが付いたエンチャントの本。
#minecraft:in_enchanting_tableに追加することで、テーブルがそれを提供できるようになります。このタグは忘れがちで、存在はするものの決して表示されないエンチャントができてしまいます。
タグとスロットを設定して、エンチャントJSONと対応する防具のトリムをカスタムエンチャント&トリムビルダーで作成しましょう。