131 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.client.resources.model;
 | |
| 
 | |
| import net.fabricmc.api.EnvType;
 | |
| import net.fabricmc.api.Environment;
 | |
| 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 org.jetbrains.annotations.Nullable;
 | |
| 
 | |
| @Environment(EnvType.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 model) {
 | |
| 		ResolvedModel resolvedModel = model;
 | |
| 
 | |
| 		TextureSlots.Resolver resolver;
 | |
| 		for (resolver = new TextureSlots.Resolver(); resolvedModel != null; resolvedModel = resolvedModel.parent()) {
 | |
| 			resolver.addLast(resolvedModel.wrapped().textureSlots());
 | |
| 		}
 | |
| 
 | |
| 		return resolver.resolve(model);
 | |
| 	}
 | |
| 
 | |
| 	default TextureSlots getTopTextureSlots() {
 | |
| 		return findTopTextureSlots(this);
 | |
| 	}
 | |
| 
 | |
| 	static boolean findTopAmbientOcclusion(ResolvedModel model) {
 | |
| 		while (model != null) {
 | |
| 			Boolean boolean_ = model.wrapped().ambientOcclusion();
 | |
| 			if (boolean_ != null) {
 | |
| 				return boolean_;
 | |
| 			}
 | |
| 
 | |
| 			model = model.parent();
 | |
| 		}
 | |
| 
 | |
| 		return true;
 | |
| 	}
 | |
| 
 | |
| 	default boolean getTopAmbientOcclusion() {
 | |
| 		return findTopAmbientOcclusion(this);
 | |
| 	}
 | |
| 
 | |
| 	static UnbakedModel.GuiLight findTopGuiLight(ResolvedModel model) {
 | |
| 		while (model != null) {
 | |
| 			UnbakedModel.GuiLight guiLight = model.wrapped().guiLight();
 | |
| 			if (guiLight != null) {
 | |
| 				return guiLight;
 | |
| 			}
 | |
| 
 | |
| 			model = model.parent();
 | |
| 		}
 | |
| 
 | |
| 		return DEFAULT_GUI_LIGHT;
 | |
| 	}
 | |
| 
 | |
| 	default UnbakedModel.GuiLight getTopGuiLight() {
 | |
| 		return findTopGuiLight(this);
 | |
| 	}
 | |
| 
 | |
| 	static UnbakedGeometry findTopGeometry(ResolvedModel model) {
 | |
| 		while (model != null) {
 | |
| 			UnbakedGeometry unbakedGeometry = model.wrapped().geometry();
 | |
| 			if (unbakedGeometry != null) {
 | |
| 				return unbakedGeometry;
 | |
| 			}
 | |
| 
 | |
| 			model = model.parent();
 | |
| 		}
 | |
| 
 | |
| 		return UnbakedGeometry.EMPTY;
 | |
| 	}
 | |
| 
 | |
| 	default UnbakedGeometry getTopGeometry() {
 | |
| 		return findTopGeometry(this);
 | |
| 	}
 | |
| 
 | |
| 	default QuadCollection bakeTopGeometry(TextureSlots textureSlots, ModelBaker modelBaker, ModelState modelState) {
 | |
| 		return this.getTopGeometry().bake(textureSlots, modelBaker, modelState, this);
 | |
| 	}
 | |
| 
 | |
| 	static TextureAtlasSprite resolveParticleSprite(TextureSlots textureSlots, ModelBaker modelBaker, ModelDebugName debugName) {
 | |
| 		return modelBaker.sprites().resolveSlot(textureSlots, "particle", debugName);
 | |
| 	}
 | |
| 
 | |
| 	default TextureAtlasSprite resolveParticleSprite(TextureSlots textureSlots, ModelBaker modelBaker) {
 | |
| 		return resolveParticleSprite(textureSlots, modelBaker, this);
 | |
| 	}
 | |
| 
 | |
| 	static ItemTransform findTopTransform(ResolvedModel model, ItemDisplayContext displayContext) {
 | |
| 		while (model != null) {
 | |
| 			ItemTransforms itemTransforms = model.wrapped().transforms();
 | |
| 			if (itemTransforms != null) {
 | |
| 				ItemTransform itemTransform = itemTransforms.getTransform(displayContext);
 | |
| 				if (itemTransform != ItemTransform.NO_TRANSFORM) {
 | |
| 					return itemTransform;
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			model = model.parent();
 | |
| 		}
 | |
| 
 | |
| 		return ItemTransform.NO_TRANSFORM;
 | |
| 	}
 | |
| 
 | |
| 	static ItemTransforms findTopTransforms(ResolvedModel model) {
 | |
| 		ItemTransform itemTransform = findTopTransform(model, ItemDisplayContext.THIRD_PERSON_LEFT_HAND);
 | |
| 		ItemTransform itemTransform2 = findTopTransform(model, ItemDisplayContext.THIRD_PERSON_RIGHT_HAND);
 | |
| 		ItemTransform itemTransform3 = findTopTransform(model, ItemDisplayContext.FIRST_PERSON_LEFT_HAND);
 | |
| 		ItemTransform itemTransform4 = findTopTransform(model, ItemDisplayContext.FIRST_PERSON_RIGHT_HAND);
 | |
| 		ItemTransform itemTransform5 = findTopTransform(model, ItemDisplayContext.HEAD);
 | |
| 		ItemTransform itemTransform6 = findTopTransform(model, ItemDisplayContext.GUI);
 | |
| 		ItemTransform itemTransform7 = findTopTransform(model, ItemDisplayContext.GROUND);
 | |
| 		ItemTransform itemTransform8 = findTopTransform(model, ItemDisplayContext.FIXED);
 | |
| 		return new ItemTransforms(itemTransform, itemTransform2, itemTransform3, itemTransform4, itemTransform5, itemTransform6, itemTransform7, itemTransform8);
 | |
| 	}
 | |
| 
 | |
| 	default ItemTransforms getTopTransforms() {
 | |
| 		return findTopTransforms(this);
 | |
| 	}
 | |
| }
 |