From d8cd79852b46f0c2dae1a5872e232841239c3d51 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:26:14 +0200 Subject: [PATCH] See you later elevator - Fixed elevator contraptions moving to y=0 when loading in #4830 --- .../content/contraptions/elevator/ElevatorColumn.java | 6 ++++++ .../content/contraptions/elevator/ElevatorContraption.java | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorColumn.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorColumn.java index 348c2f23e..90de78032 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorColumn.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorColumn.java @@ -33,6 +33,7 @@ public class ElevatorColumn { protected List contacts; protected int targetedYLevel; protected boolean isActive; + protected boolean targetAvailable; @Nullable public static ElevatorColumn get(LevelAccessor level, ColumnCoords coords) { @@ -49,6 +50,7 @@ public class ElevatorColumn { this.level = level; this.coords = coords; contacts = new ArrayList<>(); + targetAvailable = false; } public void markDirty() { @@ -114,6 +116,10 @@ public class ElevatorColumn { public void target(int yLevel) { targetedYLevel = yLevel; } + + public boolean isTargetAvailable() { + return targetAvailable; + } public int getTargetedYLevel() { return targetedYLevel; diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContraption.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContraption.java index d1c1df426..cbbbfaf20 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContraption.java @@ -87,7 +87,9 @@ public class ElevatorContraption extends PulleyContraption { ElevatorColumn column = ElevatorColumn.get(level, coords); if (column == null) return null; - int targetedYLevel = column.targetedYLevel; + if (!column.isTargetAvailable()) + return null; + int targetedYLevel = column.getTargetedYLevel(); if (isTargetUnreachable(targetedYLevel)) return null; return targetedYLevel;