001    package net.minecraft.client.texturepacks;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.io.File;
006    import java.io.IOException;
007    import java.io.InputStream;
008    import java.util.zip.ZipEntry;
009    import java.util.zip.ZipFile;
010    import net.minecraft.client.renderer.RenderEngine;
011    
012    @SideOnly(Side.CLIENT)
013    public class TexturePackCustom extends TexturePackImplementation
014    {
015        /** ZipFile object used to access the texture pack file's contents. */
016        private ZipFile texturePackZipFile;
017    
018        public TexturePackCustom(String par1Str, File par2File)
019        {
020            super(par1Str, par2File, par2File.getName());
021        }
022    
023        /**
024         * Delete the OpenGL texture id of the pack's thumbnail image, and close the zip file in case of TexturePackCustom.
025         */
026        public void deleteTexturePack(RenderEngine par1RenderEngine)
027        {
028            super.deleteTexturePack(par1RenderEngine);
029    
030            try
031            {
032                if (this.texturePackZipFile != null)
033                {
034                    this.texturePackZipFile.close();
035                }
036            }
037            catch (IOException var3)
038            {
039                ;
040            }
041    
042            this.texturePackZipFile = null;
043        }
044    
045        /**
046         * Gives a texture resource as InputStream.
047         */
048        public InputStream getResourceAsStream(String par1Str)
049        {
050            this.openTexturePackFile();
051    
052            try
053            {
054                ZipEntry var2 = this.texturePackZipFile.getEntry(par1Str.substring(1));
055    
056                if (var2 != null)
057                {
058                    return this.texturePackZipFile.getInputStream(var2);
059                }
060            }
061            catch (Exception var3)
062            {
063                ;
064            }
065    
066            return super.getResourceAsStream(par1Str);
067        }
068    
069        /**
070         * Open the texture pack's file and initialize texturePackZipFile
071         */
072        private void openTexturePackFile()
073        {
074            if (this.texturePackZipFile == null)
075            {
076                try
077                {
078                    this.texturePackZipFile = new ZipFile(this.texturePackFile);
079                }
080                catch (IOException var2)
081                {
082                    ;
083                }
084            }
085        }
086    }