Fixed error when updating a projectile entity's owner

This commit is contained in:
Sollace 2023-09-03 19:39:47 +01:00
parent 4ea0979f80
commit 9b651da09f
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB

View file

@ -69,7 +69,7 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Ma
private final EntityPhysics<MagicProjectileEntity> physics = new EntityPhysics<>(this, GRAVITY, false); private final EntityPhysics<MagicProjectileEntity> physics = new EntityPhysics<>(this, GRAVITY, false);
private final EntityReference<Entity> homingTarget = new EntityReference<>(); private final EntityReference<Entity> homingTarget = new EntityReference<>();
private final EntityReference<LivingEntity> owner = new EntityReference<>(); private EntityReference<LivingEntity> owner;
public MagicProjectileEntity(EntityType<MagicProjectileEntity> type, World world) { public MagicProjectileEntity(EntityType<MagicProjectileEntity> type, World world) {
super(type, world); super(type, world);
@ -115,7 +115,7 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Ma
public void setOwner(@Nullable Entity entity) { public void setOwner(@Nullable Entity entity) {
super.setOwner(entity); super.setOwner(entity);
if (entity instanceof LivingEntity l) { if (entity instanceof LivingEntity l) {
this.owner.set(l); getMasterReference().set(l);
} }
} }
@ -128,6 +128,9 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Ma
@Override @Override
public EntityReference<LivingEntity> getMasterReference() { public EntityReference<LivingEntity> getMasterReference() {
if (owner == null) {
owner = new EntityReference<>();
}
return owner; return owner;
} }
@ -256,7 +259,7 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Ma
super.readCustomDataFromNbt(compound); super.readCustomDataFromNbt(compound);
physics.fromNBT(compound); physics.fromNBT(compound);
homingTarget.fromNBT(compound.getCompound("homingTarget")); homingTarget.fromNBT(compound.getCompound("homingTarget"));
owner.fromNBT(compound.getCompound("owner")); getMasterReference().fromNBT(compound.getCompound("owner"));
if (compound.contains("effect")) { if (compound.contains("effect")) {
getSpellSlot().put(Spell.readNbt(compound.getCompound("effect"))); getSpellSlot().put(Spell.readNbt(compound.getCompound("effect")));
} }
@ -267,7 +270,7 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Ma
super.writeCustomDataToNbt(compound); super.writeCustomDataToNbt(compound);
physics.toNBT(compound); physics.toNBT(compound);
compound.put("homingTarget", homingTarget.toNBT()); compound.put("homingTarget", homingTarget.toNBT());
compound.put("owner", owner.toNBT()); compound.put("owner", getMasterReference().toNBT());
getSpellSlot().get(true).ifPresent(effect -> { getSpellSlot().get(true).ifPresent(effect -> {
compound.put("effect", Spell.writeNbt(effect)); compound.put("effect", Spell.writeNbt(effect));
}); });
@ -325,7 +328,7 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Ma
try { try {
Optional.ofNullable(predicate.apply(getItem().getItem())).ifPresent(consumer); Optional.ofNullable(predicate.apply(getItem().getItem())).ifPresent(consumer);
} catch (Throwable t) { } catch (Throwable t) {
Unicopia.LOGGER.error("Error whilst ticking spell on entity {}", owner, t); Unicopia.LOGGER.error("Error whilst ticking spell on entity {}", getMasterReference(), t);
} }
} }