MC新人新
Java版中/damege指令的一种用法如下:
  1. damage <target> <amount> [<damageType>] [by <entity>] [from <cause>]
复制代码
根据中文及英文Wiki的说法,其中<target>是被伤害的目标;<entity>指伤害的直接来源,会影响击退方向;<cause>指则伤害的实际来源(如射箭的骷髅)。


但我经过测试,发现了问题。


简单来说就是,我执行了这个命令,<target>指定为一个生物(不妨称其为A),<entity>指定为生物B,<cause>指定为我自己(玩家)。
按照Wiki的说法,实际效果应该是A受到来自B方向的击退,但实际效果却是来自我自己。
再次执行了这个命令,A被杀死,掉出了经验,说明伤害的实际来源确实是玩家(我自己)。
在1.19.4,1.20,1.20.1测试均为如此(这个命令在1.19.4才被加入)。


不知道是bug还是我不会用,期待大佬解疑!

MC小沅
应该是个bug吧……我测试的时候<cause>部分的实体才是攻击后的决定击退方向的实体,而entity貌似并没有实际作用……至少我没有测试出来

剩哲伪旺
刚刚帮你实测了一下子,
target指的是目标生物,这点没错。
amount指的是伤害点数,这点也没错。
damagetype指的是伤害类型,这点也没错。
但是,by后面<entity>应该跟着的是伤害目标的击打,意思就是说该实体受到的伤害具体是由谁击打的。
而from后面<cause>就是来自该伤害的总执行者。
可以理解为:A击打了一个实体B,但是这个实体却是被C所伤。
如果<cause>参数不存在,则默认from参数是继承至<entity>的。
倒数第二行这个不存在,这个是我猜的,因为我打开游戏实际测试了之后,如果后面<cause>没有接,则默认<entity>会取代cause。

MC新人新
剩哲伪旺 发表于 2023-7-20 11:27
刚刚帮你实测了一下子,
target指的是目标生物,这点没错。
amount指的是伤害点数,这点也没错。

感谢实测,这些内容我先前已知晓。
希望你可以给予我有效的建议

无敌三脚猫
不是bug,是特性
不过你可以先召唤一个已驯服的生物,比如狼,把玩家做为主人,把狼作为伤害来源,不写cause,这样生物A会收到来自狼方向的击退,并且死后掉落经验,可以让狼隐身固定在生物B的位置,看起来就是受到来自B方向的击退了

第一页 上一页 下一页 最后一页