第七十七章 damage-造成伤害
村民可以攻击吗?答案当然是否定的。就算村民发射的烟花火箭爆炸会有伤害,这也不是村民本身的攻击。
在Java版,如果你能精准地把握住时间,将一个弹射物(如箭)的UUID改成一个村民的UUID,确实有可能会使得村民“攻击”其他生物。那在基岩版呢?
Mojang虽然没有给我们操控NBT来修改UUID的方式,但却给了我们一条指令:/damage
/damage
作用:对指定实体造成伤害
存在版本:基岩版1.18.10-今
需要权限等级:基岩版-1
需要作弊:是
格式:
/damage <目标实体><伤害大小:非负整数>[伤害类型]
/damage <目标实体><伤害大小:非负整数><伤害类型> entity <伤害来源>
你可以指定『目标实体』和『伤害大小』参数,来简单的对指定实体造成伤害。如果还指定了『伤害类型』和『伤害来源』参数,就可以确定是谁对谁造成了伤害。比如下面的指令:
/damage @s 20 entity_attack entity @s
这将会使你自己对你自己造成20点的实体攻击类型伤害,然后你就会收到这么一条消息:
你自己的游戏名被 你自己的游戏名杀死了
我杀我自己?
虽然你可以不指定伤害类型来造成伤害,但这样子就会导致你死亡时,只会显示出如下信息:
xxxxxx 死了
所以我们最好指定伤害类型。那有哪些伤害类型呢?我会将截止1.19.10版本的伤害类型列表放到本章末尾。
我们还可以指定『伤害来源』,来指定到底是谁造成了伤害。比如在上面的例子中,我们就指定了伤害来源为自己,这样子就实现了『自己』对『自己』造成了伤害。
伤害来源这个参数有很多奇妙的用途,比如下面的指令:
/damage @e[tybr /e=iron_golem] 1 entity_attack entity @e[tybr /e=villager,c=1]
这将会使得距离执行地点最近的村民对所有铁傀儡造成1点的伤害,然后你就会看见......
『妈呀!铁傀儡杀村民啦!!!』
如你所见,伤害来源不仅仅可以使得死亡信息发生改变,还可以转嫁生物仇恨,使得铁傀儡亲手杀死了村民。
但伤害来源的用途不止这么简单。假设这里有一只猪,它静止在原地。
我们运行下面的指令对它造成伤害,仔细观察猪受到攻击的情况:
/damage @e[tybr /e=br /ig] 1 entity_attack
猪→ 红猪→ ε=ε=猪(跑)→猪
你会发现,猪仅仅受到了攻击,然后开始四处乱跑而已。让我们等一下它跑完,然后运行下面的指令再次造成伤害:/damage @e[tybr /e=br /ig] 1 entity_attack entity @s
猪→ ε=红猪(被击退)→ε=ε=猪(跑)→猪
你会发现,猪不仅仅受到了攻击,还向一个方向退了几步。
通过上面的实验,你会发现:指定『伤害来源』参数还可以使得攻击有一定的方向。那么这个方向是怎么计算出来的呢?
██████████民→██
██████████████
█████←猪███████
██████████████
我们来看看上述网格,箭头代表着实体的朝向。让我们尝试指定村民对猪造成伤害:
/damage @e[tybr /e=br /ig] 1 entity_attack entity @e[tybr /e=villager,c=1]
然后你就会发现猪被击退向了远离村民的方向:
██████████民→██
██████████████
██████████████
████←猪████████
这说明了什么?这说明了,指定『伤害来源』后,造成的攻击会具有方向,而这个方向和指定的攻击者向着被攻击者的方向是一致的。
但是需要注意,这个攻击方向的计算是2维的,并不是3维的。
什么意思呢?也就是说,攻击方向的计算不会考虑到两者的y坐标,仅仅会通过两者的xz坐标计算得出。所以你并不能通过召唤一个盔甲架,然后你站在上面,不断让盔甲架给你造成伤害使得你上天。你只会从天上被打下来。
那么这就是本章的全部内容了。
附表①:截止1.19.10版本所有伤害类型ID表
ID——死亡信息
anvil —— xxx 被坠落的铁砧压扁了
block_exbr /losion —— xxx 爆炸了
charging —— xxx 死了
contact —— xxx 被 xxx 杀死了
drowning —— xxx 淹死了
entity_attack —— xxx 被 xxx 杀死了
entity_exbr /losion —— xxx 被 xxx 炸死了(xxx 爆炸了)
fall —— xxx 落地过猛
falling_block —— xxx 死了
fire —— xxx 浴火焚身
fire_tick —— xxx 被烧死了
fireworks —— xxx 在一声巨响中阵亡了
fly_into_wall —— xxx 遭受了动态能量
freezing —— xxx 冻死了
lava —— xxx 试图在熔岩里游泳
lightning —— xxx 被闪电击中
magic —— xxx 被 xxx 使用的魔法杀死了(xxx 被魔法杀死了)
magma —— xxx 死了
none —— xxx 死了
override —— xxx 死了
br /iston —— xxx 死了
br /rojectile —— xxx 被 xxx 杀死了
stalactite —— xxx 被坠落的钟乳石刺穿了
stalagmite —— xxx 被钉在了石笋上
starve —— xxx 饿死了
suffocation —— xxx 在墙里窒息而亡(需要目标实体卡在方块里才能使用此伤害类型,否则无法造成伤害)
suicide —— xxx 死了
tembr /erature —— xxx 死了
thorns —— xxx 死了
void —— xxx 掉出了这个世界
wither —— xxx 凋谢了
(上述信息来自官方附加包文档+作者自己测试得出)
附表②:/damage历史
基岩版
1.18.10——加入了/damage