1、指令:/give@pminecraft:potion1121
指令最后的一行数字121是独特的药水信息。每个药水的物品ID都是一样,所以要用信息才能分辨出是哪个药水。大家可以在MC里按F3+h,这样会开启MC的所有物品ID。如果鼠标移到药水上,就会显示药水的ID和信息:
2、显示格式是:#(物品ID)/(物品信息)。
小伙伴们如果懂了如何用/give刷出一瓶特定药水后,就可以开始用NBT,刷出自定义药水属性。指令:/give@pminecraft:potion1121
{CustomPotionEffects:[{Id:1,Amplifier:999999,Duration:999999999}]}
这就是自定义药水属性的NBT:CustomPotionEffects。打入这个NBT意味着对指令方块说,刷出的药水有自定义属性。NBT解释:
3、CustomPotionEffects:要自定义药水属性的话必须写。告诉指令方块需要有自定义属性。
Id:药水属性ID,比如Id:1就是速度属性。
Amplifier:药水属性等级。想多高就写多高。
Duration:药水属性持续时间,同样想多高就写多高,调到999999999的话就差不多无限时间了。
上图是用指令方块扔出一个带有所有危害效果的药水,生存必死无疑。
OK,进入教程。首先是如何刷出一个普通的无任何属性的药水。用的/summon做的。指令:
/summon ThrownPotion ~ ~5 ~
***代码
/summon指令我就不多说了,比较基础。大家只要记住已扔药水的ID,ThrownPotion就可以了。之后教大家如何加入普通的属性,不是自定义属性。指令:
/summon ThrownPotion ~ ~1 ~
{Potion:{id:373,Damage:128,Count:1}}
***代码
当大家把这条指令打入指令方块并且激活后,会刷出一个扔出的瞬间伤害药水。讲解下NBT:
Potion:药水属性NBT。要刷出已扔出自定义药水一定要用这个NBT。
id:药水的ID。后面必须打373。
Damage:药水的信息。这个用来让指令方块分辨是哪种药水。(不懂这行的话点这里,本人自定义药水的帖子。里面讲解的很清楚)。
Count:刷出药水的数量。默认是1。
因为是自定义扔出药水,所以格式和自定义药水十分的像。现在大家看如何加入自定义药水属性。指令:
/summon ThrownPotion ~ ~1 ~
{Potion:{id:373,Damage:128,Count:1,tag:
{CustomPotionEffects:[{Id:20,Amplifier:999999,Duration:9999999,Ambient:1},
{Id:9,Amplifier:999999,Duration:9999999,Ambient:1},
{Id:7,Amplifier:999999,Duration:3,Ambient:1},
{Id:17,Amplifier:999999,Duration:9999999,Ambient:1},
{Id:18,Amplifier:999999,Duration:9999999,Ambient:1},
{Id:19,Amplifier:999999,Duration:9999999,Ambient:1},
{Id:15,Amplifier:999999,Duration:9999999,Ambient:1}]}},
Motion:[1.0,1.0,0.0]}
***代码
也就是自定义药水属性的格式。这条指令唯一要讲的地方是Motion和Ambient。
Ambient是控制药水属性的可见度的,就是药水属性旁边发出的颗粒。最好用在隐身效果上面,这样可以让一个生物100%隐身,因为去除了药水的隐身效果颗粒。Ambient设置成1后就是隐藏药水颗粒。默认是0。
Motion是一个控制轨道的NBT,也是控制药水扔出去时候的抛物线。Motion不光是药水,还可以控制TNT,掉落沙什么。格式是:Motion:[(X偏移),(Y偏移),(Z偏移)]。上面指令的意思是让药水扔出时按照一个抛物线轨道行走,轨道是X偏移=1.0,Y偏移=1.0。如果XYZ偏移都是1.0的话那会斜方向的发射。注意的是,偏移不能改太大,否则会飞到地图外面去。
***代码:scoreboard?objectives?setdisplay?sidebar?system
***代码:give?@a?minecraft:iron_sword?1?1000?{display:{Name:"Poisoned?Bone",Lore:["Come?from?an?old","C***e?Spider"]}}
***代码:/scoreboard?players?set?@a?system?1?{SelectedItemSlot:,Inventory:[{Slot:b,id:"minecraft:iron_sword",Damage:1000s,tag:{display:{Name:"Poisoned?Bone",Lore:["Come?from?an?old","C***e?Spider"]}}}]}
***代码,后接或非门接下列命令,scoreboard?players?set?@a?system?0
***代码,另起一组命令方块,用高频脉冲激活下面的指令,后接比较器输出接后续的一组指令。testfor?@a[score_usesword_min=1,score_system_min=1]
***代码,后面接比较器输出,一旦输出之后,立即执行核心部分的指令。scoreboard?players?set?@e[type=!Player]?chosen?1
***代码,scoreboard?players?set?@e[type=!Player]?chosen?0?{HurtTime:0s}
系统结束。
/give @p minecraft:potion 1 121
{CustomPotionEffects:[{Id:1,Amplifier:999999,Duration:999999999}]}
这就是自定义药水属性的NBT:CustomPotionEffects。打入这个NBT就是告诉指令方块,刷出的药水有自定义属性。NBT解释:
CustomPotionEffects:要自定义药水属性的话必须写。告诉指令方块需要有自定义属性。
Id:药水属性ID,比如Id:1就是速度属性。帖子下面会讲解所有的药水ID。
Amplifier:药水属性等级。这个自己填,想多高就多高。
Duration:药水属性持续时间,调到999999999的话就差不多无限时间了。
之后是教大家如何让一瓶药水有多个属性。这个也很简单,大部分都是***粘贴,每个属性用逗号隔开就好了,指令:
/give @p minecraft:potion 1 121
{CustomPotionEffects:[{Id:1,Amplifier:999999,Duration:999999999},
{Id:5,Amplifier:9999999,Duration:999999999},
{Id:8,Amplifier:9999999,Duration:999999999}]}
大家看到,格式和之前的一模一样,只是多了几个ID而已。这条指令就不多说了,重点就是多个属性用逗号隔开,而且括号也要全部划清,否则指令方块会出错。大家分解完这条指令后,就会发现这条指令将会给玩家一个拥有速度,力量和跳跃加强的药水,属性全部9999999级,持续永久。当然,写的是9999999级,但药水最高只可以打到127级,再高加不上去。
药水属性和ID:
1 - 速度 (Speed)
2 - 减速 (Slowness)
3 - 挖掘效率 (Haste)
4 - 挖掘减效 (Mining Fatigue)
5 - 力量 (Strength)
6 - 瞬间加血 (Instant Health)
7 - 瞬间伤害 (Instant Damage)
8 - 跳跃加强 (Jump Boost)
9 - 反胃 (Nausea)
10 - 生命恢复 (Regeneration)
11 - 防御加强 (Resistance)
12 - 火焰抗性 (Fire Resistance)
13 - 水下呼吸 (Water Breathing)
14 - *** (Invisibility)
15 - 盲目 (Blindness)
16 - 夜视 (Night Vision)
17 -饥饿 (Hunger)
18 - 虚弱 (Weakness)
19 - 中毒 (Poison)
20 - 凋零 (Wither)
21 - 最大生命加强 (Health Boost)
22 - 附加生命 (Absorption)
23 - 防饥饿 (Saturation)
最大生命加强是给玩家加大最大生命,可以自然恢复。附加生命是给玩家多加的生命,用完后无法恢复。