From 4340a89f3c72ff203be83cb5c6955cecf5aab1bb Mon Sep 17 00:00:00 2001 From: bitbrain Date: Tue, 2 Dec 2025 07:57:30 +0000 Subject: [PATCH] ensure BeehaveTree is available even if Godot class cache is broken, closes #409 --- addons/beehave/plugin.gd | 23 +++++++++++++++++++++++ addons/gdUnit4/GdUnitRunner.cfg | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/addons/beehave/plugin.gd b/addons/beehave/plugin.gd index 5e778cdb..2ae33a2f 100644 --- a/addons/beehave/plugin.gd +++ b/addons/beehave/plugin.gd @@ -4,6 +4,7 @@ extends EditorPlugin const BeehaveEditorDebugger := preload("debug/debugger.gd") var editor_debugger: BeehaveEditorDebugger var frames: RefCounted +var _custom_types: Array[StringName] = [] func _init(): @@ -33,7 +34,29 @@ func _enter_tree() -> void: else: frames = preload("debug/old_frames.gd").new() add_debugger_plugin(editor_debugger) + _register_custom_types() func _exit_tree() -> void: + _unregister_custom_types() remove_debugger_plugin(editor_debugger) + + +func _register_custom_types() -> void: + # Some users report the script-class cache randomly missing BeehaveTree, + # which makes the editor return a null instance. Register the type manually + # so the node is still available even if the cache is broken. + var tree_script: Script = load("res://addons/beehave/nodes/beehave_tree.gd") + if tree_script == null: + push_warning("Beehave: failed to load BeehaveTree script; custom type not registered.") + return + + var tree_icon: Texture2D = load("res://addons/beehave/icons/tree.svg") + add_custom_type("BeehaveTree", "Node", tree_script, tree_icon) + _custom_types.append(&"BeehaveTree") + + +func _unregister_custom_types() -> void: + for type_name in _custom_types: + remove_custom_type(type_name) + _custom_types.clear() diff --git a/addons/gdUnit4/GdUnitRunner.cfg b/addons/gdUnit4/GdUnitRunner.cfg index cb7729ac..654b7339 100644 --- a/addons/gdUnit4/GdUnitRunner.cfg +++ b/addons/gdUnit4/GdUnitRunner.cfg @@ -2991,4 +2991,4 @@ } ], "version": "5.0" -} \ No newline at end of file +}