《我的世界》里面对于伤害的评判其实并不严格,被伤害对象在指定时间内死亡,就算是在造成伤害的人身上。比如说,你把怪打下悬崖,虽然摔落伤害不是你造成的,但是由于你的最后一击和怪物摔死的时间差在伤害时效范围内,所以说怪物虽然是摔死的但是还是算在我们头上。
我的世界
可以说是出于编程的方便,一个攻击并没有带上信息。因此也就是说,一个怪物被攻击了,怪物的代码只知道是被某个玩家攻击了,而不知道被什么武器攻击的。
武器有没有sharpness?有没有knockback?有没有looting?这些代码都是无从而知的,因此为了要判断武器的属性,MC的代码做了一件很巧妙的事。在伤害造成的时候检查造成伤害玩家手里的武器,这个是很巧妙的办法,对于剑等的攻击来说,伤害造成的时候手里肯定就是造成伤害所用的剑。
所以说检查玩家手中的武器就可以知道所带的特殊附魔效果了,这样做,每次攻击代码不需要带上额外数据存入游戏中。但是考虑一下远程攻击的情况,如果说我射了一支箭,在箭击中怪物之前把手中的武器换成剑,会怎么样呢?
怪物收到伤害了,自然代码就会用所谓巧妙的办法检查玩家手中的武器,然后发现玩家手中的是剑,就按照剑的附魔等特殊效果进行处理,这个时候就是应该利用这个代码的漏洞。
如果你有一把lootingIII附魔的剑,先用弓射一个怪物,在箭击中怪物之前把手中的武器切换成剑,击中时,代码就会判断你手中的武器,就会认为伤害是被这把lootingIII的剑造成的,因此物品掉落就会有lootingIII的效果。尽管玩家根本没有用剑攻击怪物!
在这里我们也做相同的事情,利用可投掷的瞬时补血药水进行大范围攻击,在药水击中他们之前,利用键盘的1-9将武器切换成lootingIII的剑,击中之后,伤害就会认为是被这把剑造成的,因此所有30个猪人掉落都会有lootingIII的效果。尽管我根本没有使用剑,也不会消耗剑的耐久。
总结:
我先用弓射你一箭 然后在箭没射到你的时候换成剑 这样射到你身上的伤害就是剑的伤害。