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 a1b20bc1..9d461add 100644 --- a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ModelBakeryHelpers.java +++ b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/ModelBakeryHelpers.java @@ -39,6 +39,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 = 90; + 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 fa64853a..d6978894 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 @@ -98,15 +98,15 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { @Inject(method = "(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/client/color/block/BlockColors;Z)V", at = @At("RETURN")) private void replaceTopLevelBakedModels(ResourceManager manager, BlockColors colors, boolean vanillaBakery, CallbackInfo ci) { 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()