public static File getWorldFolderFromSelection(GuiListWorldSelectionEntry entry){ if(worldfolder.containsKey(entry)){ return worldfolder.get(entry); } try{ File image = null; for(Field field : GuiListWorldSelectionEntry.class.getDeclaredFields()){ if(field.getType() == File.class){ field.setAccessible(true); image = (File) field.get(entry); break; } } if(image == null) return null; File folder = image.getParentFile(); worldfolder.put(entry, folder); return folder; }catch(Exception e){ e.printStackTrace(); } return null; }
@Override public void selectWorld(GuiListWorldSelectionEntry entry){ super.selectWorld(entry); currently_selected_world = entry; // boolean flag = entry != null; File folder = ReflectionUtil.getWorldFolderFromSelection(entry); //Pretty hacky way of getting the world file. I get the image for the world and then get the parent. if(folder == null){ readDescription.enabled = false; return; } if(folder.getParentFile().getName().equals("saves")){ //Make sure I am in the saves folder for(File f : folder.listFiles()){ if(f.getName().equals("desc.txt")){ try{ FileReader fr = new FileReader(f); BufferedReader reader = new BufferedReader(fr); List<String> lines = Lists.newArrayList(); String line; while((line = reader.readLine()) != null){ lines.add(line); } desc_lines = lines; readDescription.enabled = true; fr.close(); reader.close(); }catch(Exception e){ e.printStackTrace(); } return; } } } readDescription.enabled = false; }