diff --git a/pom.xml b/pom.xml index 0bfe29b..2166e1c 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 de.fanta.challenges ChallengesJoinEntities - 1.18.2 + 1.19 UTF-8 UTF-8 @@ -27,7 +27,7 @@ io.papermc.paper paper-api - 1.18.2-R0.1-SNAPSHOT + 1.19-R0.1-SNAPSHOT provided diff --git a/src/main/java/de/fanta/challengesjoinentities/Server.java b/src/main/java/de/fanta/challengesjoinentities/Server.java index b5385be..a98e007 100644 --- a/src/main/java/de/fanta/challengesjoinentities/Server.java +++ b/src/main/java/de/fanta/challengesjoinentities/Server.java @@ -65,16 +65,13 @@ return this.gPLocation; } - public void loadSaved(Player p, Boolean isAutosave) { + public void loadSaved(Player p, String slot) { this.online = true; serverPlayers.put(this, p.getUniqueId()); UUID uuid = p.getUniqueId(); File dir; - if (isAutosave) { - dir = new File("/home/minecraft/" + this.serverType.getDir() + "/" + uuid + "/autosave"); - } else { - dir = new File("/home/minecraft/" + this.serverType.getDir() + "/" + uuid + "/1"); - } + dir = new File("/home/minecraft/" + this.serverType.getDir() + "/" + uuid + "/" + slot); + if (!dir.isDirectory()) { ChatUtil.sendErrorMessage(p, "Du hast noch keine Map gespeichert!"); this.online = false; @@ -82,24 +79,18 @@ return; } - if (isAutosave) { - load(p, this.serverType.getDir(), uuid + "/autosave", getMapVersion(new File(dir + "/Challenges/serverconfig.yml"))); //TODO LOAD VERSION FROM ADVENTURE CONFIG - } else { - load(p, this.serverType.getDir(), uuid + "/1", getMapVersion(new File(dir + "/Challenges/serverconfig.yml"))); //TODO LOAD VERSION FROM ADVENTURE CONFIG - } + + load(p, this.serverType.getDir(), uuid + "/" + slot, getMapVersion(new File(dir + "/Challenges/serverconfig.yml"))); //TODO LOAD VERSION FROM ADVENTURE CONFIG + } - public void loadSaved(Player p, String mapname, Boolean isAutosave) { + public void loadSaved(Player p, String mapname, String slot) { this.online = true; serverPlayers.put(this, p.getUniqueId()); File dir; - if (isAutosave) { - dir = new File("/home/minecraft/" + this.serverType.getDir() + "/" + mapname + "/autosave"); - mapname = mapname + "/autosave"; - } else { - dir = new File("/home/minecraft/" + this.serverType.getDir() + "/" + mapname + "/1"); - mapname = mapname + "/1"; - } + dir = new File("/home/minecraft/" + this.serverType.getDir() + "/" + mapname + "/" + slot); + mapname = mapname + "/" + slot; + if (!dir.isDirectory()) { ChatUtil.sendErrorMessage(p, "Map " + mapname + " nicht gefunden!"); @@ -124,44 +115,46 @@ } public void load(Player p, String serverTypeDir, String targetDir, String ServerVersion) { - File configs = new File("/home/minecraft/" + this.dir + "/plugins/Challenges"); - File end = new File("/home/minecraft/" + this.dir + "/world_the_end"); - File nether = new File("/home/minecraft/" + this.dir + "/world_nether"); - File world = new File("/home/minecraft/" + this.dir + "/world"); - File mlgworld = new File("/home/minecraft/" + this.dir + "/mlg_challenge"); - File serverJar = new File("/home/minecraft/" + this.dir + "/paper.jar"); - File saveServerJar = new File("/home/minecraft/ServerJars/" + ServerVersion + "/paper.jar"); - File saveend = new File("/home/minecraft/" + serverTypeDir + "/" + targetDir + "/world_the_end"); - File savenether = new File("/home/minecraft/" + serverTypeDir + "/" + targetDir + "/world_nether"); - File saveworld = new File("/home/minecraft/" + serverTypeDir + "/" + targetDir + "/world"); - File saveconfigs = new File("/home/minecraft/" + serverTypeDir + "/" + targetDir + "/Challenges"); - ChatUtil.sendNormalMessage(p, "Versuche Map zu laden!"); - try { - if (world.isDirectory()) { - FileUtils.deleteDirectory(world); - FileUtils.deleteDirectory(end); - FileUtils.deleteDirectory(nether); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + File configs = new File("/home/minecraft/" + this.dir + "/plugins/Challenges"); + File end = new File("/home/minecraft/" + this.dir + "/world_the_end"); + File nether = new File("/home/minecraft/" + this.dir + "/world_nether"); + File world = new File("/home/minecraft/" + this.dir + "/world"); + File mlgworld = new File("/home/minecraft/" + this.dir + "/mlg_challenge"); + File serverJar = new File("/home/minecraft/" + this.dir + "/paper.jar"); + File saveServerJar = new File("/home/minecraft/ServerJars/" + ServerVersion + "/paper.jar"); + File saveend = new File("/home/minecraft/" + serverTypeDir + "/" + targetDir + "/world_the_end"); + File savenether = new File("/home/minecraft/" + serverTypeDir + "/" + targetDir + "/world_nether"); + File saveworld = new File("/home/minecraft/" + serverTypeDir + "/" + targetDir + "/world"); + File saveconfigs = new File("/home/minecraft/" + serverTypeDir + "/" + targetDir + "/Challenges"); + ChatUtil.sendNormalMessage(p, "Versuche Map zu laden!"); + try { + if (world.isDirectory()) { + FileUtils.deleteDirectory(world); + FileUtils.deleteDirectory(end); + FileUtils.deleteDirectory(nether); + } + if (mlgworld.isDirectory()){ + FileUtils.deleteDirectory(mlgworld); + } + if (serverJar.exists()) { + FileUtils.delete(serverJar); + } + FileUtils.copyFile(saveServerJar, serverJar); + FileUtils.copyDirectory(saveconfigs, configs); + FileUtils.copyDirectory(saveworld, world); + FileUtils.copyDirectory(savenether, nether); + FileUtils.copyDirectory(saveend, end); + } catch (IOException e) { + e.printStackTrace(); + ChatUtil.sendErrorMessage(p, "Map konnte nicht geladen werden!"); + this.online = false; + serverPlayers.remove(this); + return; } - if (mlgworld.isDirectory()){ - FileUtils.deleteDirectory(mlgworld); - } - if (serverJar.exists()) { - FileUtils.delete(serverJar); - } - FileUtils.copyFile(saveServerJar, serverJar); - FileUtils.copyDirectory(saveconfigs, configs); - FileUtils.copyDirectory(saveworld, world); - FileUtils.copyDirectory(savenether, nether); - FileUtils.copyDirectory(saveend, end); - } catch (IOException e) { - e.printStackTrace(); - ChatUtil.sendErrorMessage(p, "Map konnte nicht geladen werden!"); - this.online = false; - serverPlayers.remove(this); - return; - } - ChatUtil.sendNormalMessage(p, "Map wurde geladen! Server wird nun gestartet!"); - start(p); + ChatUtil.sendNormalMessage(p, "Map wurde geladen! Server wird nun gestartet!"); + start(p); + }); } public void start(Player player) { @@ -214,7 +207,6 @@ } else { serverVersion = "latest"; } - System.out.println(serverVersion); return serverVersion; } } \ No newline at end of file diff --git a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java index 6a9a9cb..a78dfbc 100644 --- a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java @@ -75,6 +75,7 @@ if (event.isRightClick()) { getPlayer().sendMessage(ChallengesJoinEntities.PREFIX_COMPONENT.append(Component.text("MapLink: klick mich :)", TextColor.color(Color.YELLOW.asRGB())).clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, map.getWebLink())))); } else if (!Server.serverPlayers.containsValue(p.getUniqueId())) { + getPlayer().closeInventory(); this.plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadNewAdventure(p, category.getName(), map.getName()), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); diff --git a/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureLoadCommand.java b/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureLoadCommand.java index f8faf9e..35a4e33 100644 --- a/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureLoadCommand.java +++ b/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureLoadCommand.java @@ -25,16 +25,25 @@ if (!args.hasNext()) { AdventureLoadGUI.createloadGUI(p); return true; - } - String next = args.getNext(); - Boolean autosave = Boolean.parseBoolean(args.getNext()); - if (sender.hasPermission("challenges.load.admin")) { - if (!Server.serverPlayers.containsValue(p.getUniqueId())) { - this.plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, next.toLowerCase(), autosave), () -> ChatUtil.sendErrorMessage(sender, "Aktuell ist kein Server Frei!")); - } else { - ChatUtil.sendErrorMessage(sender, "Du kannst nur einen Server starten!"); + } else { + if (sender.hasPermission("challenges.load.admin")) { + if (args.remaining() != 1 && args.remaining() != 2) { + ChatUtil.sendWarningMessage(p, "/adventure load [key] [Slot]"); + return true; + } + + String next = args.getNext(); + String slot = args.getNext(); + if (!Server.serverPlayers.containsValue(p.getUniqueId())) { + this.plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, next.toLowerCase(), slot), () -> ChatUtil.sendErrorMessage(sender, "Aktuell ist kein Server Frei!")); + } else { + ChatUtil.sendErrorMessage(sender, "Du kannst nur einen Server starten!"); + } } } + + + return true; } } diff --git a/src/main/java/de/fanta/challengesjoinentities/commands/ChallengesCommand/ChallengesloadCommand.java b/src/main/java/de/fanta/challengesjoinentities/commands/ChallengesCommand/ChallengesloadCommand.java index 343cf6b..6d56750 100644 --- a/src/main/java/de/fanta/challengesjoinentities/commands/ChallengesCommand/ChallengesloadCommand.java +++ b/src/main/java/de/fanta/challengesjoinentities/commands/ChallengesCommand/ChallengesloadCommand.java @@ -26,11 +26,17 @@ ChallengeLoadGUI.createloadGUI(p); return true; } - String next = args.getNext(); - Boolean autosave = Boolean.parseBoolean(args.getNext()); if (sender.hasPermission("challenges.load.admin")) { + if (args.remaining() != 1 && args.remaining() != 2) { + ChatUtil.sendWarningMessage(p, "/challenges load [key] [Slot]"); + return true; + } + + String next = args.getNext(); + String slot = args.getNext(); + if (!Server.serverPlayers.containsValue(p.getUniqueId())) { - this.plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, next.toLowerCase(), autosave), () -> ChatUtil.sendErrorMessage(sender, "Aktuell ist kein Server Frei!")); + this.plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, next.toLowerCase(), slot), () -> ChatUtil.sendErrorMessage(sender, "Aktuell ist kein Server Frei!")); } else { ChatUtil.sendErrorMessage(sender, "Du kannst nur einen Server starten!"); } diff --git a/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java b/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java index a867933..9380be1 100644 --- a/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java @@ -59,14 +59,16 @@ if (RESET_GUI.equals(e.getClickedInventory())) { if (slot == SAVE_1_INDEX) { if (!Server.serverPlayers.containsValue(p.getUniqueId())) { - plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, false), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); + plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, "1"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); } } if (slot == AUTOSAVE_INDEX) { if (!Server.serverPlayers.containsValue(p.getUniqueId())) { - plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, true), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); + plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, "autosave"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); } diff --git a/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java b/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java index 76246ea..598d94e 100644 --- a/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java @@ -11,7 +11,6 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -22,51 +21,86 @@ private static final ChallengesJoinEntities plugin = ChallengesJoinEntities.getPlugin(); private static final int SAVE_1_INDEX = 1; - private static final int AUTOSAVE_INDEX = 3; + private static final int SAVE_2_INDEX = 3; + private static final int SAVE_3_INDEX = 5; + private static final int AUTOSAVE_INDEX = 7; - public static final int INVENTORY_SIZE = 5; - public static final Inventory RESET_GUI = Bukkit.createInventory(null, InventoryType.HOPPER, ChallengesJoinEntities.CHALLENGEGUIPREFIX + " >> Challenge laden"); + + public static final Inventory CHALLENGE_LOAD_GUI = Bukkit.createInventory(null, 9, ChallengesJoinEntities.CHALLENGEGUIPREFIX + " >> Challenge laden"); + public static final int INVENTORY_SIZE = CHALLENGE_LOAD_GUI.getSize(); + public static void createloadGUI(Player p) { - File adventuresave = new File("/home/minecraft/saves/" + p.getUniqueId() + "/1"); + File adventuresave1 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/1"); + File adventuresave2 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/2"); + File adventuresave3 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/3"); File adventureautosave = new File("/home/minecraft/saves/" + p.getUniqueId() + "/autosave"); - if (adventuresave.isDirectory()) { - RESET_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatColor.GREEN + "Save 1", ChatColor.GREEN + "Klicken zum laden.")); + if (adventuresave1.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatColor.GREEN + "Save 1", ChatColor.GREEN + "Klicken zum laden.")); } else { - RESET_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); + CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); + } + if (adventuresave2.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatColor.GREEN + "Save 2", ChatColor.GREEN + "Klicken zum laden.")); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); + } + if (adventuresave3.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatColor.GREEN + "Save 3", ChatColor.GREEN + "Klicken zum laden.")); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); } if (adventureautosave.isDirectory()) { - RESET_GUI.setItem(AUTOSAVE_INDEX, GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatColor.GREEN + "Klicken zum laden.")); + CHALLENGE_LOAD_GUI.setItem(AUTOSAVE_INDEX, GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatColor.GREEN + "Klicken zum laden.")); } else { - RESET_GUI.setItem(AUTOSAVE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); + CHALLENGE_LOAD_GUI.setItem(AUTOSAVE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); } for (int i = 0; i < INVENTORY_SIZE; i++) { - ItemStack item = RESET_GUI.getItem(i); + ItemStack item = CHALLENGE_LOAD_GUI.getItem(i); if (item == null || item.getType() == Material.AIR) { - RESET_GUI.setItem(i, GUIUtils.EMPTY_ICON); + CHALLENGE_LOAD_GUI.setItem(i, GUIUtils.EMPTY_ICON); } } - p.openInventory(RESET_GUI); + p.openInventory(CHALLENGE_LOAD_GUI); } @EventHandler public void onInventoryClick(InventoryClickEvent e) { int slot = e.getRawSlot(); Player p = (Player) e.getWhoClicked(); - if (RESET_GUI.equals(e.getClickedInventory())) { + if (CHALLENGE_LOAD_GUI.equals(e.getClickedInventory())) { if (slot == SAVE_1_INDEX) { if (!Server.serverPlayers.containsValue(p.getUniqueId())) { - plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, false), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); + plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, "1"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); } } + if (slot == SAVE_2_INDEX) { + if (!Server.serverPlayers.containsValue(p.getUniqueId())) { + p.closeInventory(); + plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, "2"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + } else { + ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + } + } + if (slot == SAVE_3_INDEX) { + if (!Server.serverPlayers.containsValue(p.getUniqueId())) { + p.closeInventory(); + plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, "3"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + } else { + ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + } + } + if (slot == AUTOSAVE_INDEX) { if (!Server.serverPlayers.containsValue(p.getUniqueId())) { - plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, true), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); + plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, "autosave"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); }