001package net.minecraft.client.texturepacks; 002 003import cpw.mods.fml.relauncher.Side; 004import cpw.mods.fml.relauncher.SideOnly; 005import java.io.File; 006import java.io.FileNotFoundException; 007import java.io.IOException; 008import java.io.InputStream; 009import java.util.Enumeration; 010import java.util.zip.ZipEntry; 011import java.util.zip.ZipException; 012import java.util.zip.ZipFile; 013import net.minecraft.client.renderer.RenderEngine; 014 015@SideOnly(Side.CLIENT) 016public class TexturePackCustom extends TexturePackImplementation 017{ 018 /** ZipFile object used to access the texture pack file's contents. */ 019 private ZipFile texturePackZipFile; 020 021 public TexturePackCustom(String par1Str, File par2File, ITexturePack par3ITexturePack) 022 { 023 super(par1Str, par2File, par2File.getName(), par3ITexturePack); 024 } 025 026 /** 027 * Delete the OpenGL texture id of the pack's thumbnail image, and close the zip file in case of TexturePackCustom. 028 */ 029 public void deleteTexturePack(RenderEngine par1RenderEngine) 030 { 031 super.deleteTexturePack(par1RenderEngine); 032 033 try 034 { 035 if (this.texturePackZipFile != null) 036 { 037 this.texturePackZipFile.close(); 038 } 039 } 040 catch (IOException ioexception) 041 { 042 ; 043 } 044 045 this.texturePackZipFile = null; 046 } 047 048 protected InputStream func_98139_b(String par1Str) throws IOException 049 { 050 this.openTexturePackFile(); 051 ZipEntry zipentry = this.texturePackZipFile.getEntry(par1Str.substring(1)); 052 053 if (zipentry == null) 054 { 055 throw new FileNotFoundException(par1Str); 056 } 057 else 058 { 059 return this.texturePackZipFile.getInputStream(zipentry); 060 } 061 } 062 063 public boolean func_98140_c(String par1Str) 064 { 065 try 066 { 067 this.openTexturePackFile(); 068 return this.texturePackZipFile.getEntry(par1Str.substring(1)) != null; 069 } 070 catch (Exception exception) 071 { 072 return false; 073 } 074 } 075 076 /** 077 * Open the texture pack's file and initialize texturePackZipFile 078 */ 079 private void openTexturePackFile() throws IOException, ZipException 080 { 081 if (this.texturePackZipFile == null) 082 { 083 this.texturePackZipFile = new ZipFile(this.texturePackFile); 084 } 085 } 086 087 public boolean func_94179_g() 088 { 089 try 090 { 091 this.openTexturePackFile(); 092 Enumeration enumeration = this.texturePackZipFile.entries(); 093 094 while (enumeration.hasMoreElements()) 095 { 096 ZipEntry zipentry = (ZipEntry)enumeration.nextElement(); 097 098 if (zipentry.getName().startsWith("textures/")) 099 { 100 return true; 101 } 102 } 103 } 104 catch (Exception exception) 105 { 106 ; 107 } 108 109 boolean flag = this.func_98140_c("terrain.png") || this.func_98140_c("gui/items.png"); 110 return !flag; 111 } 112}