    001/**
    002 * This software is provided under the terms of the Minecraft Forge Public
    003 * License v1.0.
    004 */
    005
    006package net.minecraftforge.client;
    007
    008import org.lwjgl.opengl.Display;
    009
    010import net.minecraft.block.Block;
    011import net.minecraft.entity.Entity;
    012import net.minecraft.item.Item;
    013import net.minecraft.item.ItemStack;
    014import net.minecraft.client.renderer.RenderBlocks;
    015import net.minecraft.world.World;
    016import net.minecraftforge.client.IItemRenderer.ItemRenderType;
    017import net.minecraftforge.common.MinecraftForge;
    018
    019public class MinecraftForgeClient
    020{
    021    /**
    022     * Preload a texture.  Textures must be preloaded before the first
    023     * use, or they will cause visual anomalies.
    024     */
    025    public static void preloadTexture(String texture)
    026    {
    027        ForgeHooksClient.engine().getTexture(texture);
    028    }
    029
    030    private static IItemRenderer[] customItemRenderers = new IItemRenderer[Item.itemsList.length];
    031
    032    /**
    033     * Register a custom renderer for a specific item. This can be used to
    034     * render the item in-world as an EntityItem, when the item is equipped, or
    035     * when the item is in an inventory slot.
    036     * @param itemID The item ID (shifted index) to handle rendering.
    037     * @param renderer The IItemRenderer interface that handles rendering for
    038     * this item.
    039     */
    040    public static void registerItemRenderer(int itemID, IItemRenderer renderer)
    041    {
    042        customItemRenderers[itemID] = renderer;
    043    }
    044
    045    public static IItemRenderer getItemRenderer(ItemStack item, ItemRenderType type)
    046    {
    047        IItemRenderer renderer = customItemRenderers[item.itemID];
    048        if (renderer != null && renderer.handleRenderType(item, type))
    049        {
    050            return customItemRenderers[item.itemID];
    051        }
    052        return null;
    053    }
    054
    055    public static int getRenderPass()
    056    {
    057        return ForgeHooksClient.renderPass;
    058    }
    059}