[1.19.3] Fix models nested in custom geometries not resolving parents (#9200)

This commit is contained in:
Dennis C authored and GitHub committed 2022-12-11 21:25:14 +01:00
1 parent 8bf96d8738
commit dccb1ab3a4
5 files changed
+44

No files matched your search

@@ -30,6 +30,7 @@ import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.Material;
import net.minecraft.client.resources.model.ModelBaker;
import net.minecraft.client.resources.model.ModelState;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
@@ -112,6 +113,12 @@ public class CompositeModel implements IUnbakedGeometry<CompositeModel>
return new Baked(context.isGui3d(), context.useBlockLight(), context.useAmbientOcclusion(), particle, context.getTransforms(), overrides, bakedParts, itemPassesBuilder.build());
}
@Override
public void resolveParents(Function<ResourceLocation, UnbakedModel> modelGetter, IGeometryBakingContext context)
{
children.values().forEach(child -> child.resolveParents(modelGetter));
}
@Override
public Set<String> getConfigurableComponentNames()
{
@@ -24,6 +24,7 @@ import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.Material;
import net.minecraft.client.resources.model.ModelBaker;
import net.minecraft.client.resources.model.ModelState;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.GsonHelper;
@@ -78,6 +79,13 @@ public class SeparateTransformsModel implements IUnbakedGeometry<SeparateTransfo
);
}
@Override
public void resolveParents(Function<ResourceLocation, UnbakedModel> modelGetter, IGeometryBakingContext context)
{
baseModel.resolveParents(modelGetter);
perspectives.values().forEach(model -> model.resolveParents(modelGetter));
}
public static class Baked implements IDynamicBakedModel
{
private final boolean isAmbientOcclusion;
@@ -7,6 +7,8 @@ package net.minecraftforge.client.model.geometry;
import java.util.Set;
import java.util.function.Function;
import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.client.renderer.block.model.ItemOverrides;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.BakedModel;
@@ -28,6 +30,16 @@ public interface IUnbakedGeometry<T extends IUnbakedGeometry<T>>
{
BakedModel bake(IGeometryBakingContext context, ModelBaker baker, Function<Material, TextureAtlasSprite> spriteGetter, ModelState modelState, ItemOverrides overrides, ResourceLocation modelLocation);
/**
* Resolve parents of nested {@link BlockModel}s which are later used in
* {@link IUnbakedGeometry#bake(IGeometryBakingContext, ModelBaker, Function, ModelState, ItemOverrides, ResourceLocation)}
* via {@link BlockModel#resolveParents(Function)}
*/
default void resolveParents(Function<ResourceLocation, UnbakedModel> modelGetter, IGeometryBakingContext context)
{
}
/**
* {@return a set of all the components whose visibility may be configured via {@link IGeometryBakingContext}}
*/