From 864ce6befcbe4cb952f3444ae6b9309d7c30628a Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Wed, 29 Mar 2023 22:13:58 -0500 Subject: [PATCH] NullPointerException fix when an NPC misses a projectile. --- .../noppes/npcs/entity/EntityProjectile.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/noppes/npcs/entity/EntityProjectile.java b/src/main/java/noppes/npcs/entity/EntityProjectile.java index ffb64ca1d..bd50a1aaa 100644 --- a/src/main/java/noppes/npcs/entity/EntityProjectile.java +++ b/src/main/java/noppes/npcs/entity/EntityProjectile.java @@ -1,5 +1,6 @@ package noppes.npcs.entity; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -445,22 +446,22 @@ public class EntityProjectile extends EntityThrowable { @Override protected void onImpact(MovingObjectPosition movingobjectposition) { - ProjectileEvent.ImpactEvent event; - if(movingobjectposition.entityHit != null) { - IPos pos = NpcAPI.Instance().getIPos(movingobjectposition.entityHit.posX,movingobjectposition.entityHit.posY,movingobjectposition.entityHit.posZ); - event = new ProjectileEvent.ImpactEvent((IProjectile) NpcAPI.Instance().getIEntity(this), 0, movingobjectposition.entityHit); - } - else { - IPos pos = NpcAPI.Instance().getIPos(movingobjectposition.blockX,movingobjectposition.blockY,movingobjectposition.blockZ); - IWorld world = NpcAPI.Instance().getIWorld(this.worldObj); - event = new ProjectileEvent.ImpactEvent((IProjectile) NpcAPI.Instance().getIEntity(this), 1, NpcAPI.Instance().getIBlock(world, pos)); - } - if (movingobjectposition.entityHit != null) { - if (callback != null && callbackItem != null && movingobjectposition.entityHit instanceof EntityLivingBase && callback.onImpact(this, (EntityLivingBase) movingobjectposition.entityHit, callbackItem)) { - return; + if (!this.worldObj.isRemote) { + ProjectileEvent.ImpactEvent event; + if (movingobjectposition.entityHit != null) { + event = new ProjectileEvent.ImpactEvent((IProjectile) NpcAPI.Instance().getIEntity(this), 0, movingobjectposition.entityHit); + } else { + IPos pos = NpcAPI.Instance().getIPos(movingobjectposition.blockX, movingobjectposition.blockY, movingobjectposition.blockZ); + IWorld world = NpcAPI.Instance().getIWorld(this.worldObj); + event = new ProjectileEvent.ImpactEvent((IProjectile) NpcAPI.Instance().getIEntity(this), 1, NpcAPI.Instance().getIBlock(world, pos)); } + if (movingobjectposition.entityHit != null) { + if (callback != null && callbackItem != null && movingobjectposition.entityHit instanceof EntityLivingBase && callback.onImpact(this, (EntityLivingBase) movingobjectposition.entityHit, callbackItem)) { + return; + } + } + EventHooks.onProjectileImpact(this, event); } - EventHooks.onProjectileImpact(this, event); if (movingobjectposition.entityHit != null) {