private void writebackObjectFile(ObjectFile dataStore, ObjectFileType fileType) throws Error { File w3u = new File("./temp/new_war3map." + fileType.getExt()); if (w3u.exists()) { w3u.delete(); } dataStore.writeTo(w3u); try { Files.write( dataStore.exportToWurst(), new File("./temp/exportedObjects_" + fileType.getExt() + ".wurst"), Charsets.UTF_8); } catch (IOException e1) { WLogger.severe(e1); } try { LadikMpq editor = MpqEditorFactory.getEditor(); String filenameInMpq = "war3map." + fileType.getExt(); editor.deleteFile(mapFile, filenameInMpq); int tries = 1; while (tries < 20) { editor.insertFile(mapFile, filenameInMpq, w3u); File extr; try { extr = editor.extractFile(mapFile, filenameInMpq); } catch (Error e) { extr = null; } if (extr != null && extr.exists()) { break; } System.gc(); tries++; } if (tries >= 20) { JOptionPane.showMessageDialog(null, "Could not insert " + fileType.getExt()); } } catch (Exception e) { WLogger.severe(e); throw new Error(e); } }