Skip to content

Commit ca17bd0

Browse files
Nautilus 1.0.0-pre.36 (#591)
* fix: Fix node removals failing. (#587) * Fix node removals failing. 1. Correct patch name (cosmetic). 2. fix Removals being done only 1 time ever by making a copy of the list. 3. Properly log on removal failure. 4. fix the CopyCraftNode which was not working right making it so the removal was failing. * Fix double parent removal * Increase version to 1.0.0-pre.36 --------- Co-authored-by: Joshua Gibbs <[email protected]>
1 parent 70e3d91 commit ca17bd0

File tree

2 files changed

+11
-16
lines changed

2 files changed

+11
-16
lines changed

Nautilus/Patchers/CraftTreePatcher.cs

+10-15
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ internal static void Patch(Harmony harmony)
3333

3434
[HarmonyPostfix]
3535
[HarmonyPatch(typeof(CraftTree), nameof(CraftTree.GetTree))]
36-
private static void GetTreePreFix(CraftTree.Type treeType, ref CraftTree __result)
36+
private static void GetTreePostfix(CraftTree.Type treeType, ref CraftTree __result)
3737
{
3838
var craftTree = !CustomTrees.TryGetValue(treeType, out var customRoot) ? __result : customRoot.CustomCraftingTree;
3939

@@ -71,7 +71,7 @@ private static void GetTreePreFix(CraftTree.Type treeType, ref CraftTree __resul
7171

7272
private static void PatchCraftTree(ref CraftTree __result, CraftTree.Type type)
7373
{
74-
List<Node> removals = NodesToRemove.TryGetValue(type, out removals)? removals: new List<Node>();
74+
List<Node> removals = NodesToRemove.TryGetValue(type, out removals)? new List<Node>(removals): new List<Node>();
7575
RemoveNodes(ref __result, ref removals);
7676

7777
AddCustomTabs(ref __result, type);
@@ -152,8 +152,12 @@ private static void RemoveNodes(ref CraftTree tree, ref List<Node> nodesToRemove
152152
continue;
153153
}
154154

155+
if (!currentNode.parent.RemoveNode(currentNode))// Remove the node from its parent
156+
{
157+
InternalLogger.Warn($"Skipped removing craft tree node in {nameof(RemoveNodes)} for '{nodeToRemove.Scheme}' at '{string.Join("/", nodeToRemove.Path)}'. Could not remove the node.");
158+
continue;
159+
}
155160
currentNode.Clear(); // Remove all child nodes (if any)
156-
currentNode.parent.RemoveNode(currentNode); // Remove the node from its parent
157161
nodesToRemove.Remove(nodeToRemove); // Remove the node from the list of nodes to remove
158162
InternalLogger.Debug($"Removed node from {nodeToRemove.Scheme} tree at {string.Join("/", nodeToRemove.Path)}.");
159163
}
@@ -172,19 +176,10 @@ private static CraftTree CopyTree(CraftTree tree)
172176
private static TreeNode CopyCraftNode(TreeNode treeNode)
173177
{
174178
var copiedNode = treeNode.Copy();
175-
copiedNode.nodes = treeNode.nodes.ToList();
176-
177-
if (copiedNode.nodes.Count == 0)
179+
for (var i = 0; i < treeNode.nodes.Count; i++)
178180
{
179-
return copiedNode;
180-
}
181-
182-
for (var i = 0; i < copiedNode.nodes.Count; i++)
183-
{
184-
treeNode.nodes[i] = CopyCraftNode(treeNode.nodes[i]);
185-
treeNode.nodes[i].parent = copiedNode;
186-
}
187-
181+
copiedNode.AddNode(CopyCraftNode(treeNode.nodes[i]));
182+
}
188183
return copiedNode;
189184
}
190185

Version.targets

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<!-- The assembly uses this version number. !-->
55
<VersionPrefix>1.0.0</VersionPrefix>
6-
<SuffixNumber>35</SuffixNumber>
6+
<SuffixNumber>36</SuffixNumber>
77
<VersionSuffix>pre.$(SuffixNumber)</VersionSuffix>
88
</PropertyGroup>
99
</Project>

0 commit comments

Comments
 (0)