40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.client.renderer.block;
 | |
| 
 | |
| import java.util.Map;
 | |
| import net.fabricmc.api.EnvType;
 | |
| import net.fabricmc.api.Environment;
 | |
| import net.minecraft.client.renderer.block.model.BlockStateModel;
 | |
| import net.minecraft.client.renderer.texture.TextureAtlasSprite;
 | |
| import net.minecraft.client.resources.model.ModelManager;
 | |
| import net.minecraft.world.level.block.state.BlockState;
 | |
| 
 | |
| @Environment(EnvType.CLIENT)
 | |
| public class BlockModelShaper {
 | |
| 	private Map<BlockState, BlockStateModel> modelByStateCache = Map.of();
 | |
| 	private final ModelManager modelManager;
 | |
| 
 | |
| 	public BlockModelShaper(ModelManager modelManager) {
 | |
| 		this.modelManager = modelManager;
 | |
| 	}
 | |
| 
 | |
| 	public TextureAtlasSprite getParticleIcon(BlockState state) {
 | |
| 		return this.getBlockModel(state).particleIcon();
 | |
| 	}
 | |
| 
 | |
| 	public BlockStateModel getBlockModel(BlockState state) {
 | |
| 		BlockStateModel blockStateModel = (BlockStateModel)this.modelByStateCache.get(state);
 | |
| 		if (blockStateModel == null) {
 | |
| 			blockStateModel = this.modelManager.getMissingBlockStateModel();
 | |
| 		}
 | |
| 
 | |
| 		return blockStateModel;
 | |
| 	}
 | |
| 
 | |
| 	public ModelManager getModelManager() {
 | |
| 		return this.modelManager;
 | |
| 	}
 | |
| 
 | |
| 	public void replaceCache(Map<BlockState, BlockStateModel> modelByStateCache) {
 | |
| 		this.modelByStateCache = modelByStateCache;
 | |
| 	}
 | |
| }
 |