|  | @@ -114,25 +114,24 @@ public class SpoutUtils {
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * Write file to disk.
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  | -     * @param theFileName The name of the file
 | 
	
		
			
				|  |  | -     * @param theFilePath The name of the file path
 | 
	
		
			
				|  |  | +     * @param fileName The name of the file
 | 
	
		
			
				|  |  | +     * @param filePath The name of the file path
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private static void writeFile(String theFileName, String theFilePath) {
 | 
	
		
			
				|  |  | +    private static File writeFile(String fileName, String filePath) {
 | 
	
		
			
				|  |  | +        File currentFile = new File(filePath + fileName);
 | 
	
		
			
				|  |  |          BufferedOutputStream os = null;
 | 
	
		
			
				|  |  |          JarFile jar = null;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        try {
 | 
	
		
			
				|  |  | -            File currentFile = new File(theFilePath + theFileName);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // No point in writing the file again if it already exists.
 | 
	
		
			
				|  |  | -            if (currentFile.exists()) {
 | 
	
		
			
				|  |  | -                return;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +        // No point in writing the file again if it already exists.
 | 
	
		
			
				|  |  | +        if (currentFile.exists()) {
 | 
	
		
			
				|  |  | +            return currentFile;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  |              jar = new JarFile(mcMMO.mcmmo);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              @SuppressWarnings("resource")
 | 
	
		
			
				|  |  | -            InputStream is = jar.getInputStream(jar.getJarEntry("resources/" + theFileName));
 | 
	
		
			
				|  |  | +            InputStream is = jar.getInputStream(jar.getJarEntry("resources/" + fileName));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              byte[] buf = new byte[2048];
 | 
	
		
			
				|  |  |              int nbRead;
 | 
	
	
		
			
				|  | @@ -167,12 +166,16 @@ public class SpoutUtils {
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return currentFile;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * Extract Spout files to the Resources directory.
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    public static void extractFiles() {
 | 
	
		
			
				|  |  | +    public static ArrayList<File> extractFiles() {
 | 
	
		
			
				|  |  | +        ArrayList<File> files = new ArrayList<File>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          // Setup directories
 | 
	
		
			
				|  |  |          new File(spoutDirectory).mkdir();
 | 
	
		
			
				|  |  |          new File(hudDirectory).mkdir();
 | 
	
	
		
			
				|  | @@ -182,19 +185,19 @@ public class SpoutUtils {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // XP Bar images
 | 
	
		
			
				|  |  |          for (int x = 0; x < 255; x++) {
 | 
	
		
			
				|  |  | -            String theFileName;
 | 
	
		
			
				|  |  | +            String fileName;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (x < 10) {
 | 
	
		
			
				|  |  | -                theFileName = "xpbar_inc00" + x + ".png";
 | 
	
		
			
				|  |  | +                fileName = "xpbar_inc00" + x + ".png";
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else if (x < 100) {
 | 
	
		
			
				|  |  | -                theFileName = "xpbar_inc0" + x + ".png";
 | 
	
		
			
				|  |  | +                fileName = "xpbar_inc0" + x + ".png";
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else {
 | 
	
		
			
				|  |  | -                theFileName = "xpbar_inc" + x + ".png";
 | 
	
		
			
				|  |  | +                fileName = "xpbar_inc" + x + ".png";
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            writeFile(theFileName, hudStandardDirectory);
 | 
	
		
			
				|  |  | +            files.add(writeFile(fileName, hudStandardDirectory));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Standard XP Icons
 | 
	
	
		
			
				|  | @@ -203,59 +206,18 @@ public class SpoutUtils {
 | 
	
		
			
				|  |  |                  continue;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            String skillTypeString = StringUtils.getCapitalized(skillType.toString());
 | 
	
		
			
				|  |  | +            String skillName = StringUtils.getCapitalized(skillType.toString());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            writeFile(skillTypeString + ".png", hudStandardDirectory);
 | 
	
		
			
				|  |  | -            writeFile(skillTypeString + "_r.png", hudRetroDirectory);
 | 
	
		
			
				|  |  | +            files.add(writeFile(skillName + ".png", hudStandardDirectory));
 | 
	
		
			
				|  |  | +            files.add(writeFile(skillName + "_r.png", hudRetroDirectory));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Blank icons
 | 
	
		
			
				|  |  | -        writeFile("Icon.png", hudStandardDirectory);
 | 
	
		
			
				|  |  | -        writeFile("Icon_r.png", hudRetroDirectory);
 | 
	
		
			
				|  |  | +        files.add(writeFile("Icon.png", hudStandardDirectory));
 | 
	
		
			
				|  |  | +        files.add(writeFile("Icon_r.png", hudRetroDirectory));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Sound FX
 | 
	
		
			
				|  |  | -        writeFile("level.wav", soundDirectory);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * Get all the Spout files in the Resources folder.
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @return a list of all files is the Resources folder
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    public static ArrayList<File> getFiles() {
 | 
	
		
			
				|  |  | -        ArrayList<File> files = new ArrayList<File>();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // XP BAR
 | 
	
		
			
				|  |  | -        for (int x = 0; x < 255; x++) {
 | 
	
		
			
				|  |  | -            if (x < 10) {
 | 
	
		
			
				|  |  | -                files.add(new File(hudStandardDirectory + "xpbar_inc00" + x + ".png"));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            else if (x < 100) {
 | 
	
		
			
				|  |  | -                files.add(new File(hudStandardDirectory + "xpbar_inc0" + x + ".png"));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            else {
 | 
	
		
			
				|  |  | -                files.add(new File(hudStandardDirectory + "xpbar_inc" + x + ".png"));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // Standard XP Icons
 | 
	
		
			
				|  |  | -        for (SkillType skillType : SkillType.values()) {
 | 
	
		
			
				|  |  | -            if (skillType.isChildSkill()) {
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            String skillTypeString = StringUtils.getCapitalized(skillType.toString());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            files.add(new File(hudStandardDirectory + skillTypeString + ".png"));
 | 
	
		
			
				|  |  | -            files.add(new File(hudRetroDirectory + skillTypeString + "_r.png"));
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // Blank icons
 | 
	
		
			
				|  |  | -        files.add(new File(hudStandardDirectory + "Icon.png"));
 | 
	
		
			
				|  |  | -        files.add(new File(hudRetroDirectory + "Icon_r.png"));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // Level SFX
 | 
	
		
			
				|  |  | -        files.add(new File(soundDirectory + "level.wav"));
 | 
	
		
			
				|  |  | +        files.add(writeFile("level.wav", soundDirectory));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return files;
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -459,7 +421,6 @@ public class SpoutUtils {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public static void preCacheFiles() {
 | 
	
		
			
				|  |  | -        extractFiles();
 | 
	
		
			
				|  |  | -        SpoutManager.getFileManager().addToPreLoginCache(mcMMO.p, getFiles());
 | 
	
		
			
				|  |  | +        SpoutManager.getFileManager().addToPreLoginCache(mcMMO.p, extractFiles());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |