From b3d7108574ecbbd24d837aec1f03a09e07e62fb7 Mon Sep 17 00:00:00 2001 From: devbeni Date: Sun, 14 Dec 2025 11:50:31 +0100 Subject: [PATCH] Debug: Add detailed logging to ProcessBuildingHook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added step-by-step logging to identify where building load fails: - GetPlaceableByUniqueName result - Each initialization step - Exception details if any step fails 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- Main.cs | 72 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 25 deletions(-) diff --git a/Main.cs b/Main.cs index ab65b71..5b38bac 100644 --- a/Main.cs +++ b/Main.cs @@ -1394,38 +1394,60 @@ namespace KCM { if (KCClient.client.IsConnected) { + Main.helper.Log($"[ProcessBuilding] START - {structureData.uniqueName}"); - Building Building = GameState.inst.GetPlaceableByUniqueName(structureData.uniqueName); - bool flag = Building; - if (flag) + try { - Building building = UnityEngine.Object.Instantiate(Building); - building.transform.position = structureData.globalPosition; - building.Init(); - building.transform.SetParent(p.buildingContainer.transform, true); - structureData.Unpack(building); - p.AddBuilding(building); + Building Building = GameState.inst.GetPlaceableByUniqueName(structureData.uniqueName); + Main.helper.Log($"[ProcessBuilding] GetPlaceable: {(Building != null ? "OK" : "NULL")}"); - // Place building in world and setup pathing - World.inst.PlaceFromLoad(building); - structureData.UnpackStage2(building); - - Main.helper.Log($"Loading player id: {p.PlayerLandmassOwner.teamId}"); - Main.helper.Log($"loading building: {building.FriendlyName}"); - Main.helper.Log($" (teamid: {building.TeamID()})"); - Main.helper.Log(p.ToString()); - bool flag2 = building.GetComponent() != null && building.TeamID() == p.PlayerLandmassOwner.teamId; - Main.helper.Log("Set keep? " + flag2); - if (flag2) + if (Building) { - p.keep = building.GetComponent(); - Main.helper.Log(p.keep.ToString()); + Building building = UnityEngine.Object.Instantiate(Building); + Main.helper.Log($"[ProcessBuilding] Instantiated"); + + building.transform.position = structureData.globalPosition; + Main.helper.Log($"[ProcessBuilding] Position set: {structureData.globalPosition}"); + + building.Init(); + Main.helper.Log($"[ProcessBuilding] Init done"); + + building.transform.SetParent(p.buildingContainer.transform, true); + Main.helper.Log($"[ProcessBuilding] SetParent done"); + + structureData.Unpack(building); + Main.helper.Log($"[ProcessBuilding] Unpack done"); + + p.AddBuilding(building); + Main.helper.Log($"[ProcessBuilding] AddBuilding done"); + + World.inst.PlaceFromLoad(building); + Main.helper.Log($"[ProcessBuilding] PlaceFromLoad done"); + + structureData.UnpackStage2(building); + Main.helper.Log($"[ProcessBuilding] UnpackStage2 done"); + + bool isKeep = building.GetComponent() != null && building.TeamID() == p.PlayerLandmassOwner.teamId; + if (isKeep) + { + p.keep = building.GetComponent(); + Main.helper.Log($"[ProcessBuilding] Keep set"); + } + + __result = building; + Main.helper.Log($"[ProcessBuilding] SUCCESS - {structureData.uniqueName}"); + } + else + { + Main.helper.Log($"[ProcessBuilding] FAILED - {structureData.uniqueName} not found in GameState"); + __result = null; } - __result = building; } - else + catch (Exception e) { - Main.helper.Log(structureData.uniqueName + " failed to load correctly"); + Main.helper.Log($"[ProcessBuilding] EXCEPTION: {structureData.uniqueName}"); + Main.helper.Log($"[ProcessBuilding] Error: {e.Message}"); + Main.helper.Log($"[ProcessBuilding] Stack: {e.StackTrace}"); __result = null; }