package net.minecraft.client.resources.model; import javax.annotation.Nullable; import net.minecraft.client.renderer.block.model.ItemTransform; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.block.model.TextureSlots; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.world.item.ItemDisplayContext; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public interface ResolvedModel extends ModelDebugName { boolean DEFAULT_AMBIENT_OCCLUSION = true; UnbakedModel.GuiLight DEFAULT_GUI_LIGHT = UnbakedModel.GuiLight.SIDE; UnbakedModel wrapped(); @Nullable ResolvedModel parent(); static TextureSlots findTopTextureSlots(ResolvedModel p_393648_) { ResolvedModel resolvedmodel = p_393648_; TextureSlots.Resolver textureslots$resolver; for (textureslots$resolver = new TextureSlots.Resolver(); resolvedmodel != null; resolvedmodel = resolvedmodel.parent()) { textureslots$resolver.addLast(resolvedmodel.wrapped().textureSlots()); } return textureslots$resolver.resolve(p_393648_); } default TextureSlots getTopTextureSlots() { return findTopTextureSlots(this); } static boolean findTopAmbientOcclusion(ResolvedModel p_393409_) { while (p_393409_ != null) { Boolean obool = p_393409_.wrapped().ambientOcclusion(); if (obool != null) { return obool; } p_393409_ = p_393409_.parent(); } return true; } default boolean getTopAmbientOcclusion() { return findTopAmbientOcclusion(this); } static UnbakedModel.GuiLight findTopGuiLight(ResolvedModel p_392767_) { while (p_392767_ != null) { UnbakedModel.GuiLight unbakedmodel$guilight = p_392767_.wrapped().guiLight(); if (unbakedmodel$guilight != null) { return unbakedmodel$guilight; } p_392767_ = p_392767_.parent(); } return DEFAULT_GUI_LIGHT; } default UnbakedModel.GuiLight getTopGuiLight() { return findTopGuiLight(this); } static UnbakedGeometry findTopGeometry(ResolvedModel p_395357_) { while (p_395357_ != null) { UnbakedGeometry unbakedgeometry = p_395357_.wrapped().geometry(); if (unbakedgeometry != null) { return unbakedgeometry; } p_395357_ = p_395357_.parent(); } return UnbakedGeometry.EMPTY; } default UnbakedGeometry getTopGeometry() { return findTopGeometry(this); } default QuadCollection bakeTopGeometry(TextureSlots p_396041_, ModelBaker p_395367_, ModelState p_396505_) { return this.getTopGeometry().bake(p_396041_, p_395367_, p_396505_, this); } static TextureAtlasSprite resolveParticleSprite(TextureSlots p_391346_, ModelBaker p_396500_, ModelDebugName p_393309_) { return p_396500_.sprites().resolveSlot(p_391346_, "particle", p_393309_); } default TextureAtlasSprite resolveParticleSprite(TextureSlots p_397861_, ModelBaker p_395675_) { return resolveParticleSprite(p_397861_, p_395675_, this); } static ItemTransform findTopTransform(ResolvedModel p_393869_, ItemDisplayContext p_396067_) { while (p_393869_ != null) { ItemTransforms itemtransforms = p_393869_.wrapped().transforms(); if (itemtransforms != null) { ItemTransform itemtransform = itemtransforms.getTransform(p_396067_); if (itemtransform != ItemTransform.NO_TRANSFORM) { return itemtransform; } } p_393869_ = p_393869_.parent(); } return ItemTransform.NO_TRANSFORM; } static ItemTransforms findTopTransforms(ResolvedModel p_392780_) { ItemTransform itemtransform = findTopTransform(p_392780_, ItemDisplayContext.THIRD_PERSON_LEFT_HAND); ItemTransform itemtransform1 = findTopTransform(p_392780_, ItemDisplayContext.THIRD_PERSON_RIGHT_HAND); ItemTransform itemtransform2 = findTopTransform(p_392780_, ItemDisplayContext.FIRST_PERSON_LEFT_HAND); ItemTransform itemtransform3 = findTopTransform(p_392780_, ItemDisplayContext.FIRST_PERSON_RIGHT_HAND); ItemTransform itemtransform4 = findTopTransform(p_392780_, ItemDisplayContext.HEAD); ItemTransform itemtransform5 = findTopTransform(p_392780_, ItemDisplayContext.GUI); ItemTransform itemtransform6 = findTopTransform(p_392780_, ItemDisplayContext.GROUND); ItemTransform itemtransform7 = findTopTransform(p_392780_, ItemDisplayContext.FIXED); return new ItemTransforms(itemtransform, itemtransform1, itemtransform2, itemtransform3, itemtransform4, itemtransform5, itemtransform6, itemtransform7); } default ItemTransforms getTopTransforms() { return findTopTransforms(this); } }