From e04b05dcc8a8668d8497348c2d1a135f34e30ac2 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Fri, 4 Aug 2023 09:42:07 -0400 Subject: [PATCH] Don't return null for models we claim are in the faked model registry --- .../forge/dynresources/ModelBakeEventHelper.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelBakeEventHelper.java b/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelBakeEventHelper.java index ffe4cc87..f89d1c20 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelBakeEventHelper.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelBakeEventHelper.java @@ -6,6 +6,7 @@ import com.google.common.collect.Sets; import com.google.common.graph.GraphBuilder; import com.google.common.graph.MutableGraph; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; @@ -14,6 +15,7 @@ import net.minecraftforge.fml.ModContainer; import net.minecraftforge.fml.ModList; import net.minecraftforge.forgespi.language.IModInfo; import net.minecraftforge.registries.ForgeRegistries; +import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.dynamicresources.ModelLocationCache; import org.jetbrains.annotations.Nullable; @@ -69,12 +71,23 @@ public class ModelBakeEventHelper { if(modIdsToInclude.stream().noneMatch(INCOMPATIBLE_MODS::contains)) return this.modelRegistry; Set ourModelLocations = Sets.filter(this.topLevelModelLocations, loc -> modIdsToInclude.contains(loc.getNamespace())); + BakedModel missingModel = modelRegistry.get(ModelBakery.MISSING_MODEL_LOCATION); return new ForwardingMap() { @Override protected Map delegate() { return modelRegistry; } + @Override + public BakedModel get(@Nullable Object key) { + BakedModel model = super.get(key); + if(model == null && key != null && modIdsToInclude.contains(((ResourceLocation)key).getNamespace())) { + ModernFix.LOGGER.warn("Model {} is missing, but was requested in model bake event. Returning missing model", key); + return missingModel; + } + return model; + } + @Override public Set keySet() { return ourModelLocations;