Dump stats on permanently loaded baked models to debug log

This commit is contained in:
embeddedt 2026-02-02 20:50:21 -05:00
parent 5a93bc6109
commit 8c34c0de50
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
2 changed files with 49 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.ModLoader;
import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
import org.embeddedt.modernfix.ModernFix;
import org.embeddedt.modernfix.dynamicresources.DynamicBakedModelProvider;
import org.embeddedt.modernfix.forge.dynresources.ModelBakeEventHelper;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@ -62,5 +63,8 @@ public class ForgeHooksClientMixin {
ModernFix.LOGGER.warn(" {}: {}", entry.getKey(), entry.getValue().toString());
});
}
if (bakeEvent.getModels() instanceof DynamicBakedModelProvider dynamicProvider) {
dynamicProvider.dumpStats();
}
}
}

View File

@ -2,6 +2,8 @@ package org.embeddedt.modernfix.dynamicresources;
import com.google.common.collect.ImmutableSet;
import com.mojang.math.Transformation;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.ItemOverrides;
@ -248,4 +250,47 @@ public class DynamicBakedModelProvider implements Map<ResourceLocation, BakedMod
return function.apply(loc.id(), oldModel);
});
}
public void dumpStats() {
Object2ObjectOpenHashMap<Class<? extends BakedModel>, Object2IntOpenHashMap<String>> byClassAndNamespace = new Object2ObjectOpenHashMap<>();
Object2IntOpenHashMap<Class<? extends BakedModel>> totalsByClass = new Object2IntOpenHashMap<>();
synchronized (permanentOverrides) {
for (var entry : permanentOverrides.entrySet()) {
var model = entry.getValue();
if (model == null) {
continue;
}
totalsByClass.addTo(model.getClass(), 1);
var byNamespace = byClassAndNamespace.computeIfAbsent(model.getClass(), $ -> new Object2IntOpenHashMap<>());
byNamespace.addTo(entry.getKey().getNamespace(), 1);
}
}
ModernFix.LOGGER.debug("Loaded {} permanent overrides", permanentOverrides.size());
byClassAndNamespace.entrySet().stream().sorted((a, b) ->
Integer.compare(
totalsByClass.getInt(b.getKey()),
totalsByClass.getInt(a.getKey())
))
.forEach(classEntry -> {
var byNamespace = classEntry.getValue();
int totalModels = totalsByClass.getInt(classEntry.getKey());
ModernFix.LOGGER.debug(
"{}: {} models",
classEntry.getKey().getName(),
totalModels
);
// sort namespaces by count (descending)
byNamespace.object2IntEntrySet().stream()
.sorted((a, b) ->
Integer.compare(b.getIntValue(), a.getIntValue()))
.forEach(nsEntry -> {
ModernFix.LOGGER.debug(
" {}: {}",
nsEntry.getKey(),
nsEntry.getIntValue()
);
});
});
}
}