我的世界自定义装备药水BUFF效果的NBT写法
记录一下我的世界自定义装备药水BUFF的NBT代码写法,方便以后查询,个人版本是JAVA1.19和1.20

先说结论:通过给装备自定义Tags,然后循环命令方块找到对应tags循环effect给药水效果即可,有一些小细节需要注意

首先贴一下各种药水对应的英文:
伤害吸收–minecraft:absorption 数字ID:22
不祥之兆–minecraft:bad_omen 数字ID:31
失明–minecraft:blindness 数字ID:15
潮涌能量–minecraft:conduit_power 数字ID:29
海豚的恩惠–minecraft:dolphins_grace 数字ID:30
防火–minecraft:fire_resistance 数字ID:12
发光–minecraft:glowing 数字ID:24
急迫–minecraft:haste 数字ID:3
生命提升–minecraft:health_boost 数字ID:21
村庄英雄–minecraft:hero_of_the_village 数字ID:32
饥饿–minecraft:hunger 数字ID:17
瞬间伤害–minecraft:instant_damage 数字ID:7
瞬间治疗–minecraft:instant_health 数字ID:6
隐身–minecraft:invisibility 数字ID:14
跳跃提升–minecraft:jump_boost 数字ID:8
漂浮–minecraft:levitation 数字ID:25
幸运–minecraft:luck 数字ID:26
挖掘疲劳–minecraft:mining_fatigue 数字ID:4
反胃–minecraft:nausea 数字ID:9
夜视–minecraft:night_vision 数字ID:16
中毒–minecraft:poison 数字ID:19
生命恢复–minecraft:regeneration 数字ID:10
抗性提升–minecraft:resistance 数字ID:11
饱和–minecraft:saturation 数字ID:23
缓降–minecraft:slow_falling 数字ID:28
缓慢–minecraft:slowness 数字ID:2
速度–minecraft:speed 数字ID:1
力量–minecraft:strength 数字ID:5
霉运–minecraft:unluck 数字ID:27
水下呼吸–minecraft:water_breathing 数字ID:13
凋零–minecraft:wither 数字ID:20
虚弱–minecraft:weakness 数字ID:18
黑暗-minecraft:darkness 数字ID:33

这里普通的装备属性和附魔nbt就不再赘述,就比如改变装备的附魔属性,改变装备的最大生命值还有盔甲值等,本文只涉及装备的药水效果。
首先是装备的定义,nbt代码如下:
{Count:1,
id:"minecraft:stick",
tag:{
Damage:0,
Enchantments:[{id:"minecraft:knockback",lvl:5}],
display:{
Name:"{\"text\":\"无敌木棍\",\"color\":\"dark_red\",\"italic\":false,\"bold\":true}",
Lore:["{\"text\":\"在主手时获得抗性提升V\",\"italic\":false,\"bold\":false,\"color\":\"red\"}"],
},
Tags:["test"]
}
}
定义了一根木棍,名字和Lore修饰可以随便改,带击退附魔,这里获得药水BUFF的关键在于
Tags:["test"],用于标签绑定,盔甲等同理,必须是独一无二的tags用于绑定。
接下来放置一个循环命令方块,如果是主手持道具,参考代码如下:
/effect give @a[nbt={SelectedItem:{tag:{Tags:["test"]}}}] minecraft:resistance 2 4
自行替换药水效果即可,当道具在主手时就会生效
如果是穿在身上才生效的装备,装备示例如下:
{
Count:1b,id:"minecraft:diamond_helmet",
tag:{
Damage:0,Unbreakable:true,
Enchantments:[{id:"minecraft:protection",lvl:10}],
display:{
Lore:["{\"text\":\"限定头盔\",\"italic\":false,\"bold\":false,\"color\":\"gold\"}",
"{\"text\":\"穿上获得力量提升X\",\"italic\":false,\"bold\":false,\"color\":\"dark_purple\"}"],
Name:"{\"text\":\"定制头盔\",\"italic\":false,\"color\":\"light_purple\",\"bold\":true}"},
Tags:["Rhead"],
AttributeModifiers:[{Operation:0,Amount:12,UUID:[I;1,251,3,4],Slot:head,AttributeName:"generic.armor"},
{Operation:0,Amount:5,UUID:[I;2,2,3127,4],Slot:head,AttributeName:"generic.armor_toughness"},
{Operation:0,Amount:0.5,UUID:[I;1111,251,3,4],Slot:head,AttributeName:"generic.knockback_resistance"},
{Operation:0,Amount:20,UUID:[I;3,2,3128,4],Slot:head,AttributeName:"generic.max_health"}]
}
}
命令方块参考代码如下:
/effect give @a[nbt={Inventory:[{Slot:103b,id:"minecraft:diamond_helmet",tag:{Tags:["Rhead"]}},],}] minecraft:strength 3 9
以下是其他部位的装备参考:
/effect give @a[nbt={Inventory:[{Slot:102b,id:"minecraft:diamond_chestplate",tag:{Tags:["Rchest"]}},],}] minecraft:resistance 3 2
/effect give @a[nbt={Inventory:[{Slot:101b,id:"minecraft:diamond_leggings",tag:{Tags:["Rlegs"]}},],}] minecraft:absorption 3 9
/effect give @a[nbt={Inventory:[{Slot:100b,id:"minecraft:diamond_boots",tag:{Tags:["Rfeet"]}},],}] minecraft:regeneration 3 4
其中Slot对应装备位置,不能错误,103对应头部,102对应胸部等等,id需要改成装备的英文,然后更改Tags为自定义装备的Tags即可,后面的药水效果等级和持续时间自己替换。