001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import java.awt.image.BufferedImage;
006    import java.io.BufferedReader;
007    import java.io.File;
008    import java.io.IOException;
009    import java.io.InputStream;
010    import java.io.InputStreamReader;
011    import javax.imageio.ImageIO;
012    import org.lwjgl.opengl.GL11;
013    
014    @SideOnly(Side.CLIENT)
015    public abstract class TexturePackImplementation implements TexturePackBase
016    {
017        private final String field_77545_e;
018        private final String field_77542_f;
019        protected final File field_77548_a;
020        protected String field_77546_b;
021        protected String field_77547_c;
022        protected BufferedImage field_77544_d;
023        private int field_77543_g;
024    
025        protected TexturePackImplementation(String par1Str, String par2Str)
026        {
027            this(par1Str, (File)null, par2Str);
028        }
029    
030        protected TexturePackImplementation(String par1Str, File par2File, String par3Str)
031        {
032            this.field_77543_g = -1;
033            this.field_77545_e = par1Str;
034            this.field_77542_f = par3Str;
035            this.field_77548_a = par2File;
036            this.func_77539_g();
037            this.func_77540_a();
038        }
039    
040        private static String func_77541_b(String par0Str)
041        {
042            if (par0Str != null && par0Str.length() > 34)
043            {
044                par0Str = par0Str.substring(0, 34);
045            }
046    
047            return par0Str;
048        }
049    
050        private void func_77539_g()
051        {
052            InputStream var1 = null;
053    
054            try
055            {
056                var1 = this.getResourceAsStream("/pack.png");
057                this.field_77544_d = ImageIO.read(var1);
058            }
059            catch (IOException var11)
060            {
061                ;
062            }
063            finally
064            {
065                try
066                {
067                    var1.close();
068                }
069                catch (IOException var10)
070                {
071                    ;
072                }
073            }
074        }
075    
076        protected void func_77540_a()
077        {
078            InputStream var1 = null;
079            BufferedReader var2 = null;
080    
081            try
082            {
083                var1 = this.getResourceAsStream("/pack.txt");
084                var2 = new BufferedReader(new InputStreamReader(var1));
085                this.field_77546_b = func_77541_b(var2.readLine());
086                this.field_77547_c = func_77541_b(var2.readLine());
087            }
088            catch (IOException var12)
089            {
090                ;
091            }
092            finally
093            {
094                try
095                {
096                    var2.close();
097                    var1.close();
098                }
099                catch (IOException var11)
100                {
101                    ;
102                }
103            }
104        }
105    
106        public void func_77533_a(RenderEngine par1RenderEngine)
107        {
108            if (this.field_77544_d != null && this.field_77543_g != -1)
109            {
110                par1RenderEngine.deleteTexture(this.field_77543_g);
111            }
112        }
113    
114        public void func_77535_b(RenderEngine par1RenderEngine)
115        {
116            if (this.field_77544_d != null)
117            {
118                if (this.field_77543_g == -1)
119                {
120                    this.field_77543_g = par1RenderEngine.allocateAndSetupTexture(this.field_77544_d);
121                }
122    
123                par1RenderEngine.bindTexture(this.field_77543_g);
124            }
125            else
126            {
127                GL11.glBindTexture(GL11.GL_TEXTURE_2D, par1RenderEngine.getTexture("/gui/unknown_pack.png"));
128            }
129        }
130    
131        /**
132         * Gives a texture resource as InputStream.
133         */
134        public InputStream getResourceAsStream(String par1Str)
135        {
136            return TexturePackBase.class.getResourceAsStream(par1Str);
137        }
138    
139        public String func_77536_b()
140        {
141            return this.field_77545_e;
142        }
143    
144        public String func_77538_c()
145        {
146            return this.field_77542_f;
147        }
148    
149        public String func_77531_d()
150        {
151            return this.field_77546_b;
152        }
153    
154        public String func_77537_e()
155        {
156            return this.field_77547_c;
157        }
158    
159        public int func_77534_f()
160        {
161            return 16;
162        }
163    }