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.net.URI; 008 import net.minecraft.client.Minecraft; 009 import net.minecraft.client.gui.FontRenderer; 010 import net.minecraft.client.gui.GuiButton; 011 import net.minecraft.client.gui.GuiScreen; 012 import net.minecraft.client.gui.GuiSmallButton; 013 import net.minecraft.util.EnumOS; 014 import net.minecraft.util.StringTranslate; 015 import org.lwjgl.Sys; 016 017 @SideOnly(Side.CLIENT) 018 public class GuiTexturePacks extends GuiScreen 019 { 020 protected GuiScreen guiScreen; 021 private int refreshTimer = -1; 022 023 /** the absolute location of this texture pack */ 024 private String fileLocation = ""; 025 026 /** 027 * the GuiTexturePackSlot that contains all the texture packs and their descriptions 028 */ 029 private GuiTexturePackSlot guiTexturePackSlot; 030 031 public GuiTexturePacks(GuiScreen par1GuiScreen) 032 { 033 this.guiScreen = par1GuiScreen; 034 } 035 036 /** 037 * Adds the buttons (and other controls) to the screen in question. 038 */ 039 public void initGui() 040 { 041 StringTranslate var1 = StringTranslate.getInstance(); 042 this.controlList.add(new GuiSmallButton(5, this.width / 2 - 154, this.height - 48, var1.translateKey("texturePack.openFolder"))); 043 this.controlList.add(new GuiSmallButton(6, this.width / 2 + 4, this.height - 48, var1.translateKey("gui.done"))); 044 this.mc.texturePackList.updateAvaliableTexturePacks(); 045 this.fileLocation = (new File(Minecraft.getMinecraftDir(), "texturepacks")).getAbsolutePath(); 046 this.guiTexturePackSlot = new GuiTexturePackSlot(this); 047 this.guiTexturePackSlot.registerScrollButtons(this.controlList, 7, 8); 048 } 049 050 /** 051 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e). 052 */ 053 protected void actionPerformed(GuiButton par1GuiButton) 054 { 055 if (par1GuiButton.enabled) 056 { 057 if (par1GuiButton.id == 5) 058 { 059 if (Minecraft.getOs() == EnumOS.MACOS) 060 { 061 try 062 { 063 System.out.println(this.fileLocation); 064 Runtime.getRuntime().exec(new String[] {"/usr/bin/open", this.fileLocation}); 065 return; 066 } 067 catch (IOException var7) 068 { 069 var7.printStackTrace(); 070 } 071 } 072 else if (Minecraft.getOs() == EnumOS.WINDOWS) 073 { 074 String var2 = String.format("cmd.exe /C start \"Open file\" \"%s\"", new Object[] {this.fileLocation}); 075 076 try 077 { 078 Runtime.getRuntime().exec(var2); 079 return; 080 } 081 catch (IOException var6) 082 { 083 var6.printStackTrace(); 084 } 085 } 086 087 boolean var8 = false; 088 089 try 090 { 091 Class var3 = Class.forName("java.awt.Desktop"); 092 Object var4 = var3.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]); 093 var3.getMethod("browse", new Class[] {URI.class}).invoke(var4, new Object[] {(new File(Minecraft.getMinecraftDir(), "texturepacks")).toURI()}); 094 } 095 catch (Throwable var5) 096 { 097 var5.printStackTrace(); 098 var8 = true; 099 } 100 101 if (var8) 102 { 103 System.out.println("Opening via system class!"); 104 Sys.openURL("file://" + this.fileLocation); 105 } 106 } 107 else if (par1GuiButton.id == 6) 108 { 109 this.mc.renderEngine.refreshTextures(); 110 this.mc.displayGuiScreen(this.guiScreen); 111 } 112 else 113 { 114 this.guiTexturePackSlot.actionPerformed(par1GuiButton); 115 } 116 } 117 } 118 119 /** 120 * Called when the mouse is clicked. 121 */ 122 protected void mouseClicked(int par1, int par2, int par3) 123 { 124 super.mouseClicked(par1, par2, par3); 125 } 126 127 /** 128 * Called when the mouse is moved or a mouse button is released. Signature: (mouseX, mouseY, which) which==-1 is 129 * mouseMove, which==0 or which==1 is mouseUp 130 */ 131 protected void mouseMovedOrUp(int par1, int par2, int par3) 132 { 133 super.mouseMovedOrUp(par1, par2, par3); 134 } 135 136 /** 137 * Draws the screen and all the components in it. 138 */ 139 public void drawScreen(int par1, int par2, float par3) 140 { 141 this.guiTexturePackSlot.drawScreen(par1, par2, par3); 142 143 if (this.refreshTimer <= 0) 144 { 145 this.mc.texturePackList.updateAvaliableTexturePacks(); 146 this.refreshTimer += 20; 147 } 148 149 StringTranslate var4 = StringTranslate.getInstance(); 150 this.drawCenteredString(this.fontRenderer, var4.translateKey("texturePack.title"), this.width / 2, 16, 16777215); 151 this.drawCenteredString(this.fontRenderer, var4.translateKey("texturePack.folderInfo"), this.width / 2 - 77, this.height - 26, 8421504); 152 super.drawScreen(par1, par2, par3); 153 } 154 155 /** 156 * Called from the main game loop to update the screen. 157 */ 158 public void updateScreen() 159 { 160 super.updateScreen(); 161 --this.refreshTimer; 162 } 163 164 static Minecraft func_73950_a(GuiTexturePacks par0GuiTexturePacks) 165 { 166 return par0GuiTexturePacks.mc; 167 } 168 169 static Minecraft func_73955_b(GuiTexturePacks par0GuiTexturePacks) 170 { 171 return par0GuiTexturePacks.mc; 172 } 173 174 static Minecraft func_73958_c(GuiTexturePacks par0GuiTexturePacks) 175 { 176 return par0GuiTexturePacks.mc; 177 } 178 179 static Minecraft func_73951_d(GuiTexturePacks par0GuiTexturePacks) 180 { 181 return par0GuiTexturePacks.mc; 182 } 183 184 static Minecraft func_73952_e(GuiTexturePacks par0GuiTexturePacks) 185 { 186 return par0GuiTexturePacks.mc; 187 } 188 189 static Minecraft func_73962_f(GuiTexturePacks par0GuiTexturePacks) 190 { 191 return par0GuiTexturePacks.mc; 192 } 193 194 static Minecraft func_73959_g(GuiTexturePacks par0GuiTexturePacks) 195 { 196 return par0GuiTexturePacks.mc; 197 } 198 199 static Minecraft func_73957_h(GuiTexturePacks par0GuiTexturePacks) 200 { 201 return par0GuiTexturePacks.mc; 202 } 203 204 static Minecraft func_73956_i(GuiTexturePacks par0GuiTexturePacks) 205 { 206 return par0GuiTexturePacks.mc; 207 } 208 209 static Minecraft func_73953_j(GuiTexturePacks par0GuiTexturePacks) 210 { 211 return par0GuiTexturePacks.mc; 212 } 213 214 static Minecraft func_73961_k(GuiTexturePacks par0GuiTexturePacks) 215 { 216 return par0GuiTexturePacks.mc; 217 } 218 219 static FontRenderer func_73960_l(GuiTexturePacks par0GuiTexturePacks) 220 { 221 return par0GuiTexturePacks.fontRenderer; 222 } 223 224 static FontRenderer func_73963_m(GuiTexturePacks par0GuiTexturePacks) 225 { 226 return par0GuiTexturePacks.fontRenderer; 227 } 228 229 static FontRenderer func_73954_n(GuiTexturePacks par0GuiTexturePacks) 230 { 231 return par0GuiTexturePacks.fontRenderer; 232 } 233 }