minecraft-src/net/minecraft/client/renderer/entity/EntityRendererProvider.java
2025-07-04 03:15:13 +03:00

101 lines
3.2 KiB
Java

package net.minecraft.client.renderer.entity;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.Font;
import net.minecraft.client.model.geom.EntityModelSet;
import net.minecraft.client.model.geom.ModelLayerLocation;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.client.renderer.MapRenderer;
import net.minecraft.client.renderer.Sheets;
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
import net.minecraft.client.renderer.entity.layers.EquipmentLayerRenderer;
import net.minecraft.client.renderer.item.ItemModelResolver;
import net.minecraft.client.resources.model.EquipmentAssetManager;
import net.minecraft.client.resources.model.ModelManager;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.world.entity.Entity;
@FunctionalInterface
@Environment(EnvType.CLIENT)
public interface EntityRendererProvider<T extends Entity> {
EntityRenderer<T, ?> create(EntityRendererProvider.Context context);
@Environment(EnvType.CLIENT)
public static class Context {
private final EntityRenderDispatcher entityRenderDispatcher;
private final ItemModelResolver itemModelResolver;
private final MapRenderer mapRenderer;
private final BlockRenderDispatcher blockRenderDispatcher;
private final ResourceManager resourceManager;
private final EntityModelSet modelSet;
private final EquipmentAssetManager equipmentAssets;
private final Font font;
private final EquipmentLayerRenderer equipmentRenderer;
public Context(
EntityRenderDispatcher entityRenderDispatcher,
ItemModelResolver itemModelResolver,
MapRenderer mapRenderer,
BlockRenderDispatcher blockRenderDispatcher,
ResourceManager resourceManager,
EntityModelSet modelSet,
EquipmentAssetManager equipmentAssets,
Font font
) {
this.entityRenderDispatcher = entityRenderDispatcher;
this.itemModelResolver = itemModelResolver;
this.mapRenderer = mapRenderer;
this.blockRenderDispatcher = blockRenderDispatcher;
this.resourceManager = resourceManager;
this.modelSet = modelSet;
this.equipmentAssets = equipmentAssets;
this.font = font;
this.equipmentRenderer = new EquipmentLayerRenderer(equipmentAssets, this.getModelManager().getAtlas(Sheets.ARMOR_TRIMS_SHEET));
}
public EntityRenderDispatcher getEntityRenderDispatcher() {
return this.entityRenderDispatcher;
}
public ItemModelResolver getItemModelResolver() {
return this.itemModelResolver;
}
public MapRenderer getMapRenderer() {
return this.mapRenderer;
}
public BlockRenderDispatcher getBlockRenderDispatcher() {
return this.blockRenderDispatcher;
}
public ResourceManager getResourceManager() {
return this.resourceManager;
}
public EntityModelSet getModelSet() {
return this.modelSet;
}
public EquipmentAssetManager getEquipmentAssets() {
return this.equipmentAssets;
}
public EquipmentLayerRenderer getEquipmentRenderer() {
return this.equipmentRenderer;
}
public ModelManager getModelManager() {
return this.blockRenderDispatcher.getBlockModelShaper().getModelManager();
}
public ModelPart bakeLayer(ModelLayerLocation layer) {
return this.modelSet.bakeLayer(layer);
}
public Font getFont() {
return this.font;
}
}
}