/** Plays the Error sound at given location depending on the machine TEMPORARY SOLUTION~~~ */ public void playErrorSound(Location machineLocation, MachineType machineType) { Manager manager; switch (machineType) { case OREGIN: manager = getManager(OreGinManager.class); break; case CLOAKER: manager = getManager(CloakerManager.class); break; default: manager = null; break; } if (manager != null) { Machine machine = manager.getMachine(machineLocation); if (machine != null) { switch (machineType) { case OREGIN: OreGinSoundCollection.getErrorSound().playSound(machineLocation); break; case CLOAKER: CloakerSoundCollection.getErrorSound().playSound(machineLocation); break; case SMELTER: break; } } } }
/** Returns whether a machine exists at given location in any manager */ public boolean machineExistsAt(Location location) { for (Manager manager : managers) { if (manager.machineExistsAt(location)) { return true; } } return false; }
/** Load file */ private static void load(Manager managerInterface, File file) { try { managerInterface.load(file); } catch (FileNotFoundException exception) { Bukkit.getServer().getLogger().info(file.getName() + " does not exist! Creating file!"); } catch (IOException exception) { throw new RuntimeException("Failed to load " + file.getPath(), exception); } try { managerInterface.save(file); } catch (IOException exception) { throw new RuntimeException("Failed to create " + file.getPath(), exception); } }
/** Save file */ private static void save(Manager manager, File file) { try { File newFile = new File(file.getAbsolutePath() + ".new"); File bakFile = new File(file.getAbsolutePath() + ".bak"); manager.save(newFile); if (bakFile.exists()) { bakFile.delete(); } if (file.exists() && !file.renameTo(bakFile)) { throw new IOException( "Failed to rename " + file.getAbsolutePath() + " to " + bakFile.getAbsolutePath()); } if (!newFile.renameTo(file)) { throw new IOException( "Failed to rename " + newFile.getAbsolutePath() + " to " + file.getAbsolutePath()); } } catch (IOException exception) { throw new RuntimeException("Failed to save to " + file.getAbsolutePath(), exception); } }
/** Loads all managers */ private void loadManagers() { for (Manager manager : managers) { load(manager, getSavesFile(manager.getSavesFileName())); } }
/** Saves all managers */ private void saveManagers() { for (Manager manager : managers) { save(manager, getSavesFile(manager.getSavesFileName())); } }