ReadWriteStorageManager(Path savePath, ModuleEnvironment environment, EngineEntityManager entityManager,
BlockManager blockManager, BiomeManager biomeManager, ExtraBlockDataManager extraDataManager, boolean storeChunksInZips,
RecordAndReplaySerializer recordAndReplaySerializer, RecordAndReplayUtils recordAndReplayUtils,
RecordAndReplayCurrentStatus recordAndReplayCurrentStatus) throws IOException {
super(savePath, environment, entityManager, blockManager, biomeManager, extraDataManager, storeChunksInZips);
entityManager.subscribeForDestruction(this);
entityManager.subscribeForChanges(this);
this.privateEntityManager = createPrivateEntityManager(entityManager.getComponentLibrary());
Files.createDirectories(getStoragePathProvider().getStoragePathDirectory());
this.saveTransactionHelper = new SaveTransactionHelper(getStoragePathProvider());
this.saveThreadManager = TaskMaster.createFIFOTaskMaster("Saving", 1);
this.config = CoreRegistry.get(Config.class);
this.entityRefReplacingComponentLibrary = privateEntityManager.getComponentLibrary()
.createCopyUsingCopyStrategy(EntityRef.class, new DelayedEntityRefCopyStrategy(this));
this.entitySetDeltaRecorder = new EntitySetDeltaRecorder(this.entityRefReplacingComponentLibrary);
this.recordAndReplaySerializer = recordAndReplaySerializer;
this.recordAndReplayUtils = recordAndReplayUtils;
this.recordAndReplayCurrentStatus = recordAndReplayCurrentStatus;
}