From 407c06746af990fa116e5be53ef0fd887e337ad0 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 3 Sep 2023 17:06:26 +0100 Subject: [PATCH] Fix crash when summoning crystal shards --- .../unicopia/entity/mob/CrystalShardsEntity.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/entity/mob/CrystalShardsEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/mob/CrystalShardsEntity.java index 966ad6e5..7f989046 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/mob/CrystalShardsEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/mob/CrystalShardsEntity.java @@ -5,6 +5,8 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; +import org.jetbrains.annotations.Nullable; + import com.minelittlepony.unicopia.USounds; import com.minelittlepony.unicopia.item.UItems; @@ -16,6 +18,7 @@ import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtElement; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; @@ -44,7 +47,6 @@ public class CrystalShardsEntity extends StationaryObjectEntity { CrystalShardsEntity shards = UEntities.CRYSTAL_SHARDS.create(world); shards.setPosition(pos.offset(face).toCenterPos()); shards.setAttachmentFace(face); - shards.setYaw(world.getRandom().nextFloat() * 360); shards.setCorrupt(true); world.spawnEntity(shards); @@ -82,6 +84,7 @@ public class CrystalShardsEntity extends StationaryObjectEntity { public CrystalShardsEntity(EntityType type, World world) { super(type, world); + setYaw(world.getRandom().nextFloat() * 360); } @Override @@ -135,8 +138,8 @@ public class CrystalShardsEntity extends StationaryObjectEntity { return Objects.requireNonNullElse(dataTracker.get(ATTACHMENT_FACE), Direction.UP); } - public void setAttachmentFace(Direction face) { - dataTracker.set(ATTACHMENT_FACE, face); + public void setAttachmentFace(@Nullable Direction face) { + dataTracker.set(ATTACHMENT_FACE, face == null ? Direction.UP : face); } @Override @@ -211,7 +214,9 @@ public class CrystalShardsEntity extends StationaryObjectEntity { @Override public void readCustomDataFromNbt(NbtCompound nbt) { super.readCustomDataFromNbt(nbt); - setYaw(nbt.getFloat("yaw")); + if (nbt.contains("yaw", NbtElement.FLOAT_TYPE)) { + setYaw(nbt.getFloat("yaw")); + } setGrowth(nbt.getInt("growth")); setAttachmentFace(Direction.byName(nbt.getString("face"))); setDecaying(nbt.getBoolean("decaying"));