From f91afb297515f7a69523548c2444e771250c8562 Mon Sep 17 00:00:00 2001 From: IThundxr Date: Mon, 3 Jul 2023 10:10:44 -0400 Subject: [PATCH] Avoid NPE during navigation write (#4975) - Guard for unexpected null entries in train navigation during serialisation --- .../create/content/trains/entity/Navigation.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java b/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java index 0bca29673..2e42c6675 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java @@ -735,6 +735,20 @@ public class Navigation { CompoundTag tag = new CompoundTag(); if (destination == null) return tag; + + // Remove null values in train navigation fixing a rare crash that could occur + List> toRemove = new ArrayList<>(); + for (Couple couple : currentPath) { + if (couple == null || couple.getFirst() == null || couple.getSecond() == null) + toRemove.add(couple); + } + if (toRemove.size() > 0) { + Create.LOGGER.error("Found null values in path of train with name: "+train.name.getString()+", id: "+train.id.toString()); + } + for (Couple brokenCouple : toRemove) { + currentPath.remove(brokenCouple); + } + tag.putUUID("Destination", destination.id); tag.putDouble("DistanceToDestination", distanceToDestination); tag.putDouble("DistanceStartedAt", distanceStartedAt);