diff --git a/src/main/java/de/fanta/challenges/SaveSlot.java b/src/main/java/de/fanta/challenges/SaveSlot.java new file mode 100644 index 0000000..8260ef7 --- /dev/null +++ b/src/main/java/de/fanta/challenges/SaveSlot.java @@ -0,0 +1,22 @@ +package de.fanta.challenges; + +import java.nio.file.Path; + +public enum SaveSlot { + + SLOT_1("1"), + SLOT_2("2"), + SLOT_3("3"), + SLOT_AUTO("autosave"); + + private final String slot; + + SaveSlot(String prefix) { + this.slot = prefix; + } + + public String getSlot() { + return slot; + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java index 7a20dd9..970d07a 100644 --- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java @@ -1,19 +1,16 @@ package de.fanta.challenges.commands.challenges; import de.fanta.challenges.Challenges; +import de.fanta.challenges.guis.savegui.ChallengeSaveGui; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.Config; -import de.fanta.challenges.utils.SaveWorldUtils; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; -import org.bukkit.Bukkit; +import de.iani.playerUUIDCache.CachedPlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.UUID; -import java.util.logging.Level; - public class ChallengesSaveCommand extends SubCommand { private final Challenges plugin; @@ -24,52 +21,27 @@ @Override public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { - if (!(sender instanceof Player p)) { + if (!(sender instanceof Player player)) { ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } - - if (!args.hasNext()) { - if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { - UUID uuid = p.getUniqueId(); - if (Config.getBoolean("firsttimerstart")) { - ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); - try { - SaveWorldUtils.saveWorld(uuid.toString(), false); - } catch (Exception ex) { - Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); - ChatUtil.sendErrorMessage(sender, "Welt konnte nicht gespeichert werden!"); - return true; - } - ChatUtil.sendNormalMessage(sender, "Welt wurde erfolgreich gespeichert!"); - } else { - ChatUtil.sendErrorMessage(sender, "Die Map wurde noch nicht gestartet!"); - } - return true; - } else if (plugin.getCurrentEditor() != null) { - ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); - return true; - } else { - ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); - ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); - return true; - } - } else { - if (sender.hasPermission("challenges.save.admin")) { - String next = args.getNext(); - ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); - try { - SaveWorldUtils.saveWorld(next.toLowerCase(), false); - } catch (Exception ex) { - Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); - ChatUtil.sendErrorMessage(sender, "Welt konnte nicht gespeichert werden!"); - return true; - } - ChatUtil.sendNormalMessage(sender, "Welt wurde erfolgreich gespeichert!"); - } else { - ChatUtil.sendErrorMessage(sender, "Keine rechte!"); - } + if (!Config.getBoolean("firsttimerstart")) { + ChatUtil.sendWarningMessage(player, "Du kannst nur gestartete Maps Speicher."); + return true; } + CachedPlayer savePlayer; + if (args.hasNext()) { + if (!player.hasPermission("challenge.save.other")) { + ChatUtil.sendErrorMessage(player, "Keine Rechte! (Du kannst nur eigene maps Laden)"); + return true; + } + String savePlayerName = args.getNext(); + savePlayer = plugin.getPlayerUUIDCache().getPlayer(savePlayerName); + } else { + savePlayer = plugin.getPlayerUUIDCache().getPlayer(player.getUniqueId()); + } + + new ChallengeSaveGui(player, savePlayer).open(); return true; } } diff --git a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java index 57a5a70..dd33da3 100644 --- a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java +++ b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java @@ -1,6 +1,7 @@ package de.fanta.challenges.commands.reset; import de.fanta.challenges.Challenges; +import de.fanta.challenges.SaveSlot; import de.fanta.challenges.ServerType; import de.fanta.challenges.events.ChallengeEventStatusChangedEvent; import de.fanta.challenges.events.EventStatusChangedEvent; @@ -64,7 +65,7 @@ plugin.saveConfig(); plugin.getBackpack().saveInventoryToConfig(); if (Config.getBoolean("firsttimerstart")) { - SaveWorldUtils.saveWorld(plugin.getFirstEditor().getUniqueId().toString(), true); + SaveWorldUtils.saveWorld(plugin.getFirstEditor().getUniqueId().toString(), SaveSlot.SLOT_AUTO); } Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, Bukkit::shutdown, 60); diff --git a/src/main/java/de/fanta/challenges/guis/savegui/ChallengeSaveConfirmGui.java b/src/main/java/de/fanta/challenges/guis/savegui/ChallengeSaveConfirmGui.java new file mode 100644 index 0000000..a5d8f7d --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/savegui/ChallengeSaveConfirmGui.java @@ -0,0 +1,75 @@ +package de.fanta.challenges.guis.savegui; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.SaveSlot; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.SaveWorldUtils; +import de.fanta.challenges.utils.guiutils.AbstractWindow; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; + +import java.util.HashMap; +import java.util.UUID; + +public class ChallengeSaveConfirmGui extends AbstractWindow { + private static final Challenges plugin = Challenges.getPlugin(); + + private static final int JA_INDEX = 0; + private static final int ITEM_INDEX = 2; + private static final int NEIN_INDEX = 4; + + private static final int INVENTORY_SIZE = 5; + private static final HashMap playerItemList = new HashMap<>(); + private static final HashMap savePlayerList = new HashMap<>(); + private static final HashMap saveSlotList = new HashMap<>(); + + public ChallengeSaveConfirmGui(Player player, UUID savePlayerID, SaveSlot saveSlot, ItemStack displayItem) { + super(player, Bukkit.createInventory(player, InventoryType.HOPPER, plugin.getGUIPREFIX() + " >> Save überschreiben?")); + playerItemList.put(player.getUniqueId(), displayItem); + savePlayerList.put(player.getUniqueId(), savePlayerID); + saveSlotList.put(player.getUniqueId(), saveSlot); + } + + @Override + protected void rebuildInventory() { + for (int i = 0; i < INVENTORY_SIZE; i++) { + ItemStack item; + switch (i) { + case JA_INDEX -> item = GUIUtils.createGuiItem(Material.LIME_CONCRETE, ChatUtil.GREEN + "Ja", true); + case ITEM_INDEX -> item = playerItemList.get(getPlayer().getUniqueId()); + case NEIN_INDEX -> item = GUIUtils.createGuiItem(Material.RED_CONCRETE, ChatUtil.RED + "Nein", true); + default -> item = GUIUtils.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + Player player = getPlayer(); + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + int slot = event.getSlot(); + switch (slot) { + case JA_INDEX -> { + getPlayer().closeInventory(); + SaveWorldUtils.saveWorld(player, savePlayerList.get(player.getUniqueId()).toString(), saveSlotList.get(player.getUniqueId())); + } + case NEIN_INDEX -> getPlayer().closeInventory(); + default -> { + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/guis/savegui/ChallengeSaveGui.java b/src/main/java/de/fanta/challenges/guis/savegui/ChallengeSaveGui.java new file mode 100644 index 0000000..e7c92d7 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/savegui/ChallengeSaveGui.java @@ -0,0 +1,197 @@ +package de.fanta.challenges.guis.savegui; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.SaveSlot; +import de.fanta.challenges.ServerType; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.SaveWorldUtils; +import de.fanta.challenges.utils.guiutils.AbstractWindow; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import de.iani.cubesideutils.StringUtil; +import de.iani.playerUUIDCache.CachedPlayer; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileTime; +import java.util.HashMap; +import java.util.UUID; + +public class ChallengeSaveGui extends AbstractWindow { + private static final Challenges plugin = Challenges.getPlugin(); + private static final int SAVE_1_INDEX = 1; + private static final int SAVE_2_INDEX = 3; + private static final int SAVE_3_INDEX = 5; + private static final int SAVE_AUTO_INDEX = 7; + private static final int WINDOW_SIZE = 9; + private static final HashMap savePlayerList = new HashMap<>(); + + public ChallengeSaveGui(Player player, CachedPlayer savePlayer) { + super(player, Bukkit.createInventory(null, WINDOW_SIZE, plugin.getGUIPREFIX() + " >> Map laden")); + savePlayerList.put(player.getUniqueId(), savePlayer.getUniqueId()); + } + + @Override + protected void rebuildInventory() { + Player player = getPlayer(); + UUID savePlayerID = savePlayerList.get(player.getUniqueId()); + File save1; + File save2; + File save3; + File saveAuto; + if (plugin.getServerType() != ServerType.ADVENTURE) { + save1 = new File("/home/minecraft/saves/" + savePlayerID + "/1"); + save2 = new File("/home/minecraft/saves/" + savePlayerID + "/2"); + save3 = new File("/home/minecraft/saves/" + savePlayerID + "/3"); + saveAuto = new File("/home/minecraft/saves/" + savePlayerID + "/autosave"); + } else { + save1 = new File("/home/minecraft/Adventure-saves/" + savePlayerID + "/1"); + save2 = new File("/home/minecraft/Adventure-saves/" + savePlayerID + "/2"); + save3 = new File("/home/minecraft/Adventure-saves/" + savePlayerID + "/3"); + saveAuto = new File("/home/minecraft/Adventure-saves/" + savePlayerID + "/autosave"); + } + + for (int i = 0; i < WINDOW_SIZE; i++) { + ItemStack item; + switch (i) { + case SAVE_1_INDEX -> { + if (player.hasPermission("challenge.save.slot1")) { + if (save1.isDirectory()) { + item = GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 1", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(save1)); + } else { + item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); + } + } else { + item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte"); + } + } + + case SAVE_2_INDEX -> { + if (player.hasPermission("challenge.save.slot2")) { + if (save2.isDirectory()) { + item = GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 2", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(save2)); + } else { + item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); + } + } else { + item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP"); + } + } + + case SAVE_3_INDEX -> { + if (player.hasPermission("challenge.save.slot3")) { + if (save3.isDirectory()) { + item = GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 3", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(save3)); + } else { + item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); + } + } else { + item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP"); + } + } + + case SAVE_AUTO_INDEX -> { + if (player.hasPermission("challenge.save.slotauto")) { + if (saveAuto.isDirectory()) { + item = GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(saveAuto)); + } else { + item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "AutoSave"); + } + } else { + item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte"); + } + } + default -> item = GUIUtils.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + Player player = getPlayer(); + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + Player p = getPlayer(); + UUID savePlayerID = savePlayerList.get(p.getUniqueId()); + File save1; + File save2; + File save3; + if (plugin.getServerType() != ServerType.ADVENTURE) { + save1 = new File("/home/minecraft/saves/" + savePlayerID + "/1"); + save2 = new File("/home/minecraft/saves/" + savePlayerID + "/2"); + save3 = new File("/home/minecraft/saves/" + savePlayerID + "/3"); + } else { + save1 = new File("/home/minecraft/Adventure-saves/" + savePlayerID + "/1"); + save2 = new File("/home/minecraft/Adventure-saves/" + savePlayerID + "/2"); + save3 = new File("/home/minecraft/Adventure-saves/" + savePlayerID + "/3"); + } + + int slot = event.getSlot(); + switch (slot) { + case SAVE_1_INDEX -> { + if (!p.hasPermission("challenge.save.slot1")) { + ChatUtil.sendErrorMessage(p, "Für diesen Slot hast du keine Rechte!"); + return; + } + if (!save1.isDirectory()) { + player.closeInventory(); + SaveWorldUtils.saveWorld(player, savePlayerID.toString(), SaveSlot.SLOT_1); + return; + } + new ChallengeSaveConfirmGui(player, savePlayerID, SaveSlot.SLOT_1, event.getCurrentItem()).open(); + } + case SAVE_2_INDEX -> { + if (!p.hasPermission("challenge.save.slot2")) { + ChatUtil.sendErrorMessage(p, "Für diesen Slot brauchst du VIP!"); + return; + } + if (!save2.isDirectory()) { + player.closeInventory(); + SaveWorldUtils.saveWorld(player, savePlayerID.toString(), SaveSlot.SLOT_2); + return; + } + new ChallengeSaveConfirmGui(player, savePlayerID, SaveSlot.SLOT_2, event.getCurrentItem()).open(); + } + case SAVE_3_INDEX -> { + if (!p.hasPermission("challenge.save.slot3")) { + player.closeInventory(); + ChatUtil.sendErrorMessage(p, "Für diesen Slot brauchst du VIP!"); + return; + } + if (!save3.isDirectory()) { + SaveWorldUtils.saveWorld(player, savePlayerID.toString(), SaveSlot.SLOT_3); + return; + } + new ChallengeSaveConfirmGui(player, savePlayerID, SaveSlot.SLOT_3, event.getCurrentItem()).open(); + } + default -> { + } + } + } + + private static String getFileDate(File file) { + FileTime fileTime; + try { + BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class); + fileTime = attr.creationTime(); + } catch (IOException e) { + throw new RuntimeException(e); + } + return StringUtil.formatDate(fileTime.toMillis()); + } + +} diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index 65fa2e2..6cf1beb 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -1,6 +1,7 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; +import de.fanta.challenges.SaveSlot; import de.fanta.challenges.ServerType; import de.fanta.challenges.challenges.ChallengeEvents.DeathrunChallengeEvent; import de.fanta.challenges.events.PlayerCountChangedEvent; @@ -117,7 +118,7 @@ if (Bukkit.getServer().getOnlinePlayers().size() - 1 == 0) { if (Config.getBoolean("firsttimerstart")) { - SaveWorldUtils.saveWorld(plugin.getFirstEditor().getUniqueId().toString(), true); + SaveWorldUtils.saveWorld(plugin.getFirstEditor().getUniqueId().toString(), SaveSlot.SLOT_AUTO); plugin.startResetTask(); } else { if (!plugin.isWaitingForShutdown()) { diff --git a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java index bffe8ff..c3de83f 100644 --- a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java +++ b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java @@ -2,6 +2,7 @@ import de.cubeside.nmsutils.NMSUtils; import de.fanta.challenges.Challenges; +import de.fanta.challenges.SaveSlot; import de.fanta.challenges.ServerType; import de.fanta.challenges.challenges.AllItemsChallenge; import org.apache.commons.io.FileUtils; @@ -9,6 +10,7 @@ import org.bukkit.World; import org.bukkit.entity.Player; +import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.util.logging.Level; @@ -17,49 +19,53 @@ private static final Challenges plugin = Challenges.getPlugin(); - public static void saveWorld(String uuid, Boolean autosafe) { - if (plugin.getServerType() == ServerType.CHALLENGE_EVENT) { - return; - } - Challenges.getPlugin().getConfig().set("timertime", Challenges.getPlugin().getTimer().getTime()); - Challenges.getPlugin().saveConfig(); - Challenges.getPlugin().getConfig().set("backpack_size", Challenges.getPlugin().getBackpack().getSize() / 9); - Challenges.getPlugin().saveConfig(); - Challenges.getPlugin().getBackpack().saveInventoryToConfig(); - AllItemsChallenge.saveItems(); - World world_world = Bukkit.getWorlds().get(0); - World world_nether = Bukkit.getWorlds().get(1); - World world_end = Bukkit.getWorlds().get(2); - world_world.save(); - world_nether.save(); - world_end.save(); - for (Player p : Bukkit.getOnlinePlayers()) { - p.saveData(); - } - NMSUtils nms = plugin.getNMSUtils(); - if (nms != null) { - nms.getWorldUtils().saveWorldNow(world_world); - nms.getWorldUtils().saveWorldNow(world_end); - nms.getWorldUtils().saveWorldNow(world_nether); - } - File dir = new File(uuid); - File configs = new File("plugins/Challenges"); - File end = new File("world_the_end"); - File nether = new File("world_nether"); - File world = new File("world"); - File saveend = new File(uuid + "/world_the_end"); - File savenether = new File(uuid + "/world_nether"); - File saveworld = new File(uuid + "/world"); - File saveconfigs = new File(uuid + "/Challenges"); - if (plugin.getServerType() == ServerType.CHALLENGE || plugin.getServerType() == ServerType.CHALLENGE_LOAD) { - File loaddir; - if (autosafe) { - loaddir = new File("/home/minecraft/saves/" + uuid + "/autosave/"); - } else { - loaddir = new File("/home/minecraft/saves/" + uuid + "/1/"); + public static void saveWorld(String saveID, SaveSlot saveSlot) { + saveWorld(null, saveID, saveSlot); + } + + public static void saveWorld(@Nullable Player player, String saveID, SaveSlot saveSlot) { + try { + if (plugin.getServerType() == ServerType.CHALLENGE_EVENT) { + if (player != null) { + ChatUtil.sendErrorMessage(player, "Challenge Events können nicht gespeichert werden."); + } + return; } - if (loaddir.isDirectory()) { - loaddir.delete(); + Challenges.getPlugin().getConfig().set("timertime", Challenges.getPlugin().getTimer().getTime()); + Challenges.getPlugin().saveConfig(); + Challenges.getPlugin().getConfig().set("backpack_size", Challenges.getPlugin().getBackpack().getSize() / 9); + Challenges.getPlugin().saveConfig(); + Challenges.getPlugin().getBackpack().saveInventoryToConfig(); + AllItemsChallenge.saveItems(); + World world_world = Bukkit.getWorlds().get(0); + World world_nether = Bukkit.getWorlds().get(1); + World world_end = Bukkit.getWorlds().get(2); + world_world.save(); + world_nether.save(); + world_end.save(); + for (Player p : Bukkit.getOnlinePlayers()) { + p.saveData(); + } + NMSUtils nms = plugin.getNMSUtils(); + if (nms != null) { + nms.getWorldUtils().saveWorldNow(world_world); + nms.getWorldUtils().saveWorldNow(world_end); + nms.getWorldUtils().saveWorldNow(world_nether); + } + File dir = new File(saveID); + File configs = new File("plugins/Challenges"); + File end = new File("world_the_end"); + File nether = new File("world_nether"); + File world = new File("world"); + File saveend = new File(saveID + "/world_the_end"); + File savenether = new File(saveID + "/world_nether"); + File saveworld = new File(saveID + "/world"); + File saveconfigs = new File(saveID + "/Challenges"); + File saveFolder; + if (plugin.getServerType() != ServerType.ADVENTURE) { + saveFolder = new File("/home/minecraft/saves/" + saveID + "/" + saveSlot.getSlot() + "/"); + } else { + saveFolder = new File("/home/minecraft/Adventure-saves/" + saveID + "/" + saveSlot.getSlot() + "/"); } try { FileUtils.forceMkdir(dir); @@ -67,36 +73,24 @@ FileUtils.copyDirectory(end, saveend); FileUtils.copyDirectory(nether, savenether); FileUtils.copyDirectory(world, saveworld); - if (loaddir.isDirectory()) { - FileUtils.deleteDirectory(loaddir); + if (saveFolder.isDirectory()) { + FileUtils.deleteDirectory(saveFolder); } - FileUtils.moveDirectory(dir, loaddir); + FileUtils.moveDirectory(dir, saveFolder); } catch (IOException ex) { Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); - } - } else if (plugin.getServerType() == ServerType.ADVENTURE) { - File loaddir; - if (autosafe) { - loaddir = new File("/home/minecraft/Adventure-saves/" + uuid + "/autosave/"); - } else { - loaddir = new File("/home/minecraft/Adventure-saves/" + uuid + "/1/"); - } - if (loaddir.isDirectory()) { - loaddir.delete(); - } - try { - FileUtils.forceMkdir(dir); - FileUtils.copyDirectory(configs, saveconfigs); - FileUtils.copyDirectory(end, saveend); - FileUtils.copyDirectory(nether, savenether); - FileUtils.copyDirectory(world, saveworld); - if (dir.isDirectory()) { - FileUtils.deleteDirectory(loaddir); + if (player != null) { + ChatUtil.sendErrorMessage(Bukkit.getPlayer(saveID), "Map konnte nicht richtig gespeichert werden, bitte versuche es noch einmal"); } - FileUtils.moveDirectory(dir, loaddir); - } catch (IOException ex) { - Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); - ChatUtil.sendErrorMessage(Bukkit.getPlayer(uuid), "Map konnte nicht richtig gespeichert werden, bitte versuche es noch einmal"); + return; + } + if (player != null) { + ChatUtil.sendNormalMessage(player, "Welt wurde erfolgreich auf slot " + saveSlot.getSlot() + " gespeichert!"); + } + } catch (Exception ex) { + plugin.getLogger().log(Level.SEVERE, "Welt konnte nicht gespeichert werden", ex); + if (player != null) { + ChatUtil.sendErrorMessage(player, "Welt konnte nicht gespeichert werden!"); } } }