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