diff --git a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ModelBakeryHelpers.java b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ModelBakeryHelpers.java index 2d98e6ea..d412e10b 100644 --- a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ModelBakeryHelpers.java +++ b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ModelBakeryHelpers.java @@ -40,6 +40,19 @@ import static net.minecraft.client.resources.model.ModelBakery.BLOCK_ENTITY_MARK import static net.minecraft.client.resources.model.ModelBakery.GENERATION_MARKER; public class ModelBakeryHelpers { + /** + * The maximum number of baked models kept in memory at once. + */ + public static final int MAX_BAKED_MODEL_COUNT = 10000; + /** + * The maximum number of unbaked models kept in memory at once. + */ + public static final int MAX_UNBAKED_MODEL_COUNT = 10000; + /** + * The time in seconds after which a model becomes eligible for eviction if not used. + */ + public static final int MAX_MODEL_LIFETIME_SECS = 300; + private static void gatherAdditionalViaManualScan(List untrustedPacks, Set knownLocations, Collection uncertainLocations, String filePrefix) { if(untrustedPacks.size() > 0) { diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java index e0955ee6..bf0f483d 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -89,15 +89,15 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { private void replaceTopLevelBakedModels(ProfilerFiller filler, String s) { this.inTextureGatheringPass = true; this.loadedBakedModels = CacheBuilder.newBuilder() - .expireAfterAccess(3, TimeUnit.MINUTES) - .maximumSize(1000) + .expireAfterAccess(ModelBakeryHelpers.MAX_MODEL_LIFETIME_SECS, TimeUnit.SECONDS) + .maximumSize(ModelBakeryHelpers.MAX_BAKED_MODEL_COUNT) .concurrencyLevel(8) .removalListener(this::onModelRemoved) .softValues() .build(); this.loadedModels = CacheBuilder.newBuilder() - .expireAfterAccess(3, TimeUnit.MINUTES) - .maximumSize(1000) + .expireAfterAccess(ModelBakeryHelpers.MAX_MODEL_LIFETIME_SECS, TimeUnit.SECONDS) + .maximumSize(ModelBakeryHelpers.MAX_UNBAKED_MODEL_COUNT) .concurrencyLevel(8) .removalListener(this::onModelRemoved) .softValues() diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java index cf3d11bb..36034991 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -102,15 +102,15 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { private void replaceTopLevelBakedModels(ModelBakery bakery, BlockColors val) { this.blockColors = val; this.loadedBakedModels = CacheBuilder.newBuilder() - .expireAfterAccess(3, TimeUnit.MINUTES) - .maximumSize(1000) + .expireAfterAccess(ModelBakeryHelpers.MAX_MODEL_LIFETIME_SECS, TimeUnit.SECONDS) + .maximumSize(ModelBakeryHelpers.MAX_BAKED_MODEL_COUNT) .concurrencyLevel(8) .removalListener(this::onModelRemoved) .softValues() .build(); this.loadedModels = CacheBuilder.newBuilder() - .expireAfterAccess(3, TimeUnit.MINUTES) - .maximumSize(1000) + .expireAfterAccess(ModelBakeryHelpers.MAX_MODEL_LIFETIME_SECS, TimeUnit.SECONDS) + .maximumSize(ModelBakeryHelpers.MAX_UNBAKED_MODEL_COUNT) .concurrencyLevel(8) .removalListener(this::onModelRemoved) .softValues()