101 lines
3.2 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|