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 }