Player p = (Player) e.getDamager();if(p.getItemInUse().getType() == Material.WOODEN_SWORD)
{
e.setDamage(100);
}这样写会报错且无法执行e.setDamage(100);
{
e.setDamage(100);
}这样写会报错且无法执行e.setDamage(100);
那你把报错信息拿出来啊
把getItemInUse这个方法换掉,改成获取玩家主手上的物品堆。并且再加上非空判断。
萌新路过
William_Shi 发表于 2022-2-1 14:57
把getItemInUse这个方法换掉,改成获取玩家主手上的物品堆。并且再加上非空判断。 ...
可以给个大概的样例看下吗
我觉得应该是getItemInUse获取到了null,然后报错提示你不能对null使用getType方法
Neige 发表于 2022-2-1 19:03
我觉得应该是getItemInUse获取到了null,然后报错提示你不能对null使用getType方法 ...
但当他玩家用木剑攻击时getItemInUse肯定不是null啊
我改成getItemInHand没问题了
我改成getItemInHand没问题了
tom666111111 发表于 2022-2-1 19:59
我改成getItemInHand没问题了
是的。仔细读文档。 InUse 获取的是类似于 处于右键格挡中的盾牌,拉开过程中的弓,喫到一半的食物。木剑似乎不属于这样的“使用”的范畴,因此获取到的是null。
方法应该有注释么。进去看下说明,看方法名,inUse 就是真在使用中、估计是得在动作中时才能获取,inHand的就是拿在手上的。只看名字,应该用后者……以上是我猜的。实际以api说明为准……手头只有一个手机没法帮你查🤔
BH5HYR 发表于 2022-2-1 21:58
方法应该有注释么。进去看下说明,看方法名,inUse 就是真在使用中、估计是得在动作中时才能获取,inHand的 ...
另外提一句,多多使用 防御性编程的习惯,要默认变量啊,入参啊都是非法的数据,基本的判🈳️语句应该加上