1.はじめに
長いJSON例は見やすいように折りたたんでいます。
間違ってる場合もあります。
この記事に書かれていない書き方もできる場合があります。
エンチャントは実験的機能なので自己責任でお願いします。
Java版 Minecraft 1.21 時点の情報です
2.初期設定
何も指定していないJSON例
{
"description": {
"text": "エンチャント表示名"
},
"supported_items": [],
"weight": 1,
"max_level": 1,
"min_cost": {
"base": 0,
"per_level_above_first": 0
},
"max_cost": {
"base": 0,
"per_level_above_first": 0
},
"anvil_cost": 0,
"slots": []
}
{
"description": "",
"supported_items": "#minecraft:enchantable/durability",
"weight": 1,
"max_level": 1,
"min_cost": {
"base": 0,
"per_level_above_first": 0
},
"max_cost": {
"base": 0,
"per_level_above_first": 0
},
"anvil_cost": 0,
"slots": [
"any"
],
"effects": {}
}
不必要なものを省き、最小値を指定したJSONです。
ファイルはdata/<namespace>/enchantment/<name>.json
に保存します。
/enchant @s <namespace>:<name>
で追加されたか確認できます。
エンチャントのデータパック更新はreload
コマンドではできません
ワールドを入り直して更新してください
3.エンチャントの基本フィールドの説明
description
エンチャント名に表示させるテキスト
JSONテキスト形式で指定できる
exclusive_set(オプション)
共存できないエンチャント
エンチャントのリスト、単一、タグで指定
supported_items
エンチャント可能なアイテム
アイテムのリスト、単一、タグで指定
primary_items(オプション)
エンチャントテーブルや取引アイテムの装備に表示されるアイテム
アイテムのリスト、単一、タグで指定
supported_items
に含まれているアイテムのみ指定可能
weight
エンチャントの出現頻度(低いほどレア)
1~1024の整数を指定
max_level
エンチャントの最大レベル
1~255の整数を指定
min_cost・max_cost
エンチャントテーブル内のコスト(砥石で得られる経験値量にも影響)
30より大きい値になるとエンチャントテーブルに表示されない
-
base
レベル1のエンチャントの基本コスト
0以上の整数を指定 -
per_level_above_first
1レベルごとの追加コスト
0以上の整数を指定
エンチャントテーブルに表示させる場合in_enchanting_table
タグを設定する必要がありますが、
デフォルトでエンチャントを付与出来ないアイテム(ブロックや食べ物など)では表示されません。
anvil_cost
金床のエンチャントに必要なレベル
0以上の整数を指定
slot
エンチャントが機能するスロットを指定
指定スロット | 効果が発動する位置 |
---|---|
any | 下記全てのスロット |
hand | メインハンドとオフハンド |
mainhand | メインハンド |
offhand | オフハンド |
armor | 下記全ての装備スロット |
head | 頭 |
chest | 胴 |
legs | 脚 |
feet | 足 |
body | 馬や狼などの鎧スロット |
effects(オプション)
色んなエンチャント効果を設定できる
後述で記載
4.値の指定
後述で記載しているeffect
内などで、値を指定するときに使用する記述の解説です。
以降レベルごとの値で指定と書かれている場合、
定数以外にも、下記のオブジェクトで指定が可能です。
linear
線形的なレベルごとの値を指定
計算式: base + per_level_above_first * (level - 1)
-
base:
レベル1の時の値 -
per_level_above_first:
レベルが1上がるごとの追加の値
clamped
最小値と最大値の間で変化させる
value ≦ min
の時はmin
の値、
value ≧ max
の時はmax
の値、
min < value < max
の時はvalue
の値が設定される
-
value:
レベルごとの値で指定 -
min:
出力の最小値 -
max:
出力の最大値
fraction
分数の値で変化させる
計算式:numerator / denominator
-
numerator:
分子の値をレベルごとの値で指定 -
denominator:
分母の値をレベルごとの値で指定
levels_squared
レベルを二乗した値のレベルで計算するレベルごとの値
計算式:level ^ 2 + added
-
added:
レベルを二乗した値に加算される値
lookup
レベル別に値をそれぞれ指定
また、指定された値より大きい場合に適用されるレベルごとの値
-
values:
適用したいレベルでの値をリストで指定 -
fallback:
values
で指定したサイズよりレベルが大きい場合に適用される値
この見出しのJSON例を表示
linear:
例では、エンチャントレベルが1の時の値は5
で、レベルが上がるごとに2
ずつ増加する
{
"type": "minecraft:linear",
"base": 5,
"per_level_above_first": 2
}
clamped:
例では、値は0
~16
の間で変化し、レベル1の場合は3
で、レベルが上がるごとに5
ずつ増加する
4レベル以上は16
のまま変化しない
{
"type": "minecraft:clamped",
"max": 16,
"min": 0,
"value": {
"type": "minecraft:linear",
"base": 3,
"per_level_above_first": 5
}
}
fraction:
例では、レベル1の時の値は1/2
で、レベルが上がるごとに1/3
、1/4
…と0に近づくように変化する
{
"type": "minecraft:fraction",
"denominator": {
"type": "minecraft:linear",
"base": 2,
"per_level_above_first": 1
},
"numerator": 1
}
levels_squared:
例では、レベル1の時の値は2
で、レベルが上がるごとに5
、10
、17
...と増加する
{
"type": "minecraft:levels_squared",
"added": 1.0
}
lookup:
例では、レベル1の時は3、レベル2の時は5
、レベル3の時は11
となり、
レベル4以降はすべて19
になる
{
"type": "minecraft:lookup",
"values": [
3,
5,
11
],
"fallback": 19
}
5.effectの効果値に対する処理タイプ
add
処理後の値にvalue
の値を加算する
-
value:
加算する値をレベルごとの値で指定
負の値も可能
all_of
リストに含まれる複数の効果値の処理タイプを処理する
-
effects:
実行する効果値の処理タイプのリスト
multiply
処理後の値にfactor
の値を乗算する
-
factor:
乗算する値をレベルごとの値で指定
remove_binomial
確率で成功すると処理後の値から1減らす処理をする
-
chance:
1減らす確率をレベルごとの値で指定
1に近いほど成功する
set
処理後の値をvalueの値で上書きする処理をする
-
value:
上書きする値をレベルごとの値で指定
6.effectのエンティティやブロックに対する処理タイプ
後述で記載しているeffect
内などで、エンティティやブロックに対して効果を示す記述の解説します。
エフェクトコンポーネントによっては指定できないものもあります。
また、実行位置などもエフェクトコンポーネントによって異なります。
JSON例には後述で記載されている内容を含みます。
all_of
下記の処理タイプのエフェクトをリストで指定し、複数実行する
requirements
で条件を指定する際、複数の処理タイプに適用できる
-
effects:
実行するエフェクトのリスト
例では、オフハンドにタマゴを持っている時のみ、確率で音を鳴らしニワトリをスポーンさせる
{
"minecraft:tick": [
{
"effect": {
"type": "minecraft:all_of",
"effects": [
{
"type": "minecraft:play_sound",
"sound": "minecraft:entity.chicken.egg",
"volume": 1,
"pitch": 1
},
{
"type": "minecraft:summon_entity",
"entity": "minecraft:chicken"
}
]
},
"requirements": [
{
"condition": "minecraft:random_chance",
"chance": 0.005
},
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"slots": {
"weapon.offhand": {
"items": "minecraft:egg"
}
}
}
}
]
}
]
}
apply_mob_effect
エンティティに対してMOBエフェクトを適用する
複数指定した場合はランダムで選択される
-
to_apply:
適用するMOBエフェクト
エフェクトIDのリスト、単一ID、タグで指定 -
min_duration・max_duration:
効果の最小および最大持続時間(秒)を表すレベルごとの値 -
min_amplifier・max_amplifier:
効果の最小および最大の強さを表すレベルごとの値
例では、攻撃したエンティティに0.3秒だけ高レベルの浮遊を付与し、上空に飛ばす
{
"minecraft:post_attack": [
{
"affected": "victim",
"enchanted": "attacker",
"effect": {
"type": "minecraft:apply_mob_effect",
"to_apply": "minecraft:levitation",
"min_duration": 0.3,
"max_duration": 0.3,
"min_amplifier": 100,
"max_amplifier": 100
}
}
]
}
damage_entity
影響を受けるエンティティにダメージを与える
ダメージの量は、指定された範囲内でランダムに決まる
-
damage_type:
与えるダメージタイプIDを指定 -
min_damage・max_damage:
ダメージの最小値と最大値をレベルごとの値で指定
例では、必ず21のダメージを与える
{
"minecraft:post_attack": [
{
"enchanted": "attacker",
"affected": "victim",
"effect": {
"type": "minecraft:damage_entity",
"damage_type": "minecraft:player_attack",
"min_damage": 21,
"max_damage": 21
}
}
]
}
damage_item
エンチャントされたアイテムの耐久値を増減させる
-
amount:
アイテムの耐久値の消耗する値をレベルごとの値で指定
デフォルトで耐久値のないアイテムには機能しません
クリエイティブ状態では機能しません
例では、水中にいるとき耐久値の消耗する値をマイナスにすることで耐久値を回復させている
{
"minecraft:tick": [
{
"effect": {
"type": "minecraft:damage_item",
"amount": -1
},
"requirements": {
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"location": {
"fluid": {
"fluids": "#minecraft:water"
}
}
}
}
}
]
}
explode
爆発を発生させる
-
attribute_to_user(オプション):
エンチャント所有者が爆発ダメージを受けるかどうかをブール値で指定
デフォルトはfalse
でダメージを受ける -
damage_type(オプション):
爆発のダメージタイプを指定
省略した場合、ダメージが発生しない -
immune_blocks(オプション):
爆発によって破壊されないブロックを設定する
ブロックのリスト、単一、タグで指定 -
knockback_multiplier(オプション):
爆発によるノックバック乗数をレベルごとの値で指定
省略した場合、デフォルトの爆発ノックバックを適用 -
offset(オプション):
爆発が発生する位置のオフセットを指定(デフォルト:[0, 0, 0]
) -
radius:
爆発の半径をレベルごとの値で指定 -
create_fire(オプション):
爆発によって火が発生するかをブール値で指定
デフォルトはfalse
で火が発生しない -
block_interaction:
爆発がブロックとどのように相互作用するかを設定する-
none
効果なし -
block
ブロックが爆発を引き起こしたかのように動作する
ゲームルールのblockExplosionDropDecay
の影響を受ける -
mob
MOBが爆発を引き起こしたかのように動作する
ゲームルールのmobExplosionDropDecay
、mobGriefing
?の影響を受ける -
tnt
TNTが爆発を引き起こしたかのように動作する
ゲームルールのtntExplosionDropDecay
の影響を受ける -
trigger
レッドストーンで起動するブロックをトリガーする(ウィンドチャージと同じ)
-
-
small_particle:
爆発時に発生する小さなパーティクルを指定 -
large_particle:
爆発時に発生する大きなパーティクルを指定(※バグあり) -
sound:
爆発時に再生されるサウンドを指定
{
"minecraft:hit_block": [
{
"effect": {
"type": "minecraft:explode",
"attribute_to_user": true,
"damage_type": "minecraft:explosion",
"radius": {
"type": "minecraft:linear",
"base": 1,
"per_level_above_first": 2
},
"block_interaction": "mob",
"small_particle": {
"type": "minecraft:heart"
},
"large_particle": {
"type": "minecraft:explosion"
},
"sound": "minecraft:entity.generic.explode"
},
"requirements": {
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"type": "#minecraft:arrows"
}
}
}
]
}
ignite
影響を受けたエンティティを指定された秒数だけ発火させる
-
duration:
発火させる時間(秒)をレベルごとの値で指定
例では、ダメージを与えたエンティティに5秒間延焼させる
{
"minecraft:post_attack": [
{
"affected": "victim",
"effect": {
"type": "minecraft:ignite",
"duration": 5
}
}
]
}
play_sound
サウンドを再生する
-
sound:
再生するサウンドID -
volume:
サウンドの音量を指定
0.00001
~10.0
の浮動小数点で指定 -
pitch:
音の高さを指定
0.00001
~2.0
の浮動小数点で指定
{
"minecraft:projectile_spawned": [
{
"effect": {
"type": "minecraft:play_sound",
"sound": "minecraft:entity.firework_rocket.blast",
"volume": 1,
"pitch": 1
}
}
]
}
replace_block
ワールド内のブロックを置き換える
-
block_state:
設置するブロック状態を指定するブロック状態プロバイダーの指定 -
offset(オプション):
イベントの位置からブロックを配置する位置の指定(デフォルト:[0, 0, 0]
) -
predicate(オプション):
ブロックを置き換えるかどうかを決定する条件(worldgenのブロックプレディケートを使用)
デフォルトは全てのブロックを置き換える -
trigger_game_event(オプション):
ブロックが置き換えられたときにトリガーされるゲームイベントIDを指定
例では、左クリックしたブロックや、矢などが刺さったブロックをダイヤモンドブロックに置き換える
{
"minecraft:hit_block": [
{
"effect": {
"type": "minecraft:replace_block",
"block_state": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:diamond_block"
}
}
}
}
]
}
replace_disk
ワールド内の円柱状にブロックを置き換える
-
block_state:
設置するブロック状態を指定するブロック状態プロバイダーの指定 -
radius:
円柱の半径をレベルごとの値で指定 -
height:
円柱の高さをレベルごとの値で指定 -
offset(オプション):
イベントの位置から配置する円柱の中心までの位置の指定(デフォルト:[0, 0, 0]
) -
predicate(オプション):
ブロックを置き換えるかどうかを決定する条件(worldgenのブロックプレディケートを使用)
デフォルトは全てのブロックを置き換える -
trigger_game_event(オプション):
ブロックが置き換えられたときにトリガーされるゲームイベントIDを指定
例では、自分のブロック位置が変わるたびに半径3マス内の草ブロックを菌糸に置き換える
{
"location_changed": [
{
"effect": {
"type": "minecraft:replace_disk",
"block_state": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:mycelium"
}
},
"height": 1,
"offset": [
0,
-1,
0
],
"predicate": {
"type": "minecraft:matching_blocks",
"blocks": "minecraft:grass_block"
},
"radius": 3
}
}
]
}
run_function
コマンド関数を実行する
実行者はeffect
の実行エンティティで、実行位置はイベントの位置になる
-
function:
実行するコマンド関数の名前空間ID
{
"minecraft:projectile_spawned": [
{
"effect": {
"type": "minecraft:run_function",
"function": "namespace:custom"
}
}
]
}
kill @s
set_block_properties
-
properties:
変更するブロック状態と値を指定 -
offset(オプション):
イベントの位置から配置する円柱の中心までの位置の指定(デフォルト:[0, 0, 0]
) -
trigger_game_event(オプション):
ブロックが置き換えられたときにトリガーされるゲームイベントIDを指定
例では、殴ったブロックのwaterlogged
をtrue
にする
{
"minecraft:hit_block": [
{
"effect": {
"type": "minecraft:set_block_properties",
"properties": {
"waterlogged": "true"
}
}
}
]
}
spawn_particles
影響を受けるエンティティを基準にパーティクルを表示する
-
particle:
表示させるパーティクルタイプを指定 -
horizontal_position・vertical_position:
-
type
位置の選択タイプの指定-
entity_position
エンティティの位置にパーティクルを表示 -
in_bounding_box
エンティティの当たり判定ボックス内のランダムな位置にパーティクルを表示
-
-
offset(オプション)
パーティクル表示位置のオフセットを指定(デフォルト:0
) -
scale(オプション)
type
がin_bounding_box
の場合のみ使用可能(デフォルト:1
)
-
type
-
horizontal_velocity・vertical_velocity:
-
base(オプション)
指定された軸に沿った基本速度を指定(デフォルト:0
) -
movement_scale(オプション)
エンティティの移動速度に応じて、指定された軸に沿った速度に追加(デフォルト:0
)
例えば、1
の場合はエンティティの速度が生成されたパーティクルに追加される
-
base(オプション)
-
speed(オプション):
パーティクルの基本スピードを指定(デフォルト:0
)
指定しない場合、上記で設定しても速度は0になる
horizontal_velocity
、vertical_velocity
の値に乗算される(※要検証)
例では、自信のヒットボックス内に毎ティックtrial_spawner_detection
パーティクルを表示
{
"minecraft:tick": [
{
"effect": {
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:trial_spawner_detection"
},
"horizontal_position": {
"type": "in_bounding_box"
},
"vertical_position": {
"type": "in_bounding_box"
},
"horizontal_velocity": {},
"vertical_velocity": {}
}
}
]
}
summon_entity
指定したエンティティを召喚する
複数指定した場合はランダムで選択される
-
entity:
エンティティタイプIDのリスト、単一ID、タグで指定 -
join_team:
召喚されたエンティティがエンチャントされたアイテムの所有者のチームに参加するかどうかを指定するブール値
例では、ヒットしたブロックにブタかウシをランダムに召喚する
{
"minecraft:hit_block": [
{
"effect": {
"type": "minecraft:summon_entity",
"entity": [
"minecraft:cow",
"minecraft:pig"
]
}
}
]
}
7.effectsの設定(エフェクトコンポーネント)
effects
は基本的にリストで指定します。
effects
リスト内にeffect
オブジェクトを複数指定可能で、後述のid
を指定します。
値は定数または、レベル毎の値で指定できます。
さらにeffect
にはオプションでrequirements
を指定する事でエンティティや位置などpredicate
と同じような条件をつけることができます。
armor_effectiveness
攻撃対象の防御力の効果量を設定する
0から1の範囲で設定され、0の場合は防御力を完全に無視する
デフォルトの値は1で、防御力が全て反映される状態
例では、-0.5を加算することで、結果の値が0.5になり対象の防御力を半分にしている
{
"armor_effectiveness": [
{
"effect": {
"type": "add",
"value": -0.5
}
}
]
}
attributes
属性効果を設定する
-
attribute:
変更する属性のID -
id:
属性修飾子の名前(なんでもOK) -
operation:
属性修飾子の補正形式add_value
add_multiplied_base
add_multiplied_total
-
amount:
補正値をレベルごとの値で指定
例では、エンチャントレベル毎にスケールを2倍、3倍、4倍...とする
{
"minecraft:attributes": [
{
"amount": {
"type": "minecraft:liner",
"base": 2,
"per_level_above_first": 1
},
"attribute": "minecraft:generic.scale",
"id": "custom_enchantment.scale",
"operation": "add_multiplied_base"
}
]
}
ammo_use
発射武器の弾を消費するときに使用される弾の数を変更
弓の発射時やクロスボウの装填時に処理される
例では、弾を消費時に2つ消費する
{
"minecraft:ammo_use": [
{
"effect": {
"type": "minecraft:add",
"value": 1
}
}
]
}
block_experience
ブロックを採掘したときにドロップする経験値の量に対する効果
例では、鉱石を掘った時の経験値量が一万倍になる
{
"minecraft:block_experience": [
{
"effect": {
"type": "minecraft:multiply",
"factor": 10000
}
}
]
}
crossbow_charging_sounds
クロスボウの装填時の音を変更する
複数指定可能で、再生される音はエンチャントレベルによって決まる
レベル1の時、リストの一番最初の音を再生する
レベルと指定個数が合わない場合、それ以降のレベルはリスト最後の音が設定される
-
start:
装填開始時に鳴る音を指定 -
mid:
装填中に鳴る音を指定 -
end:
装填完了時に鳴る音を指定
例では、
レベル1のときの装填開始時は村人の声、装填中は村人がダメージを受けた音、装填完了時は村人のデス音
レベル2のときは無音
レベル3のときの装填開始時はクリーパーの着火音、装填中はクリーパーのダメージ音、装填完了時は爆発音がなる
レベル4以降もレベル3と同じ音を再生する
{
"minecraft:crossbow_charging_sounds": [
{
"end": "minecraft:entity.villager.death",
"mid": "minecraft:entity.villager.hurt",
"start": "minecraft:entity.villager.ambient"
},
{},
{
"end": "minecraft:entity.generic.explode",
"mid": "minecraft:entity.creeper.hurt",
"start": "minecraft:entity.creeper.primed"
}
]
}
crossbow_charge_time
クロスボウの装填時間を変更する
0以下の場合右クリック単押しで装填される
例では、レベル1の時の装填時間が通常の半分、レベルが1上がるごとに装填時間全体の1/4ずつ短縮され、レベル3以上で即装填できる
{
"minecraft:crossbow_charge_time": {
"type": "minecraft:add",
"value": {
"type": "minecraft:linear",
"base": -0.5,
"per_level_above_first": -0.25
}
}
}
damage
攻撃によるダメージ量を変更する
値が大きいほど攻撃力が増加する
例では、ダメージを10増加させる
{
"minecraft:damage": [
{
"effect": {
"type": "minecraft:add",
"value": 10
}
}
]
}
damage_immunity
受けるダメージを無効にする
条件で無効にするダメージの種類を指定できる
例では、全てのダメージを無効にしている(空腹ダメージやkill
コマンド等も無効になる)
{
"minecraft:damage_immunity": [
{
"effect": {}
}
]
}
damage_protection
受けるダメージの軽減割合に対する効果
値*4%
ダメージを軽減する
例では、値が6.25
なので6.25*4
で25%
軽減する
{
"minecraft:damage_protection": [
{
"effect": {
"type": "minecraft:set",
"value": 6.25
}
}
]
}
equipment_drops
キルした時に装備がドロップされる確率に対する効果
値は0~1で変化する
1以上の時確定で装備をドロップする
元々のArmorDropChances
が0f
の場合はドロップしない
enchanted:
効果を適用するためのエンチャントアイテムを持つエンティティの指定
-
attacker
攻撃する側が持ってるときに効果を発揮 -
victim
攻撃される側が持ってるときに効果を発揮(※バグあり)
例では、このエンチャントアイテムを持ってキルした時に50%の確率で装備をドロップする
{
"minecraft:equipment_drops": [
{
"effect": {
"type": "minecraft:set",
"value": 0.5
},
"enchanted": "attacker"
}
]
}
fishing_luck_bonus
釣りをした時の宝を釣る確率に対する効果
値は1あたり宝の釣れる確率が2.1%上昇する
約5で、ゴミが釣れなくなり、宝の釣れる確率が15.5%、魚の釣れる確率が84.5%になる
例では、値が6なので確実に魚か宝が釣れる
{
"effects": {
"minecraft:fishing_luck_bonus": [
{
"effect": {
"type": "minecraft:set",
"value": 6
}
}
]
}
}
fishing_time_reduction
魚が釣れるかどうかの抽選する時間に対する効果
値が低いほど遅くなり、高いほど早く釣れる
デフォルトの釣りの再抽選待ち時間が30秒のため、値が30を超えると釣れなくなる
{
"minecraft:fishing_time_reduction": [
{
"effect": {
"type": "minecraft:set",
"value": 29.9
}
}
]
}
hit_block
ブロックに当たるエンティティや、そのブロックに対する効果
クリエイティブ状態では機能しません
例では、左クリックしたブロックまたは、発射体が刺さったブロックをダイヤモンドブロックに変更する
{
"minecraft:hit_block": [
{
"effect": {
"type": "minecraft:replace_block",
"block_state": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:diamond_block"
}
}
}
}
]
}
item_damage
アイテムの耐久値の消耗量に対する効果
0以上の値で変化し、ツール使用時に耐久値の減る量を指定する
例では、値が0なのでアイテムの耐久値が減らない
{
"minecraft:item_damage": [
{
"effect": {
"type": "minecraft:set",
"value": 0
}
}
]
}
knockback
攻撃時のノックバック量に対する効果
0以上の値で変化する
0の場合、デフォルトのノックバック量になる
{
"minecraft:knockback": [
{
"effect": {
"type": "minecraft:add",
"value": 50
}
}
]
}
location_changed
エンティティが新しいブロックの位置に移動したときに適応する効果
例では、自身のいるブロックの位置が変わるたびに周りの草ブロックを菌糸に置き換える
{
"location_changed": [
{
"effect": {
"type": "minecraft:replace_disk",
"block_state": {
"type": "minecraft:simple_state_provider",
"state": {
"Name": "minecraft:mycelium"
}
},
"height": 1,
"offset": [
0,
-1,
0
],
"predicate": {
"type": "minecraft:all_of",
"predicates": [
{
"type": "minecraft:matching_blocks",
"blocks": "minecraft:grass_block"
}
]
},
"radius": 3
}
}
]
}
mob_experience
MOBを倒したときのドロップする経験値量に対する効果
0以上の値で変化する
例では、値が0なので経験値を落とさなくなる
{
"minecraft:mob_experience": [
{
"effect": {
"type": "minecraft:set",
"value": 0
}
}
]
}
post_attack
攻撃がターゲットにダメージを与えた後に適用される効果
-
enchanted:
効果を適用するときのエンチャントの所有者を指定-
attacker
攻撃を行ったエンティティ -
damaging_entity
実際にダメージを与えたエンティティ(矢やトライデントなど) -
victim
攻撃を受けたエンティティ
-
-
affected:
効果を誰に適用するかを指定
enchanted
と同じ -
effect:
エンティティに対する処理タイプを指定
例では、ダメージを与えたエンティティに浮遊を付与して上空に飛ばす
{
"minecraft:post_attack": [
{
"enchanted": "attacker",
"affected": "victim",
"effect": {
"type": "minecraft:apply_mob_effect",
"to_apply": "minecraft:levitation",
"min_duration": 0.3,
"max_duration": 0.3,
"min_amplifier": 100,
"max_amplifier": 100
}
}
]
}
prevent_armor_change
防具スロットから外せなくなる効果
束縛の呪いのエンチャントに使用されているもの
{
"minecraft:prevent_armor_change": {}
}
prevent_equipment_drop
死亡時にアイテムがドロップせず消滅する効果
消滅の呪いのエンチャントに使用されているもの
{
"prevent_equipment_drop": {}
}
projectile_count
発射武器使用時に発射される発射物の数に対する効果
弓とクロスボウのみに有効
値には、発射される数を指定
例では、発射される数が10本になる
{
"minecraft:projectile_count": [
{
"effect": {
"type": "minecraft:set",
"value": 10
}
}
]
}
projectile_piercing
発射物が貫通する数に対する効果
弓とクロスボウのみに有効
値には、貫通する回数を指定
例では、値が2なので2体のエンティティを貫通する
{
"minecraft:projectile_piercing": [
{
"effect": {
"type": "minecraft:set",
"value": 2
}
}
]
}
projectile_spawned
発射体が召喚された時に適応する効果
弓とクロスボウのみに有効
例では、矢を放った時に自身の周りにパーティクルを表示する
{
"minecraft:": [
{
"effect": {
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:gust_emitter_large"
},
"horizontal_position": {
"type": "in_bounding_box",
"scale": 1
},
"horizontal_velocity": {
"base": 0
},
"speed": 0,
"vertical_position": {
"type": "in_bounding_box",
"offset": 1
},
"vertical_velocity": {
"base": 0
}
}
}
]
}
projectile_spread
複数の弾を発射する時の弾の拡散を設定
照準線から一番外の矢までの最大角をレベルごとの値で指定
基本的に、projectile_count
を使用したエンチャントと合わせて使用する
例えば、5本の矢を20°で設定した場合、全体の拡散角は40°になり、矢と矢の間の角は10°になる
例では、10本の矢を全方位に放つ(間隔は36°)
{
"minecraft:projectile_count": [
{
"effect": {
"type": "minecraft:set",
"value": 10
}
}
],
"minecraft:projectile_spread": [
{
"effect": {
"type": "minecraft:set",
"value": 162
}
}
]
}
repair_with_xp
プレイヤーが経験値を拾ったときにアイテムを修理する効果を設定
別の処理タイプを含む場合でも、修繕効果を適応する
例では、取得した経験値の100倍で耐久値を回復する
{
"minecraft:repair_with_xp": [
{
"effect": {
"type": "minecraft:multiply",
"factor": 100
}
}
]
}
smash_damage_per_fallen_block
メイスの落下攻撃による1ブロック当たりのダメージ量を設定
ダメージの増加量をレベルごとの値で指定
ダメージ計算式は落下距離によって変動する
例では、落下攻撃力のダメージ係数が100増加する
{
"minecraft:smash_damage_per_fallen_block": [
{
"effect": {
"type": "minecraft:add",
"value": 100
}
}
]
}
tick
毎ティック適用される効果
エンティティやブロックに対する処理タイプを指定
{
"minecraft:tick": [
{
"effect": {
"type": "minecraft:spawn_particles",
"horizontal_position": {
"type": "in_bounding_box",
"scale": 1
},
"horizontal_velocity": {
"Base": 0
},
"particle": {
"type": "minecraft:trial_spawner_detection"
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 1
},
"vertical_velocity": {
"base": 0
}
}
}
]
}
trident_return_acceleration
トライデントを所有者の元へ返す時の加速値の設定
{
"minecraft:trident_return_acceleration": [
{
"effect": {
"type": "minecraft:set",
"value": 10
}
}
]
}
trident_spin_attack_strength
トライデントのスピンアタックの強さを設定
値は0以上で設定し、高いほど攻撃力が高くなる
値が0の場合は、スピンアタックにはならず投げ攻撃になる
{
"minecraft:trident_spin_attack_strength": {
"type": "minecraft:set",
"value": 10
}
}
trident_sound
トライデントの攻撃音を変更する
複数指定可能で、再生される音はエンチャントレベルによって決まる
レベル1の時、リストの一番最初の音を再生する
レベルと指定個数が合わない場合、それ以降のレベルはリスト最後の音が設定される
例では、
レベル1のときは村人のデス音を再生
レベル2のときは爆発音を再生
レベル3以降もレベル2と同じ爆発音を再生する
{
"minecraft:trident_sound": [
"minecraft:entity.villager.death",
"minecraft:entity.generic.explode"
]
}
8.エンチャント関係のタグ
-
エンチャントの機能や表示に関係するタグ
minecraft:tags/enchantment
ファイル内で変更できる
タグ名 | 説明 |
---|---|
curse | 呪いのエンチャントになる ツールチップに赤く表示され、削除できなくなる |
prevents_bee_spawns_when_mining | ミツバチの巣や養蜂箱をミツバチが入ったまま採掘できるようになる |
prevents_decorated_pot_shattering | 飾り壺を破壊しないようになる |
prevents_ice_melting | 氷を採掘した際に水にならなくなる |
prevents_infested_spawns | 虫食いブロックを採掘できるようになり、シルバーフィッシュがスポーンしなくなる |
smelts_loot | 倒した敵のドロップを精錬できる(例:火属性で牛を倒すと生の牛肉がステーキになる) |
tooltip_order | ツールチップにエンチャントがリストされる順序を決定する |
tradeable | 村人の取引でエンチャント本として表示される |
on_traded_equipment | 村人の取引でこのタグのエンチャントを付与した装備が表示される |
double_trade_price | 取引時にエメラルドの価格が2倍になる |
in_enchanting_table | エンチャントテーブルに表示される |
on_mob_spawn_equipment | ランダムでスポーンした装備付きMOBにこのタグのエンチャントが付与される |
on_random_loot | ワールド内の宝箱の戦利品に付与される |
-
デフォルトエンチャントの
exclusive_set
で使用されているタグ
minecraft:tags/enchantment/exclusive_set
ファイル内で変更できる
タグ名 | 説明 |
---|---|
armor | 防具に共存できないエンチャント |
boots | ブーツに共存できないエンチャント |
bow | 弓に共存できないエンチャント |
crossbow | クロスボウに共存できないエンチャント |
damage | 共存できないダメージ増加エンチャント |
mining | 共存できない採掘関連のエンチャント |
riptide | 激流と共存できないエンチャント |
9.エンチャントID
ツールチップオーダー順です
エンチャントID | エンチャント名 |
---|---|
binding_curse | 束縛の呪い |
vanishing_curse | 消滅の呪い |
riptide | 激流 |
channeling | 召雷 |
wind_burst | ウィンドバースト |
frost_walker | 氷渡り |
sharpness | ダメージ増加 |
smite | アンデッド特効 |
bane_of_arthropods | 虫特効 |
impaling | 水生特効 |
power | 射撃ダメージ増加 |
density | 重撃 |
breach | 防具貫通 |
piercing | 貫通 |
sweeping_edge | 範囲ダメージ増加 |
multishot | 拡散 |
fire_aspect | 火属性 |
flame | フレイム |
knockback | ノックバック |
punch | パンチ |
protection | ダメージ軽減 |
blast_protection | 爆発耐性 |
fire_protection | 火炎耐性 |
projectile_protection | 飛び道具耐性 |
feather_falling | 落下耐性 |
fortune | 幸運 |
looting | ドロップ増加 |
silk_touch | シルクタッチ |
luck_of_the_sea | 宝釣り |
efficiency | 効率強化 |
quick_charge | 高速装填 |
lure | 入れ食い |
respiration | 水中呼吸 |
aqua_affinity | 水中採掘 |
soul_speed | ソウルスピード |
swift_sneak | スニーク速度上昇 |
depth_strider | 水中歩行 |
thorns | 棘の鎧 |
loyalty | 忠誠 |
unbreaking | 耐久力 |
infinity | 無限 |
mending | 修繕 |
10.翻訳のやり方
翻訳キーを指定した場合、リソースパックの言語ファイルを追加することで翻訳できます。
assets/minecraft/lang/ja_jp.json
のようにファイルを追加します。
description
のtranslate
でenchantment.minecraft.custom
と指定した場合は以下のようになります。
{
"enchantment.minecraft.custom":"エンチャント表示名"
}
11.実際の使用例
カスタムエンチャントを使って他にどのようなことができるのか、
自分がX(旧Twitter)に上げたものをいくつか紹介します。
装備した状態で移動すると、自身の周りのブロックを石系ブロックで置き換え道を生成する
predicate
で置き換えるブロックの条件を指定し、weighted_state_provider
でランダムにブロックを設置できる(worldgenと同じ書き方で指定できる)
JSONの記述
{
"description": "道路生成エンチャント",
"supported_items": "minecraft:diamond_boots",
"weight": 1,
"max_level": 1,
"min_cost": {
"base": 0,
"per_level_above_first": 0
},
"max_cost": {
"base": 0,
"per_level_above_first": 0
},
"anvil_cost": 0,
"slots": [
"feet"
],
"effects": {
"minecraft:location_changed": [
{
"effect": {
"type": "minecraft:replace_disk",
"block_state": {
"type": "minecraft:weighted_state_provider",
"entries": [
{
"weight": 14,
"data": {
"Name": "minecraft:stone_bricks"
}
},
{
"weight": 7,
"data": {
"Name": "minecraft:mossy_stone_bricks"
}
},
{
"weight": 4,
"data": {
"Name": "minecraft:mossy_cobblestone"
}
}
]
},
"predicate": {
"type": "minecraft:all_of",
"predicates": [
{
"type": "minecraft:has_sturdy_face",
"direction": "up"
},
{
"type": "minecraft:matching_block_tag",
"offset": [
0,
1,
0
],
"tag": "minecraft:air"
}
]
},
"radius": 3,
"height": -2,
"offset": [
0,
1,
0
]
}
}
]
}
}
カスタムエンチャントで歩いたところが石系のブロックに置き換わるの作った!
— ひろばお🙃コマンド (@Hirobao1) June 10, 2024
道をブラシツールみたいに描ける💪
location_changedのreplace_diskでworldgenの書き方できるの優秀~#マイクラ #コマンド #エンチャント pic.twitter.com/3sOIBJMYo2
矢を10本発射し、ブロックに当たると花火を召喚するコマンドを実行する
他のエンティティに当たると大爆発してしまう
JSONの記述
{
"description": {
"text": "連鎖花火エンチャント"
},
"supported_items": "#minecraft:enchantable/durability",
"weight": 1,
"max_level": 1,
"min_cost": {
"base": 0,
"per_level_above_first": 0
},
"max_cost": {
"base": 0,
"per_level_above_first": 0
},
"anvil_cost": 0,
"slots": [
"hand"
],
"effects": {
"minecraft:post_attack": [
{
"enchanted": "attacker",
"affected": "victim",
"effect": {
"type": "minecraft:run_function",
"function": "custom:summon_fireworks"
}
},
{
"enchanted": "attacker",
"affected": "damaging_entity",
"effect": {
"type": "minecraft:explode",
"damage_type": "minecraft:player_explosion",
"radius": 10,
"offset": [
0,
1,
0
],
"block_interaction": "tnt",
"small_particle": {
"type": "minecraft:explosion_emitter"
},
"large_particle": {
"type": "minecraft:explosion_emitter"
},
"sound": "minecraft:entity.generic.explode",
"knockback_multiplier": 0,
"attribute_to_user": true,
"create_fire": false
}
}
],
"minecraft:projectile_count": [
{
"effect": {
"type": "minecraft:set",
"value": 10
}
}
],
"minecraft:projectile_spread": [
{
"effect": {
"type": "minecraft:set",
"value": 40
}
}
],
"minecraft:hit_block": [
{
"effect": {
"type": "minecraft:run_function",
"function": "custom:summon_fireworks"
}
}
]
}
}
summon firework_rocket ~ ~1 ~ {LifeTime: 20,FireworksItem: {components: {"minecraft:fireworks": {explosions: [{shape: "large_ball", colors: [I; 16699434]}, {shape: "large_ball", has_trail: 1b, colors: [I; 16775336]}]}}, count: 1, id: "minecraft:firework_rocket"}}
kill @s
いっぱい花火が出てくるエンチャント!
— ひろばお🙃コマンド (@Hirobao1) June 10, 2024
MOBに当たると大爆発するよ
爆発は何と合わせても楽しいw#マイクラ #コマンド #エンチャント pic.twitter.com/nGRDqp9dB7
この剣でエンティティを攻撃すると自身に回復能力Ⅲが付与されるが、昼間に日光の当たる場所で使うと自身が炎上する
時間や日光に当たっているかどうかは、requirements
で検知できる
JSONの記述
{
"description": {
"text": "吸血鬼のエンチャント",
"color": "light_purple",
"bold": true
},
"supported_items": "minecraft:diamond_sword",
"weight": 1,
"max_level": 1,
"min_cost": {
"base": 0,
"per_level_above_first": 0
},
"max_cost": {
"base": 0,
"per_level_above_first": 0
},
"anvil_cost": 0,
"slots": [
"mainhand"
],
"effects":{
"minecraft:post_attack": [
{
"enchanted": "attacker",
"affected": "attacker",
"effect": {
"type": "minecraft:apply_mob_effect",
"to_apply": "minecraft:regeneration",
"min_duration": 3,
"max_duration": 3,
"min_amplifier": 2,
"max_amplifier": 2
}
}
],
"minecraft:tick": [
{
"effect": {
"type": "minecraft:ignite",
"duration": 1
},
"requirements": {
"condition": "minecraft:all_of",
"terms": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"location": {
"can_see_sky": true
}
}
},
{
"condition": "minecraft:time_check",
"value": {
"min": 0,
"max": 12000
},
"period": 24000
}
]
}
}
]
}
}
吸血鬼になるエンチャントできた!
— ひろばお🙃コマンド (@Hirobao1) June 10, 2024
攻撃すると3秒間の回復エフェクトが付く!
日光に当たると炎上しちゃうから注意#マイクラ #コマンド #エンチャント pic.twitter.com/YAH95GqHB4
人狼やその他コマンドのゲームなどによく使われる一撃でキルできる斧
攻撃した時に大きな音を鳴らし、大ダメージを与える
一度使用すると壊れる
damage_entity
によって武器のクールダウンを無視して固定で大ダメージを与えられる
JSONの記述
{
"description": {
"text": "一撃のエンチャント",
"color": "red",
"bold": true
},
"supported_items": "minecraft:stone_axe",
"weight": 1,
"max_level": 1,
"min_cost": {
"base": 0,
"per_level_above_first": 0
},
"max_cost": {
"base": 0,
"per_level_above_first": 0
},
"anvil_cost": 0,
"slots": [
"hand"
],
"effects": {
"minecraft:post_attack": [
{
"enchanted": "attacker",
"affected": "victim",
"effect": {
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:sonic_boom"
},
"horizontal_position": {
"type": "entity_position"
},
"vertical_position": {
"type": "entity_position",
"offset": 1
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
}
},
{
"enchanted": "attacker",
"affected": "victim",
"effect": {
"type": "minecraft:play_sound",
"sound": "minecraft:item.totem.use",
"volume": 2,
"pitch": 2
}
},
{
"enchanted": "attacker",
"affected": "victim",
"effect": {
"type": "minecraft:damage_entity",
"damage_type": "minecraft:generic_kill",
"min_damage": 1000000,
"max_damage": 1000000
}
},
{
"enchanted": "attacker",
"affected": "attacker",
"effect": {
"type": "minecraft:damage_item",
"amount": 1000000
}
}
]
}
}
人狼とかでよく使われる一撃の斧をカスタムエンチャントで再現してみた!
— ひろばお🙃コマンド (@Hirobao1) June 10, 2024
damage_entityで武器のクールダウン中でも固定で大ダメージ与えれるの良い~#マイクラ #コマンド #エンチャント pic.twitter.com/4oq8tCGwnL
天候が雷雨の時に装備していると、体の周りに電気のパーティクルをまとい、確率で自身に雷が落ちる
effect
をall_of
でまとめることで、requirements
の確率の成功時に同時に適用できる
パーティクルの個数を指定できないため、JSONが少し長くなっている
JSONの記述
{
"description": {
"text": "誘雷エンチャント",
"color": "red"
},
"supported_items": "minecraft:iron_chestplate",
"weight": 1,
"max_level": 1,
"min_cost": {
"base": 0,
"per_level_above_first": 0
},
"max_cost": {
"base": 0,
"per_level_above_first": 0
},
"anvil_cost": 0,
"slots": [
"chest"
],
"effects": {
"minecraft:tick": [
{
"effect": {
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:electric_spark"
},
"horizontal_position": {
"type": "in_bounding_box",
"scale": 1.4
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.5,
"offset": 0.1
},
"horizontal_velocity": {},
"vertical_velocity": {
"base": 0.4
},
"speed": 1
},
"requirements": [
{
"condition": "minecraft:random_chance",
"chance": 0.6
},
{
"condition": "minecraft:weather_check",
"thundering": true
},
{
"condition": "minecraft:location_check",
"predicate": {
"can_see_sky": true
}
}
]
},
{
"effect": {
"type": "minecraft:all_of",
"effects": [
{
"type": "minecraft:summon_entity",
"entity": "minecraft:lightning_bolt"
},
{
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:end_rod"
},
"horizontal_position": {
"type": "in_bounding_box",
"offset": 0.1,
"scale": 3
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.3
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
},
{
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:end_rod"
},
"horizontal_position": {
"type": "in_bounding_box",
"offset": 0.1,
"scale": 3
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.3
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
},
{
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:end_rod"
},
"horizontal_position": {
"type": "in_bounding_box",
"offset": 0.1,
"scale": 3
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.3
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
},
{
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:end_rod"
},
"horizontal_position": {
"type": "in_bounding_box",
"offset": 0.1,
"scale": 3
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.3
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
},
{
"type": "minecraft:spawn_particles",
"particle": {
"type": "minecraft:end_rod"
},
"horizontal_position": {
"type": "in_bounding_box",
"offset": 0.1,
"scale": 3
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.3
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
},
{
"type": "minecraft:spawn_particles",
"particle": {
"type": "instant_effect"
},
"horizontal_position": {
"type": "in_bounding_box",
"offset": 0.1,
"scale": 3
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.3
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
},
{
"type": "minecraft:spawn_particles",
"particle": {
"type": "instant_effect"
},
"horizontal_position": {
"type": "in_bounding_box",
"offset": 0.1,
"scale": 3
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.3
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
},
{
"type": "minecraft:spawn_particles",
"particle": {
"type": "instant_effect"
},
"horizontal_position": {
"type": "in_bounding_box",
"offset": 0.1,
"scale": 3
},
"vertical_position": {
"type": "in_bounding_box",
"scale": 0.3
},
"horizontal_velocity": {},
"vertical_velocity": {},
"speed": 0
}
]
},
"requirements": [
{
"condition": "minecraft:random_chance",
"chance": 0.003
},
{
"condition": "minecraft:weather_check",
"thundering": true
},
{
"condition": "minecraft:location_check",
"predicate": {
"can_see_sky": true
}
}
]
}
]
}
}
雷雨の時に装備すると稀に雷が落ちてくるエンチャントできたー
— ひろばお🙃コマンド (@Hirobao1) June 10, 2024
パーティクルが出てるときは注意
屋根があるとこに逃げれば安全!#マイクラ #コマンド #エンチャント pic.twitter.com/pYEwBx5E7v