tom666111111
Player p = (Player) e.getDamager();if(p.getItemInUse().getType() == Material.WOODEN_SWORD)
{
    e.setDamage(100);

}这样写会报错且无法执行e.setDamage(100);


vvvbbbcz
那你把报错信息拿出来啊

William_Shi
把getItemInUse这个方法换掉,改成获取玩家主手上的物品堆。并且再加上非空判断。

胖龙包籽
萌新路过

tom666111111
William_Shi 发表于 2022-2-1 14:57
把getItemInUse这个方法换掉,改成获取玩家主手上的物品堆。并且再加上非空判断。 ...

可以给个大概的样例看下吗

Neige
我觉得应该是getItemInUse获取到了null,然后报错提示你不能对null使用getType方法

tom666111111
Neige 发表于 2022-2-1 19:03
我觉得应该是getItemInUse获取到了null,然后报错提示你不能对null使用getType方法 ...

但当他玩家用木剑攻击时getItemInUse肯定不是null啊

tom666111111
我改成getItemInHand没问题了

tom666111111
我改成getItemInHand没问题了

William_Shi
tom666111111 发表于 2022-2-1 19:59
我改成getItemInHand没问题了

是的。仔细读文档。 InUse 获取的是类似于 处于右键格挡中的盾牌,拉开过程中的弓,喫到一半的食物。木剑似乎不属于这样的“使用”的范畴,因此获取到的是null。

BH5HYR
方法应该有注释么。进去看下说明,看方法名,inUse 就是真在使用中、估计是得在动作中时才能获取,inHand的就是拿在手上的。只看名字,应该用后者……以上是我猜的。实际以api说明为准……手头只有一个手机没法帮你查🤔

BH5HYR
BH5HYR 发表于 2022-2-1 21:58
方法应该有注释么。进去看下说明,看方法名,inUse 就是真在使用中、估计是得在动作中时才能获取,inHand的 ...

另外提一句,多多使用 防御性编程的习惯,要默认变量啊,入参啊都是非法的数据,基本的判🈳️语句应该加上

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