diff --git a/save_load/autoloads/save_game_manager.gd b/addons/save_load_system/autoloads/save_game_manager.gd similarity index 100% rename from save_load/autoloads/save_game_manager.gd rename to addons/save_load_system/autoloads/save_game_manager.gd diff --git a/save_load/autoloads/save_game_manager.gd.uid b/addons/save_load_system/autoloads/save_game_manager.gd.uid similarity index 100% rename from save_load/autoloads/save_game_manager.gd.uid rename to addons/save_load_system/autoloads/save_game_manager.gd.uid diff --git a/save_load/components/save_data_component.gd b/addons/save_load_system/components/save_data_component.gd similarity index 100% rename from save_load/components/save_data_component.gd rename to addons/save_load_system/components/save_data_component.gd diff --git a/save_load/components/save_data_component.gd.uid b/addons/save_load_system/components/save_data_component.gd.uid similarity index 100% rename from save_load/components/save_data_component.gd.uid rename to addons/save_load_system/components/save_data_component.gd.uid diff --git a/save_load/components/save_data_component.tscn b/addons/save_load_system/components/save_data_component.tscn similarity index 72% rename from save_load/components/save_data_component.tscn rename to addons/save_load_system/components/save_data_component.tscn index ba91d49..7d67df5 100644 --- a/save_load/components/save_data_component.tscn +++ b/addons/save_load_system/components/save_data_component.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://baki8rbf1ti0r"] -[ext_resource type="Script" uid="uid://b0400fjcqflgh" path="res://save_load/components/save_data_component.gd" id="1_nm1vf"] +[ext_resource type="Script" uid="uid://b0400fjcqflgh" path="res://addons/save_load_system/components/save_data_component.gd" id="1_nm1vf"] [node name="SaveDataComponent" type="Node"] script = ExtResource("1_nm1vf") diff --git a/save_load/components/save_level_data_component.gd b/addons/save_load_system/components/save_level_data_component.gd similarity index 100% rename from save_load/components/save_level_data_component.gd rename to addons/save_load_system/components/save_level_data_component.gd diff --git a/save_load/components/save_level_data_component.gd.uid b/addons/save_load_system/components/save_level_data_component.gd.uid similarity index 100% rename from save_load/components/save_level_data_component.gd.uid rename to addons/save_load_system/components/save_level_data_component.gd.uid diff --git a/save_load/components/save_level_data_component.tscn b/addons/save_load_system/components/save_level_data_component.tscn similarity index 64% rename from save_load/components/save_level_data_component.tscn rename to addons/save_load_system/components/save_level_data_component.tscn index bbbb252..dc4237b 100644 --- a/save_load/components/save_level_data_component.tscn +++ b/addons/save_load_system/components/save_level_data_component.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=4 format=3 uid="uid://c3pqilb6yh5kc"] -[ext_resource type="Script" uid="uid://c7x2qvyu62230" path="res://save_load/components/save_level_data_component.gd" id="1_exguq"] -[ext_resource type="Texture2D" uid="uid://b4lam0dwtv8fq" path="res://save_load/default_icon.svg" id="2_hd7aa"] -[ext_resource type="Resource" uid="uid://o32fooj1lxg7" path="res://save_load/resources/save_game_settings_resource.tres" id="2_rkr1f"] +[ext_resource type="Script" uid="uid://c7x2qvyu62230" path="res://addons/save_load_system/components/save_level_data_component.gd" id="1_exguq"] +[ext_resource type="Texture2D" uid="uid://b4lam0dwtv8fq" path="res://addons/save_load_system/default_icon.svg" id="2_hd7aa"] +[ext_resource type="Resource" uid="uid://o32fooj1lxg7" path="res://addons/save_load_system/resources/save_game_settings_resource.tres" id="2_rkr1f"] [node name="SaveLevelDataComponent" type="Node"] script = ExtResource("1_exguq") diff --git a/save_load/default_icon.svg b/addons/save_load_system/default_icon.svg similarity index 100% rename from save_load/default_icon.svg rename to addons/save_load_system/default_icon.svg diff --git a/save_load/default_icon.svg.import b/addons/save_load_system/default_icon.svg.import similarity index 73% rename from save_load/default_icon.svg.import rename to addons/save_load_system/default_icon.svg.import index 4beaef4..2820ada 100644 --- a/save_load/default_icon.svg.import +++ b/addons/save_load_system/default_icon.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b4lam0dwtv8fq" -path="res://.godot/imported/default_icon.svg-03c9d03bc57a0daada1198408be965b9.ctex" +path="res://.godot/imported/default_icon.svg-8f0c0a4577d41c2e54da72bcdea5ad34.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://save_load/default_icon.svg" -dest_files=["res://.godot/imported/default_icon.svg-03c9d03bc57a0daada1198408be965b9.ctex"] +source_file="res://addons/save_load_system/default_icon.svg" +dest_files=["res://.godot/imported/default_icon.svg-8f0c0a4577d41c2e54da72bcdea5ad34.ctex"] [params] diff --git a/addons/save_load_system/plugin.cfg b/addons/save_load_system/plugin.cfg new file mode 100644 index 0000000..4c644aa --- /dev/null +++ b/addons/save_load_system/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Save Load System" +description="An overengineered Save/Load system" +author="Ryan Reed" +version="1.0" +script="plugin.gd" diff --git a/addons/save_load_system/plugin.gd b/addons/save_load_system/plugin.gd new file mode 100644 index 0000000..0a509d9 --- /dev/null +++ b/addons/save_load_system/plugin.gd @@ -0,0 +1,12 @@ +@tool +extends EditorPlugin + + +func _enter_tree() -> void: + add_autoload_singleton("SaveGameManager", "res://addons/save_load_system/autoloads/save_game_manager.gd") + + + +func _exit_tree() -> void: + # Clean-up of the plugin goes here. + pass diff --git a/addons/save_load_system/plugin.gd.uid b/addons/save_load_system/plugin.gd.uid new file mode 100644 index 0000000..a745345 --- /dev/null +++ b/addons/save_load_system/plugin.gd.uid @@ -0,0 +1 @@ +uid://bj77sfap4rqke diff --git a/save_load/resources/node_types/node3d_data_resource.gd b/addons/save_load_system/resources/node_types/node3d_data_resource.gd similarity index 100% rename from save_load/resources/node_types/node3d_data_resource.gd rename to addons/save_load_system/resources/node_types/node3d_data_resource.gd diff --git a/save_load/resources/node_types/node3d_data_resource.gd.uid b/addons/save_load_system/resources/node_types/node3d_data_resource.gd.uid similarity index 100% rename from save_load/resources/node_types/node3d_data_resource.gd.uid rename to addons/save_load_system/resources/node_types/node3d_data_resource.gd.uid diff --git a/save_load/resources/node_types/node3d_data_resource.tres b/addons/save_load_system/resources/node_types/node3d_data_resource.tres similarity index 79% rename from save_load/resources/node_types/node3d_data_resource.tres rename to addons/save_load_system/resources/node_types/node3d_data_resource.tres index 6ee5050..164dc47 100644 --- a/save_load/resources/node_types/node3d_data_resource.tres +++ b/addons/save_load_system/resources/node_types/node3d_data_resource.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="NodeDataResource" load_steps=2 format=3 uid="uid://dald1lud7ktsj"] -[ext_resource type="Script" uid="uid://drj0sfem1gmsk" path="res://save_load/resources/node_types/node3d_data_resource.gd" id="1_b70a7"] +[ext_resource type="Script" uid="uid://drj0sfem1gmsk" path="res://addons/save_load_system/resources/node_types/node3d_data_resource.gd" id="1_b70a7"] [resource] script = ExtResource("1_b70a7") diff --git a/save_load/resources/save_file_details_resource.gd b/addons/save_load_system/resources/save_file_details_resource.gd similarity index 100% rename from save_load/resources/save_file_details_resource.gd rename to addons/save_load_system/resources/save_file_details_resource.gd diff --git a/save_load/resources/save_file_details_resource.gd.uid b/addons/save_load_system/resources/save_file_details_resource.gd.uid similarity index 100% rename from save_load/resources/save_file_details_resource.gd.uid rename to addons/save_load_system/resources/save_file_details_resource.gd.uid diff --git a/save_load/resources/save_game_data_resource.gd b/addons/save_load_system/resources/save_game_data_resource.gd similarity index 100% rename from save_load/resources/save_game_data_resource.gd rename to addons/save_load_system/resources/save_game_data_resource.gd diff --git a/save_load/resources/save_game_data_resource.gd.uid b/addons/save_load_system/resources/save_game_data_resource.gd.uid similarity index 100% rename from save_load/resources/save_game_data_resource.gd.uid rename to addons/save_load_system/resources/save_game_data_resource.gd.uid diff --git a/save_load/resources/save_game_data_resource.tres b/addons/save_load_system/resources/save_game_data_resource.tres similarity index 70% rename from save_load/resources/save_game_data_resource.tres rename to addons/save_load_system/resources/save_game_data_resource.tres index 9dc8a6b..2d4c394 100644 --- a/save_load/resources/save_game_data_resource.tres +++ b/addons/save_load_system/resources/save_game_data_resource.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SaveGameDataResource" load_steps=3 format=3 uid="uid://dkniygoky2jcx"] -[ext_resource type="Script" uid="uid://drj0sfem1gmsk" path="res://save_load/resources/node_types/node3d_data_resource.gd" id="1_7yx7n"] -[ext_resource type="Script" uid="uid://di6ov7tpewhft" path="res://save_load/resources/save_game_data_resource.gd" id="1_sbw5t"] +[ext_resource type="Script" uid="uid://drj0sfem1gmsk" path="res://addons/save_load_system/resources/node_types/node3d_data_resource.gd" id="1_7yx7n"] +[ext_resource type="Script" uid="uid://di6ov7tpewhft" path="res://addons/save_load_system/resources/save_game_data_resource.gd" id="1_sbw5t"] [resource] script = ExtResource("1_sbw5t") diff --git a/save_load/resources/save_game_settings_resource.gd b/addons/save_load_system/resources/save_game_settings_resource.gd similarity index 100% rename from save_load/resources/save_game_settings_resource.gd rename to addons/save_load_system/resources/save_game_settings_resource.gd diff --git a/save_load/resources/save_game_settings_resource.gd.uid b/addons/save_load_system/resources/save_game_settings_resource.gd.uid similarity index 100% rename from save_load/resources/save_game_settings_resource.gd.uid rename to addons/save_load_system/resources/save_game_settings_resource.gd.uid diff --git a/save_load/resources/save_game_settings_resource.tres b/addons/save_load_system/resources/save_game_settings_resource.tres similarity index 85% rename from save_load/resources/save_game_settings_resource.tres rename to addons/save_load_system/resources/save_game_settings_resource.tres index 0e1f12d..74ca31e 100644 --- a/save_load/resources/save_game_settings_resource.tres +++ b/addons/save_load_system/resources/save_game_settings_resource.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="SaveGameSettings" load_steps=2 format=3 uid="uid://o32fooj1lxg7"] -[ext_resource type="Script" uid="uid://d0iptf06t7f47" path="res://save_load/resources/save_game_settings_resource.gd" id="1_o1tpj"] +[ext_resource type="Script" uid="uid://d0iptf06t7f47" path="res://addons/save_load_system/resources/save_game_settings_resource.gd" id="1_o1tpj"] [resource] script = ExtResource("1_o1tpj") diff --git a/save_load/resources/scene_data_resource.gd b/addons/save_load_system/resources/scene_data_resource.gd similarity index 100% rename from save_load/resources/scene_data_resource.gd rename to addons/save_load_system/resources/scene_data_resource.gd diff --git a/save_load/resources/scene_data_resource.gd.uid b/addons/save_load_system/resources/scene_data_resource.gd.uid similarity index 100% rename from save_load/resources/scene_data_resource.gd.uid rename to addons/save_load_system/resources/scene_data_resource.gd.uid diff --git a/save_load/resources/scene_data_resource.tres b/addons/save_load_system/resources/scene_data_resource.tres similarity index 83% rename from save_load/resources/scene_data_resource.tres rename to addons/save_load_system/resources/scene_data_resource.tres index dc3de75..bb7c03b 100644 --- a/save_load/resources/scene_data_resource.tres +++ b/addons/save_load_system/resources/scene_data_resource.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="SceneDataResource" load_steps=2 format=3 uid="uid://duqhhi2nlic6n"] -[ext_resource type="Script" uid="uid://bxr74kmjt6heh" path="res://save_load/resources/scene_data_resource.gd" id="1_ihw72"] +[ext_resource type="Script" uid="uid://bxr74kmjt6heh" path="res://addons/save_load_system/resources/scene_data_resource.gd" id="1_ihw72"] [resource] script = ExtResource("1_ihw72") diff --git a/project.godot b/project.godot index 4bf8ebb..304235e 100644 --- a/project.godot +++ b/project.godot @@ -22,9 +22,9 @@ Globals="*res://autoloads/globals.gd" EntityManager="*res://autoloads/entity_manager.gd" InventoryManager="*res://autoloads/inventory_manager.gd" DBItems="*res://autoloads/db_items.gd" -SaveGameManager="*res://save_load/autoloads/save_game_manager.gd" SignalManager="*res://autoloads/signal_manager.gd" GameSettingsManager="*res://autoloads/game_settings_manager.gd" +SaveGameManager="*res://addons/save_load_system/autoloads/save_game_manager.gd" [debug] @@ -38,6 +38,10 @@ gdscript/warnings/unsafe_method_access=1 window/size/viewport_width=1280 window/size/viewport_height=720 +[editor_plugins] + +enabled=PackedStringArray("res://addons/save_load_system/plugin.cfg") + [file_customization] folder_colors={ diff --git a/save_load/resources/node_types/block_data_resource.gd b/save_load/resources/node_types/block_data_resource.gd deleted file mode 100644 index 1c08dc6..0000000 --- a/save_load/resources/node_types/block_data_resource.gd +++ /dev/null @@ -1,16 +0,0 @@ -## The resource utilized for saving a Block -class_name BlockDataResource -extends Node3DDataResource - - -@export var block_id: String = "001" - - -func _save_data(node: Node3D) -> void: - super._save_data(node) - - block_id = node.id - - -func _load_data(_window: Window) -> void: - EntityManager.create_block.emit(block_id, transform.origin) diff --git a/save_load/resources/node_types/block_data_resource.gd.uid b/save_load/resources/node_types/block_data_resource.gd.uid deleted file mode 100644 index ce2e53a..0000000 --- a/save_load/resources/node_types/block_data_resource.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://syaia0l6vjt1 diff --git a/save_load/resources/node_types/block_data_resource.tres b/save_load/resources/node_types/block_data_resource.tres deleted file mode 100644 index 8a2bee8..0000000 --- a/save_load/resources/node_types/block_data_resource.tres +++ /dev/null @@ -1,12 +0,0 @@ -[gd_resource type="Resource" script_class="BlockDataResource" load_steps=2 format=3 uid="uid://dfos8np8agysk"] - -[ext_resource type="Script" uid="uid://syaia0l6vjt1" path="res://save_load/resources/node_types/block_data_resource.gd" id="1_a06et"] - -[resource] -script = ExtResource("1_a06et") -block_id = "001" -block_position = Vector3(0, 0, 0) -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) -node_path = NodePath("") -parent_node_path = NodePath("") -metadata/_custom_type_script = "uid://syaia0l6vjt1" diff --git a/save_load/resources/node_types/player_data_resource.gd b/save_load/resources/node_types/player_data_resource.gd deleted file mode 100644 index c2b7cfb..0000000 --- a/save_load/resources/node_types/player_data_resource.gd +++ /dev/null @@ -1,16 +0,0 @@ -## The resource utilized for saving a Player -class_name PlayerDataResource -extends Node3DDataResource - - -func _save_data(node: Node3D) -> void: - super._save_data(node) - # TODO: Save inventory or any other data - - -func _load_data(window: Window) -> void: - var scene_node: Node = window.get_node_or_null(node_path) - - if scene_node == null: return - - EntityManager.spawn_player.emit(transform) diff --git a/save_load/resources/node_types/player_data_resource.gd.uid b/save_load/resources/node_types/player_data_resource.gd.uid deleted file mode 100644 index 76f78ef..0000000 --- a/save_load/resources/node_types/player_data_resource.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dodqpooodtguo diff --git a/save_load/resources/node_types/player_data_resource.tres b/save_load/resources/node_types/player_data_resource.tres deleted file mode 100644 index b1d3f4f..0000000 --- a/save_load/resources/node_types/player_data_resource.tres +++ /dev/null @@ -1,10 +0,0 @@ -[gd_resource type="Resource" script_class="PlayerDataResource" load_steps=2 format=3 uid="uid://bvsurbn5xgchr"] - -[ext_resource type="Script" uid="uid://dodqpooodtguo" path="res://save_load/resources/node_types/player_data_resource.gd" id="1_scty6"] - -[resource] -script = ExtResource("1_scty6") -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) -node_path = NodePath("") -parent_node_path = NodePath("") -metadata/_custom_type_script = "uid://dodqpooodtguo" diff --git a/save_load/resources/save_file_highlight_panel_theme.tres b/save_load/resources/save_file_highlight_panel_theme.tres deleted file mode 100644 index 083bbaa..0000000 --- a/save_load/resources/save_file_highlight_panel_theme.tres +++ /dev/null @@ -1,4 +0,0 @@ -[gd_resource type="StyleBoxFlat" format=3 uid="uid://bwm315lqbbb87"] - -[resource] -bg_color = Color(0.728173, 0.579132, 0.164487, 1) diff --git a/save_load/resources/save_file_panel_theme.tres b/save_load/resources/save_file_panel_theme.tres deleted file mode 100644 index 7835864..0000000 --- a/save_load/resources/save_file_panel_theme.tres +++ /dev/null @@ -1,8 +0,0 @@ -[gd_resource type="StyleBoxFlat" format=3 uid="uid://biousyggn7iua"] - -[resource] -content_margin_left = 5.0 -content_margin_top = 5.0 -content_margin_right = 5.0 -content_margin_bottom = 5.0 -bg_color = Color(0, 0.65098, 0.886275, 0) diff --git a/scenes/blocks/block.tscn b/scenes/blocks/block.tscn index f08fe97..697eed1 100644 --- a/scenes/blocks/block.tscn +++ b/scenes/blocks/block.tscn @@ -3,8 +3,8 @@ [ext_resource type="Script" uid="uid://buvqmrrtmxs2h" path="res://scenes/blocks/block.gd" id="1_7fut1"] [ext_resource type="Material" uid="uid://bgc6efqf8aiqo" path="res://assets/materials/block_highlight.tres" id="2_524ei"] [ext_resource type="PackedScene" uid="uid://c8dch55d3txns" path="res://scenes/blocks/block_mesh.tscn" id="3_60een"] -[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://save_load/components/save_data_component.tscn" id="4_60een"] -[ext_resource type="Resource" uid="uid://dfos8np8agysk" path="res://save_load/resources/node_types/block_data_resource.tres" id="5_60een"] +[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://addons/save_load_system/components/save_data_component.tscn" id="4_60een"] +[ext_resource type="Resource" uid="uid://dfos8np8agysk" path="res://resources/save_load_node_types/block_data_resource.tres" id="5_60een"] [sub_resource type="BoxShape3D" id="BoxShape3D_n5naa"] diff --git a/scenes/player/player.tscn b/scenes/player/player.tscn index 504509f..a13ae17 100644 --- a/scenes/player/player.tscn +++ b/scenes/player/player.tscn @@ -3,8 +3,8 @@ [ext_resource type="Script" uid="uid://daly0bs0oat3j" path="res://scenes/player/player.gd" id="1_7sql3"] [ext_resource type="Script" uid="uid://bruuttf8j7wet" path="res://scenes/player/ray_cast_look.gd" id="2_dovo2"] [ext_resource type="PackedScene" uid="uid://c8dch55d3txns" path="res://scenes/blocks/block_mesh.tscn" id="2_p47bc"] -[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://save_load/components/save_data_component.tscn" id="3_lvxji"] -[ext_resource type="Resource" uid="uid://bvsurbn5xgchr" path="res://save_load/resources/node_types/player_data_resource.tres" id="4_p47bc"] +[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://addons/save_load_system/components/save_data_component.tscn" id="3_lvxji"] +[ext_resource type="Resource" uid="uid://bvsurbn5xgchr" path="res://resources/save_load_node_types/player_data_resource.tres" id="4_p47bc"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tv3cd"] radius = 0.47 diff --git a/scenes/ui/menus/saves_manager/save_file.tscn b/scenes/ui/menus/saves_manager/save_file.tscn index 6af7534..f1ecf3c 100644 --- a/scenes/ui/menus/saves_manager/save_file.tscn +++ b/scenes/ui/menus/saves_manager/save_file.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=11 format=3 uid="uid://bb7poutsn4ex2"] -[ext_resource type="StyleBox" uid="uid://biousyggn7iua" path="res://save_load/resources/save_file_panel_theme.tres" id="1_cqw77"] +[ext_resource type="StyleBox" uid="uid://biousyggn7iua" path="res://resources/save_file_panel_theme.tres" id="1_cqw77"] [ext_resource type="Texture2D" uid="uid://cmq51cgasug81" path="res://assets/ui/folder-open-normal.png" id="1_k6haa"] [ext_resource type="Script" uid="uid://dcfdyua5gwpw4" path="res://scenes/ui/menus/saves_manager/save_file.gd" id="2_5g2eu"] [ext_resource type="Texture2D" uid="uid://blyryo60jydgi" path="res://assets/ui/folder-open-pressed.png" id="2_714lu"] -[ext_resource type="StyleBox" uid="uid://bwm315lqbbb87" path="res://save_load/resources/save_file_highlight_panel_theme.tres" id="3_om23c"] +[ext_resource type="StyleBox" uid="uid://bwm315lqbbb87" path="res://resources/save_file_highlight_panel_theme.tres" id="3_om23c"] [ext_resource type="Texture2D" uid="uid://by4w5ll3le7g6" path="res://assets/ui/folder-open-hover.png" id="3_ubfnn"] [ext_resource type="Texture2D" uid="uid://dvp5yeoqw36yt" path="res://assets/ui/trash-normal.png" id="4_c2bnc"] [ext_resource type="Texture2D" uid="uid://dknv7amroftm8" path="res://assets/icon.svg" id="4_vqdx8"] diff --git a/scenes/world/world.tscn b/scenes/world/world.tscn index 839ede4..8a1dc4e 100644 --- a/scenes/world/world.tscn +++ b/scenes/world/world.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://c0jbvki2cylct" path="res://scenes/world/world.gd" id="1_6m72w"] [ext_resource type="PackedScene" uid="uid://beu1b4leqwgh3" path="res://scenes/player/player.tscn" id="2_sl2e5"] -[ext_resource type="PackedScene" uid="uid://c3pqilb6yh5kc" path="res://save_load/components/save_level_data_component.tscn" id="3_1fp7r"] +[ext_resource type="PackedScene" uid="uid://c3pqilb6yh5kc" path="res://addons/save_load_system/components/save_level_data_component.tscn" id="3_1fp7r"] [ext_resource type="PackedScene" uid="uid://58cvwtpnkq8r" path="res://scenes/world/day_night_cycle_component.tscn" id="3_6m72w"] [node name="World" type="Node3D" node_paths=PackedStringArray("blocks_container", "dropped_items_container", "spawn_position")]