@@ -120,7 +120,7 @@ private static void GetTreePreFix(CraftTree.Type treeType, ref CraftTree __resul
120
120
121
121
private static void PatchCraftTree ( ref CraftTree __result , CraftTree . Type type )
122
122
{
123
- List < Node > removals = NodesToRemove . TryGetValue ( type , out removals ) ? removals : new List < Node > ( ) ;
123
+ List < Node > removals = NodesToRemove . TryGetValue ( type , out removals ) ? removals : new List < Node > ( ) ;
124
124
RemoveNodes ( ref __result , ref removals ) ;
125
125
126
126
AddCustomTabs ( ref __result , type ) ;
@@ -135,7 +135,7 @@ private static void AddCustomTabs(ref CraftTree tree, CraftTree.Type type)
135
135
List < TabNode > customTabs = TabNodes . TryGetValue ( type , out customTabs ) ? customTabs : new List < TabNode > ( ) ;
136
136
foreach ( TabNode customNode in customTabs )
137
137
{
138
- if ( ! TraverseTree ( tree . nodes , customNode . Path , out var currentNode ) )
138
+ if ( ! TraverseTree ( tree . nodes , customNode . Path , out var currentNode ) )
139
139
{
140
140
InternalLogger . Error ( $ "Cannot add tab: { customNode . Name } to { customNode . Scheme } at { string . Join ( "/" , customNode . Path ) } as the parent node could not be found.") ;
141
141
continue ;
@@ -147,11 +147,14 @@ private static void AddCustomTabs(ref CraftTree tree, CraftTree.Type type)
147
147
continue ;
148
148
}
149
149
150
- // Add the new tab node.
151
- currentNode . AddNode ( new TreeNode [ ]
150
+ if ( TraverseTree ( currentNode , new [ ] { customNode . Name } , out _ ) )
152
151
{
153
- new CraftNode ( customNode . Name , TreeAction . Expand , TechType . None )
154
- } ) ;
152
+ // This node already exists, skip it.
153
+ continue ;
154
+ }
155
+
156
+ // Add the new tab node.
157
+ currentNode . AddNode ( new CraftNode ( customNode . Name , TreeAction . Expand , TechType . None ) ) ;
155
158
InternalLogger . Debug ( $ "Added tab: { customNode . Name } to { customNode . Scheme } at { string . Join ( "/" , customNode . Path ) } ") ;
156
159
}
157
160
}
@@ -184,11 +187,14 @@ private static void PatchNodes(ref CraftTree tree, CraftTree.Type type)
184
187
}
185
188
}
186
189
187
- // Add the node.
188
- currentNode . AddNode ( new TreeNode [ ]
190
+ if ( TraverseTree ( currentNode , new [ ] { customNode . TechType . AsString ( false ) } , out _ ) )
189
191
{
190
- new CraftNode ( customNode . TechType . AsString ( false ) , TreeAction . Craft , customNode . TechType )
191
- } ) ;
192
+ // This node already exists, skip it.
193
+ continue ;
194
+ }
195
+
196
+ // Add the node.
197
+ currentNode . AddNode ( new CraftNode ( customNode . TechType . AsString ( false ) , TreeAction . Craft , customNode . TechType ) ) ;
192
198
InternalLogger . Debug ( $ "Added Crafting node: { customNode . TechType . AsString ( ) } to { customNode . Scheme } at { string . Join ( "/" , customNode . Path ) } ") ;
193
199
}
194
200
}
0 commit comments