001    package net.minecraft.client.renderer.tileentity;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import net.minecraft.client.gui.FontRenderer;
006    import net.minecraft.client.renderer.RenderEngine;
007    import net.minecraft.tileentity.TileEntity;
008    import net.minecraft.world.World;
009    
010    @SideOnly(Side.CLIENT)
011    public abstract class TileEntitySpecialRenderer
012    {
013        /**
014         * The TileEntityRenderer instance associated with this TileEntitySpecialRenderer
015         */
016        protected TileEntityRenderer tileEntityRenderer;
017    
018        public abstract void renderTileEntityAt(TileEntity var1, double var2, double var4, double var6, float var8);
019    
020        /**
021         * Binds a texture to the renderEngine given a filename from the JAR.
022         */
023        protected void bindTextureByName(String par1Str)
024        {
025            RenderEngine var2 = this.tileEntityRenderer.renderEngine;
026    
027            if (var2 != null)
028            {
029                var2.bindTexture(var2.getTexture(par1Str));
030            }
031        }
032    
033        /**
034         * Binds a texture that Minecraft will attempt to load from the given URL.  (arguments: url, localFallback)
035         */
036        protected void bindTextureByURL(String par1Str, String par2Str)
037        {
038            RenderEngine var3 = this.tileEntityRenderer.renderEngine;
039    
040            if (var3 != null)
041            {
042                var3.bindTexture(var3.getTextureForDownloadableImage(par1Str, par2Str));
043            }
044        }
045    
046        /**
047         * Associate a TileEntityRenderer with this TileEntitySpecialRenderer
048         */
049        public void setTileEntityRenderer(TileEntityRenderer par1TileEntityRenderer)
050        {
051            this.tileEntityRenderer = par1TileEntityRenderer;
052        }
053    
054        /**
055         * Called when the ingame world being rendered changes (e.g. on world -> nether travel) due to using one renderer
056         * per tile entity type, rather than instance
057         */
058        public void onWorldChange(World par1World) {}
059    
060        public FontRenderer getFontRenderer()
061        {
062            return this.tileEntityRenderer.getFontRenderer();
063        }
064    }