diff --git a/.gitignore b/.gitignore index bdb1ada..3c757cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,27 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + /target/ /bin/ -.gitignore -.classpath -.project -.idea/ + +# eclipse .settings +*.project +*.classpath + +#IntelliJ +.idea + +# maven dependency-reduced-pom.xml +Challenges.iml diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index ef08ab2..07a25ba 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -21,6 +21,7 @@ import org.bukkit.Bukkit; import org.bukkit.GameRule; import org.bukkit.Material; +import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; @@ -85,6 +86,8 @@ private Player currentEditor; + private OfflinePlayer firstEditor; + private boolean waitingForShutdown; public int resetTaskId = -1; @@ -317,6 +320,16 @@ } } + public OfflinePlayer getFirstEditor() { + return firstEditor; + } + + public void setFirstEditor(Player firstEditor) { + if (this.firstEditor == null) { + this.firstEditor = firstEditor; + } + } + public void updateEditor() { Random random = new Random(); Player randomPlayer = null; 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 ebe7ea9..229dc14 100644 --- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java @@ -34,7 +34,7 @@ if (plugin.getConfig().getBoolean("firsttimerstart")) { ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); try { - SaveWorldUtils.saveWorld(uuid.toString()); + SaveWorldUtils.saveWorld(uuid.toString(), false); //ChatUtil.sendWarningMessage(sender, "Das ist nur ein Testserver hier kannst du aktuell keine Maps speichern!"); } catch (Exception ex) { Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); @@ -59,7 +59,7 @@ String next = args.getNext(); ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); try { - SaveWorldUtils.saveWorld(next.toLowerCase()); + SaveWorldUtils.saveWorld(next.toLowerCase(), false); //ChatUtil.sendWarningMessage(sender, "Das ist nur ein Testserver hier kannst du aktuell keine Maps speichern!"); } catch (Exception ex) { Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); 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 0a530ae..75378d4 100644 --- a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java +++ b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java @@ -2,6 +2,7 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.SaveWorldUtils; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; import de.speedy64.globalport.GlobalApi; @@ -80,7 +81,9 @@ plugin.getConfig().set("Saved_Locations." + key, null); } plugin.saveConfig(); - + if (plugin.getConfig().getBoolean("firsttimerstart")) { + SaveWorldUtils.saveWorld(plugin.getFirstEditor().getUniqueId().toString(), true); + } plugin.setWaitingForShutdown(true); Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, Bukkit::shutdown, 60); diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index 9c8db82..c93d449 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -1,9 +1,11 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; +import de.fanta.challenges.Timer; import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.events.ServerStatusChangedEvent; import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.SaveWorldUtils; import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -46,6 +48,7 @@ Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { if (p.hasPermission("Challenges.editor")) { plugin.setCurrentEditor(p); + plugin.setFirstEditor(p); } else { ChatUtil.sendWarningMessage(p, "Es ist aktuell kein Editor in dieser Lobby"); @@ -82,8 +85,13 @@ } if (Bukkit.getServer().getOnlinePlayers().size() - 1 == 0) { - plugin.startResetTask(); - Challenges.LOGGER.info("Player Reset Task " + (Bukkit.getServer().getOnlinePlayers().size())); + if (plugin.getConfig().getBoolean("firsttimerstart")) { + SaveWorldUtils.saveWorld(plugin.getFirstEditor().getUniqueId().toString(), true); + plugin.startResetTask(); + Challenges.LOGGER.info("Player Reset Task " + (Bukkit.getServer().getOnlinePlayers().size())); + } else { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm"); + } } if (player == plugin.getCurrentEditor()) { diff --git a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java index f527596..d99b8e7 100644 --- a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java +++ b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java @@ -16,7 +16,7 @@ private static final Challenges plugin = Challenges.getPlugin(); - public static void saveWorld(String uuid) { + public static void saveWorld(String uuid, Boolean autosafe) { Challenges.getPlugin().getConfig().set("timertime", Challenges.getPlugin().getTimer().getTime()); Challenges.getPlugin().saveConfig(); Challenges.getPlugin().getConfig().set("backpack_size", Challenges.getPlugin().getBackpack().getSize() / 9); @@ -48,7 +48,12 @@ File saveworld = new File(uuid + "/world"); File saveconfigs = new File(uuid + "/Challenges"); if (Bukkit.getMotd().equals("Challenge")) { - File loaddir = new File("/home/minecraft/saves/" + uuid); + File loaddir; + if (autosafe) { + loaddir = new File("/home/minecraft/saves/" + uuid + "/autosave/"); + } else { + loaddir = new File("/home/minecraft/saves/" + uuid + "/1/"); + } if (loaddir.isDirectory()) { loaddir.delete(); } @@ -66,7 +71,12 @@ Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); } } else if (Bukkit.getMotd().equals("Adventure")) { - File loaddir = new File("/home/minecraft/Adventure-saves/" + uuid); + 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(); }