public static AnvilWorldProvider GetLevelProvider(LevelManager levelManager, string levelDir, bool readOnly = true, bool insulate = true, bool cache = true) { ProviderCache.TryGetValue(levelDir, out var provider); if (provider != null) { return(readOnly ? provider : (AnvilWorldProvider)provider.Clone()); } provider = new AnvilWorldProvider(levelDir); var level = new CacheLevel(levelManager, "cache", provider, new EntityManager(), viewDistance: 20) { EnableBlockTicking = false, EnableChunkTicking = false }; level.Initialize(); RecalculateLight(level, provider); level.Close(); provider.PruneAir(); provider.MakeAirChunksAroundWorldToCompensateForBadRendering(); if (insulate) { InsulateChunks(provider); } if (cache) { ProviderCache.Add(levelDir, provider); } return(readOnly ? provider : (AnvilWorldProvider)provider.Clone()); }