@@ -221,6 +221,7 @@ def get_manifest(self) -> Dict[str, Any]:
221221class APPlayerContainer (APContainer ):
222222 """A zipfile containing at least archipelago.json meant for a player"""
223223 game : ClassVar [Optional [str ]] = None
224+ world_version : "Version | None" = None
224225 patch_file_ending : str = ""
225226
226227 player : Optional [int ]
@@ -235,10 +236,13 @@ def __init__(self, path: Optional[str] = None, player: Optional[int] = None,
235236 self .server = server
236237
237238 def read_contents (self , opened_zipfile : zipfile .ZipFile ) -> Dict [str , Any ]:
239+ from Utils import tuplize_version
238240 manifest = super ().read_contents (opened_zipfile )
239241 self .player = manifest ["player" ]
240242 self .server = manifest ["server" ]
241243 self .player_name = manifest ["player_name" ]
244+ if "world_version" in manifest :
245+ self .world_version = tuplize_version (manifest ["world_version" ])
242246 return manifest
243247
244248 def get_manifest (self ) -> Dict [str , Any ]:
@@ -250,6 +254,9 @@ def get_manifest(self) -> Dict[str, Any]:
250254 "game" : self .game ,
251255 "patch_file_ending" : self .patch_file_ending ,
252256 })
257+ if self .game :
258+ from .AutoWorld import AutoWorldRegister
259+ manifest ["world_version" ] = AutoWorldRegister .world_types [self .game ].world_version .as_simple_string ()
253260 return manifest
254261
255262
@@ -343,7 +350,6 @@ def write_file(self, file_name: str, file: bytes) -> None:
343350 self .files [file_name ] = file
344351
345352 def patch (self , target : str ) -> None :
346- self .read ()
347353 base_data = self .get_source_data_with_cache ()
348354 patch_extender = AutoPatchExtensionRegister .get_handler (self .game )
349355 assert not isinstance (self .procedure , str ), f"{ type (self )} must define procedures"
0 commit comments