Do not drop models during initial load
This commit is contained in:
parent
168ab8effa
commit
f586522dfe
|
|
@ -144,12 +144,21 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery {
|
||||||
this.bakedMissingModel = this.bakedTopLevelModels.get(MISSING_MODEL_VARIANT);
|
this.bakedMissingModel = this.bakedTopLevelModels.get(MISSING_MODEL_VARIANT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean inInitialLoad = true;
|
||||||
|
|
||||||
|
@Inject(method = "bakeModels", at = @At("RETURN"))
|
||||||
|
private void onInitialBakeFinish(ModelBakery.TextureGetter textureGetter, CallbackInfo ci) {
|
||||||
|
inInitialLoad = false;
|
||||||
|
var permanentMRLs = new ObjectOpenHashSet<>(this.bakedTopLevelModels.keySet());
|
||||||
|
((LRUMap<ModelResourceLocation, BakedModel>)this.bakedTopLevelModels).setPermanentEntries(permanentMRLs);
|
||||||
|
ModernFix.LOGGER.info("Dynamic model bakery initial baking finished, with {} permanent top level baked models", this.bakedTopLevelModels.size());
|
||||||
|
}
|
||||||
|
|
||||||
@Inject(method = "<init>", at = @At("RETURN"))
|
@Inject(method = "<init>", at = @At("RETURN"))
|
||||||
private void onInitialLoadFinish(BlockColors blockColors, ProfilerFiller profilerFiller, Map map, Map map2, CallbackInfo ci) {
|
private void onInitialLoadFinish(BlockColors blockColors, ProfilerFiller profilerFiller, Map map, Map map2, CallbackInfo ci) {
|
||||||
var permanentMRLs = new ObjectOpenHashSet<>(this.topLevelModels.keySet());
|
var permanentMRLs = new ObjectOpenHashSet<>(this.topLevelModels.keySet());
|
||||||
((LRUMap<ModelResourceLocation, UnbakedModel>)this.topLevelModels).setPermanentEntries(permanentMRLs);
|
((LRUMap<ModelResourceLocation, UnbakedModel>)this.topLevelModels).setPermanentEntries(permanentMRLs);
|
||||||
((LRUMap<ModelResourceLocation, BakedModel>)this.bakedTopLevelModels).setPermanentEntries(permanentMRLs);
|
ModernFix.LOGGER.info("Dynamic model bakery loading finished, with {} permanent top level models", this.topLevelModels.size());
|
||||||
ModernFix.LOGGER.info("Dynamic model bakery initialized, with {} permanent top level models", this.topLevelModels.size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
|
|
@ -167,6 +176,9 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mfix$tick() {
|
public void mfix$tick() {
|
||||||
|
if(inInitialLoad) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
tickCount++;
|
tickCount++;
|
||||||
if((tickCount % 200) == 0) {
|
if((tickCount % 200) == 0) {
|
||||||
if(modelBakeryLock.tryLock()) {
|
if(modelBakeryLock.tryLock()) {
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@ public class LRUMap<K, V> extends Object2ObjectLinkedOpenHashMap<K, V> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dropEntriesToMeetSize(int size) {
|
public void dropEntriesToMeetSize(int size) {
|
||||||
|
// Increase allowed size quota to include permanent entries
|
||||||
|
size += permanentEntries.size();
|
||||||
int prevSize = size();
|
int prevSize = size();
|
||||||
if(size() > size) {
|
if(size() > size) {
|
||||||
var iterator = entrySet().iterator();
|
var iterator = entrySet().iterator();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user