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 }