Allow Model Loading API to inject and load extra models

This commit is contained in:
embeddedt 2023-08-25 15:00:21 -04:00
parent ce7b7cbaf2
commit eadb19d386
No known key found for this signature in database
GPG Key ID: A69433EC199B5613

View File

@ -87,7 +87,6 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery {
// we can handle recursion in getModel without issues
fabric_enableGetOrLoadModelGuard = false;
this.blockColors = val;
this.ignoreModelLoad = true;
this.loadedBakedModels = CacheBuilder.newBuilder()
.expireAfterAccess(ModelBakeryHelpers.MAX_MODEL_LIFETIME_SECS, TimeUnit.SECONDS)
.maximumSize(ModelBakeryHelpers.MAX_BAKED_MODEL_COUNT)
@ -119,6 +118,11 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery {
this.bakedTopLevelModels = new DynamicBakedModelProvider((ModelBakery)(Object)this, bakedCache);
}
@Inject(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiling/ProfilerFiller;popPush(Ljava/lang/String;)V", ordinal = 0))
private void ignoreFutureModelLoads(CallbackInfo ci) {
this.ignoreModelLoad = true;
}
private <K, V> void onModelRemoved(RemovalNotification<K, V> notification) {
if(!debugDynamicModelLoading)
return;
@ -193,7 +197,10 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery {
@Redirect(method = "bakeModels", at = @At(value = "INVOKE", target = "Ljava/util/Map;keySet()Ljava/util/Set;"))
private Set<ResourceLocation> skipBake(Map<ResourceLocation, UnbakedModel> instance) {
return Collections.emptySet();
Set<ResourceLocation> modelSet = new HashSet<>(instance.keySet());
if(modelSet.size() > 0)
ModernFix.LOGGER.info("Early baking {} models", modelSet.size());
return modelSet;
}
/**