From 86062cf712be8d60d656c399ba5473f8323fcd77 Mon Sep 17 00:00:00 2001 From: SlaveOfMagicbot Date: Mon, 12 Oct 2026 16:47:26 -0500 Subject: [PATCH] fix: null-safe upgradeDateTime conversion in BuildingManager.setUpgradeDateTime Placing a banestone (and other callers) pass null to clear a fresh building's upgrade timer, but the inline .atZone(...).toInstant() NPE'd on null. Convert only when non-null; the DB layer already handles null. --- src/engine/gameManager/BuildingManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/gameManager/BuildingManager.java b/src/engine/gameManager/BuildingManager.java index 271179a2..90c4cef3 100644 --- a/src/engine/gameManager/BuildingManager.java +++ b/src/engine/gameManager/BuildingManager.java @@ -25,6 +25,7 @@ import engine.objects.*; import engine.server.MBServerStatics; import org.pmw.tinylog.Logger; +import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.ArrayList; @@ -274,7 +275,8 @@ public enum BuildingManager { if (building == null) return; - if (!DbManager.BuildingQueries.updateBuildingUpgradeTime(upgradeDateTime.atZone(ZoneId.systemDefault()).toInstant(), building, rankCost)) { + Instant instant = (upgradeDateTime == null) ? null : upgradeDateTime.atZone(ZoneId.systemDefault()).toInstant(); + if (!DbManager.BuildingQueries.updateBuildingUpgradeTime(instant, building, rankCost)) { Logger.error("Failed to set upgradeTime for building " + building.getObjectUUID()); return; }