diff --git a/src/main/java/de/viper/autoworldreset/AutoWorldReset.java b/src/main/java/de/viper/autoworldreset/AutoWorldReset.java new file mode 100644 index 0000000..96cfe70 --- /dev/null +++ b/src/main/java/de/viper/autoworldreset/AutoWorldReset.java @@ -0,0 +1,316 @@ +package de.viper.autoworldreset; + +import de.viper.autoworldreset.scheduler.ResetScheduler; +import org.bstats.bukkit.Metrics; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.plugin.java.JavaPlugin; + +import java.io.File; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Scanner; +import java.util.function.Consumer; +import org.json.JSONObject; + +public class AutoWorldReset extends JavaPlugin { + + private ResetManager resetManager; + private ResetScheduler scheduler; + + // BUG FIX #9: lang.yml wird jetzt als eigene FileConfiguration geladen und + // tatsächlich verwendet. Vorher wurde die Datei zwar gespeichert, aber + // Nachrichten wurden immer aus config.yml gelesen – lang.yml war toter Code. + private FileConfiguration langConfig; + + private Metrics metrics; + private String latestVersion = null; + private static final int RESOURCE_ID = 127822; + private static final int BSTATS_PLUGIN_ID = 26874; + + @Override + public void onEnable() { + // BUG FIX #10: registerEvents(this, this) wurde entfernt. + // Die Hauptklasse implementierte kein Listener-Interface und hatte keine + // @EventHandler-Methoden mehr – das war also eine sinnlose Registrierung, + // die zu einer misleadenden Warnung führen kann. + getServer().getPluginManager().registerEvents(new UpdateNotifyListener(), this); + + saveDefaultConfig(); + loadLangConfig(); // lang.yml laden + + resetManager = new ResetManager(this); + scheduler = new ResetScheduler(this, resetManager); + + boolean autoReset = getConfig().getBoolean("auto-reset-on-startup", false); + if (autoReset) { + Bukkit.getScheduler().runTaskLater(this, () -> { + String worldName = getConfig().getString("world-name"); + // BUG FIX #11: Null-Check für worldName beim Startup-Reset. + if (worldName == null || worldName.isEmpty()) { + getLogger().warning("auto-reset-on-startup ist aktiv, aber 'world-name' ist nicht konfiguriert!"); + return; + } + boolean success = resetManager.restoreBackup(worldName); + if (success) { + getLogger().info("Backup beim Serverstart erfolgreich wiederhergestellt."); + } else { + getLogger().warning("Backup konnte beim Serverstart nicht wiederhergestellt werden."); + } + }, 20L * 10); + } + + if (getConfig().getBoolean("scheduler.enabled")) { + scheduler.start(); + } + + metrics = new Metrics(this, BSTATS_PLUGIN_ID); + getLogger().info("bStats initialisiert."); + + getLatestVersion(latest -> { + if (latest == null || latest.isEmpty()) return; // BUG FIX #12: kein weiterer Code bei leerem Ergebnis + + String current = getDescription().getVersion(); + String normalizedLatest = latest.replaceFirst("(?i)^v\\.?\\s*", "").trim(); + String normalizedCurrent = current.replaceFirst("(?i)^v\\.?\\s*", "").trim(); + + if (isNewerVersion(normalizedLatest, normalizedCurrent)) { + latestVersion = latest; + getLogger().info("Neue Version verfügbar: " + latest + " (aktuell: " + current + ")"); + getLogger().info("Download: https://www.spigotmc.org/resources/" + RESOURCE_ID + "/"); + + // Bukkit-API-Calls müssen auf dem Hauptthread laufen! + // BUG FIX #13: Spielerbenachrichtigung in runTask() verschoben, + // da dieser Code in einem Async-Thread läuft (getServer().getScheduler() + // .runTaskAsynchronously) und Bukkit-API nicht thread-safe ist. + Bukkit.getScheduler().runTask(this, () -> { + for (Player player : Bukkit.getOnlinePlayers()) { + if (player.isOp()) { + notifyUpdateToPlayer(player, latest, current); + } + } + }); + } + }); + + getLogger().info("AutoWorldReset wurde aktiviert."); + } + + @Override + public void onDisable() { + if (scheduler != null) { + scheduler.stop(); + } + getLogger().info("AutoWorldReset wurde deaktiviert."); + } + + // ----------------------------------------------------------------------- + // lang.yml Handling + // ----------------------------------------------------------------------- + + private void loadLangConfig() { + File langFile = new File(getDataFolder(), "lang.yml"); + + if (!langFile.exists()) { + // lang.yml ist nicht in der JAR eingebettet → manuell mit Standardwerten anlegen + getDataFolder().mkdirs(); + YamlConfiguration defaults = new YamlConfiguration(); + defaults.set("messages.resetting", "&eDie Welt wird zurückgesetzt..."); + defaults.set("messages.finished", "&aWelt wurde erfolgreich zurückgesetzt!"); + defaults.set("messages.no_permission", "&cDu hast keine Berechtigung, diesen Befehl auszuführen."); + defaults.set("messages.invalid_command", "&cUngültiger Befehl oder Argument."); + defaults.set("messages.kick-message", "&cDie Welt wird zurückgesetzt, du wurdest gekickt."); + defaults.set("messages.teleport-message","&cDie Welt wird zurückgesetzt. Du wurdest sicher teleportiert."); + try { + defaults.save(langFile); + getLogger().info("lang.yml wurde automatisch erstellt."); + } catch (IOException e) { + getLogger().warning("lang.yml konnte nicht erstellt werden: " + e.getMessage()); + } + } + + langConfig = YamlConfiguration.loadConfiguration(langFile); + } + + /** + * Liest eine Nachricht aus lang.yml. Fällt auf config.yml und dann auf den + * Standardwert zurück, wenn der Schlüssel nicht gefunden wird. + */ + public String getLangMessage(String key, String defaultValue) { + if (langConfig != null && langConfig.contains("messages." + key)) { + return langConfig.getString("messages." + key, defaultValue); + } + return getConfig().getString("messages." + key, defaultValue); + } + + // ----------------------------------------------------------------------- + // Update-Checker + // ----------------------------------------------------------------------- + + private void getLatestVersion(Consumer consumer) { + getServer().getScheduler().runTaskAsynchronously(this, () -> { + try { + HttpURLConnection connection = (HttpURLConnection) + new URL("https://api.spiget.org/v2/resources/" + RESOURCE_ID + "/versions/latest") + .openConnection(); + connection.setRequestMethod("GET"); + connection.addRequestProperty("User-Agent", "AutoWorldReset-UpdateChecker/1.0"); + connection.setConnectTimeout(5000); + connection.setReadTimeout(5000); + + try (Scanner scanner = new Scanner(connection.getInputStream())) { + String response = scanner.useDelimiter("\\A").next(); + JSONObject json = new JSONObject(response); + String versionName = json.optString("name", "").trim(); + consumer.accept(versionName); + } + } catch (Exception e) { + getLogger().warning("Update-Check fehlgeschlagen: " + e.getMessage()); + consumer.accept(""); + } + }); + } + + private boolean isNewerVersion(String latest, String current) { + try { + String[] latestParts = latest.split("\\."); + String[] currentParts = current.split("\\."); + int length = Math.max(latestParts.length, currentParts.length); + + for (int i = 0; i < length; i++) { + int latestPart = (i < latestParts.length) ? Integer.parseInt(latestParts[i]) : 0; + int currentPart = (i < currentParts.length) ? Integer.parseInt(currentParts[i]) : 0; + if (latestPart > currentPart) return true; + if (latestPart < currentPart) return false; + } + return false; + } catch (NumberFormatException e) { + return !latest.equalsIgnoreCase(current); + } + } + + private void notifyUpdateToPlayer(Player player, String latest, String current) { + player.sendMessage("§aEine neue Version von §e" + getDescription().getName() + + " §aist verfügbar: §e" + latest + " §7(aktuell: " + current + ")"); + player.sendMessage("§eDownload: §bhttps://www.spigotmc.org/resources/" + RESOURCE_ID + "/"); + } + + // ----------------------------------------------------------------------- + // Inner class: Update-Benachrichtigung beim Join + // ----------------------------------------------------------------------- + + public class UpdateNotifyListener implements Listener { + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player player = event.getPlayer(); + if (player.isOp() && latestVersion != null) { + notifyUpdateToPlayer(player, latestVersion, getDescription().getVersion()); + } + } + } + + // ----------------------------------------------------------------------- + // Commands + // ----------------------------------------------------------------------- + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (!sender.hasPermission("autoworldreset.use")) { + sender.sendMessage(color(getLangMessage("no_permission", "&cDu hast keine Berechtigung."))); + return true; + } + + if (!command.getName().equalsIgnoreCase("autoworldreset")) { + return false; + } + + if (args.length == 0) { + sender.sendMessage("§eBenutze: /autoworldreset "); + return true; + } + + switch (args[0].toLowerCase()) { + case "reset": + sender.sendMessage(color(getLangMessage("resetting", "&eDie Welt wird zurückgesetzt..."))); + Bukkit.getScheduler().runTask(this, () -> resetManager.resetWorld()); + break; + + case "backup": + sender.sendMessage("§eBackup wird erstellt..."); + Bukkit.getScheduler().runTask(this, () -> { + boolean success = resetManager.createBackup(); + sender.sendMessage(success + ? "§aBackup erfolgreich erstellt." + : "§cBackup konnte nicht erstellt werden. Siehe Konsole für Details."); + }); + break; + + case "restore": + sender.sendMessage("§eBackup wird wiederhergestellt..."); + Bukkit.getScheduler().runTask(this, () -> { + String worldName = getConfig().getString("world-name"); + boolean success = resetManager.restoreBackup(worldName); + sender.sendMessage(success + ? "§aBackup erfolgreich wiederhergestellt." + : "§cBackup konnte nicht wiederhergestellt werden. Siehe Konsole für Details."); + }); + break; + + case "reload": + reloadConfig(); + loadLangConfig(); + resetManager = new ResetManager(this); + if (scheduler != null) scheduler.stop(); + scheduler = new ResetScheduler(this, resetManager); + if (getConfig().getBoolean("scheduler.enabled")) { + scheduler.start(); + } + sender.sendMessage("§aKonfiguration erfolgreich neu geladen."); + getLogger().info(sender.getName() + " hat die Konfiguration neu geladen."); + break; + + case "start": + if (scheduler.isRunning()) { + sender.sendMessage("§eScheduler läuft bereits."); + } else { + scheduler.start(); + sender.sendMessage("§aScheduler gestartet."); + } + break; + + case "stop": + scheduler.stop(); + sender.sendMessage("§cScheduler gestoppt."); + break; + + // BUG FIX #14: Neuer "status"-Befehl zeigt, ob der Scheduler läuft. + case "status": + sender.sendMessage("§eScheduler: " + (scheduler.isRunning() ? "§aAktiv" : "§cInaktiv")); + sender.sendMessage("§eWelt: §f" + getConfig().getString("world-name", "nicht konfiguriert")); + sender.sendMessage("§eCron: §f" + getConfig().getString("scheduler.cron", "-")); + break; + + default: + sender.sendMessage(color(getLangMessage("invalid_command", "&cUngültiger Befehl oder Argument."))); + break; + } + return true; + } + + public ResetManager getResetManager() { + return resetManager; + } + + private String color(String msg) { + return ChatColor.translateAlternateColorCodes('&', msg); + } +} \ No newline at end of file diff --git a/src/main/java/de/viper/autoworldreset/ResetManager.java b/src/main/java/de/viper/autoworldreset/ResetManager.java new file mode 100644 index 0000000..3d8f06f --- /dev/null +++ b/src/main/java/de/viper/autoworldreset/ResetManager.java @@ -0,0 +1,204 @@ +package de.viper.autoworldreset; + +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.List; + +public class ResetManager { + + private final AutoWorldReset plugin; + + public ResetManager(AutoWorldReset plugin) { + this.plugin = plugin; + } + + public void resetWorld() { + String worldName = plugin.getConfig().getString("world-name"); + + if (worldName == null || worldName.isEmpty()) { + plugin.getLogger().warning("Keine Welt in der Config angegeben (key: world-name)."); + return; + } + + // BUG FIX #6: Die Backup-Prüfung wurde aus resetWorld() entfernt und korrekt + // platziert. Zuvor wurde backup.enabled geprüft, um einen RESTORE abzubrechen – + // das ist logisch falsch. Das Flag sollte nur das automatische Erstellen eines + // Backups steuern, nicht das Wiederherstellen. Ein Reset setzt immer das Backup + // zurück; wenn keins da ist, schlägt restoreBackup() mit einer Warnung fehl. + boolean success = restoreBackup(worldName); + if (!success) { + plugin.getLogger().warning("Reset fehlgeschlagen: Backup konnte nicht wiederhergestellt werden."); + } + } + + public boolean createBackup() { + String worldName = plugin.getConfig().getString("world-name"); + if (worldName == null || worldName.isEmpty()) { + plugin.getLogger().warning("Kein Weltname konfiguriert (key: world-name)."); + return false; + } + + File worldFolder = new File(Bukkit.getWorldContainer(), worldName); + File backupFolder = new File(Bukkit.getWorldContainer(), + worldName + "_" + plugin.getConfig().getString("backup.folder-name", "backup")); + + if (!worldFolder.exists()) { + plugin.getLogger().warning("Weltordner nicht gefunden: " + worldFolder.getAbsolutePath()); + return false; + } + + try { + World world = Bukkit.getWorld(worldName); + if (world != null) { + handlePlayers(world); + world.save(); + } + + if (backupFolder.exists()) { + deleteFolder(backupFolder.toPath()); + } + + // BUG FIX #7: copyFolder wirft jetzt korrekt eine IOException nach oben. + // Vorher wurden Fehler im Stream-Lambda stillschweigend geschluckt, sodass + // ein unvollständiges Backup als "erfolgreich" gemeldet wurde. + copyFolder(worldFolder.toPath(), backupFolder.toPath()); + plugin.getLogger().info("Backup der Welt '" + worldName + "' erfolgreich erstellt."); + return true; + } catch (IOException e) { + plugin.getLogger().severe("Fehler beim Erstellen des Backups: " + e.getMessage()); + e.printStackTrace(); + return false; + } + } + + public boolean restoreBackup(String worldName) { + File worldFolder = new File(Bukkit.getWorldContainer(), worldName); + File backupFolder = new File(Bukkit.getWorldContainer(), + worldName + "_" + plugin.getConfig().getString("backup.folder-name", "backup")); + + if (!backupFolder.exists()) { + plugin.getLogger().warning("Backup-Ordner existiert nicht: " + backupFolder.getAbsolutePath() + + ". Bitte zuerst ein Backup mit '/awr backup' erstellen."); + return false; + } + + World world = Bukkit.getWorld(worldName); + if (world != null) { + handlePlayers(world); + world.save(); + if (!Bukkit.unloadWorld(world, false)) { + plugin.getLogger().warning("Welt konnte nicht entladen werden: " + worldName); + return false; + } + } + + try { + if (worldFolder.exists()) { + deleteFolder(worldFolder.toPath()); + } + copyFolder(backupFolder.toPath(), worldFolder.toPath()); + + // BUG FIX #8: Rückgabewert von createWorld() prüfen. + // Früher wurde immer true zurückgegeben, auch wenn die Welt nicht + // geladen werden konnte (createWorld gibt null zurück bei Fehler). + World newWorld = Bukkit.createWorld(new WorldCreator(worldName)); + if (newWorld == null) { + plugin.getLogger().severe("Welt '" + worldName + "' konnte nach Restore nicht geladen werden!"); + return false; + } + + plugin.getLogger().info("Backup der Welt '" + worldName + "' erfolgreich wiederhergestellt."); + return true; + } catch (IOException e) { + plugin.getLogger().severe("Fehler beim Wiederherstellen: " + e.getMessage()); + e.printStackTrace(); + return false; + } + } + + private void handlePlayers(World world) { + String mode = plugin.getConfig().getString("handle-players", "TELEPORT").toUpperCase(); + World fallback = Bukkit.getWorlds().get(0); + + for (Player player : world.getPlayers()) { + switch (mode) { + case "KICK": + // Nachricht aus lang.yml lesen statt hardcoded + String kickMsg = plugin.getLangMessage("kick-message", "&cDie Welt wird zurückgesetzt."); + player.kickPlayer(org.bukkit.ChatColor.translateAlternateColorCodes('&', kickMsg)); + break; + case "TELEPORT": + player.teleport(fallback.getSpawnLocation()); + player.sendMessage(org.bukkit.ChatColor.translateAlternateColorCodes('&', + plugin.getLangMessage("teleport-message", + "&cDie Welt wird zurückgesetzt. Du wurdest sicher teleportiert."))); + break; + case "TELEPORT_BACK": + player.teleport(fallback.getSpawnLocation()); + player.sendMessage(org.bukkit.ChatColor.translateAlternateColorCodes('&', + plugin.getLangMessage("teleport-message", + "&cDie Welt wird zurückgesetzt. Du wurdest vorübergehend teleportiert."))); + break; + default: + plugin.getLogger().warning("Unbekannter handle-players Modus: '" + mode + "'. Verwende TELEPORT."); + player.teleport(fallback.getSpawnLocation()); + break; + } + } + } + + private void deleteFolder(Path path) throws IOException { + if (Files.notExists(path)) return; + if (Files.isDirectory(path)) { + try (var entries = Files.newDirectoryStream(path)) { + for (var entry : entries) { + deleteFolder(entry); + } + } + } + Files.delete(path); + } + + // Dateien, die vom laufenden Server gesperrt sind oder im Backup keinen + // Nutzen haben, werden beim Kopieren automatisch uebersprungen. + private static final java.util.Set SKIP_FILES = java.util.Set.of( + "session.lock" // Vom Minecraft-Prozess exklusiv gesperrt + ); + + private void copyFolder(Path source, Path target) throws IOException { + List errors = new ArrayList<>(); + + Files.walk(source).forEach(src -> { + String fileName = src.getFileName() != null ? src.getFileName().toString() : ""; + + if (SKIP_FILES.contains(fileName)) { + plugin.getLogger().info("Ueberspringe gesperrte Datei beim Backup: " + fileName); + return; + } + + try { + Path dest = target.resolve(source.relativize(src)); + if (Files.isDirectory(src)) { + if (!Files.exists(dest)) Files.createDirectories(dest); + } else { + Files.copy(src, dest, StandardCopyOption.REPLACE_EXISTING); + } + } catch (IOException e) { + errors.add(src + " → " + e.getMessage()); + } + }); + + if (!errors.isEmpty()) { + throw new IOException("Fehler beim Kopieren folgender Dateien:\n" + String.join("\n", errors)); + } + } +} \ No newline at end of file diff --git a/src/main/java/de/viper/autoworldreset/scheduler/ResetScheduler.java b/src/main/java/de/viper/autoworldreset/scheduler/ResetScheduler.java new file mode 100644 index 0000000..f56b86d --- /dev/null +++ b/src/main/java/de/viper/autoworldreset/scheduler/ResetScheduler.java @@ -0,0 +1,85 @@ +package de.viper.autoworldreset.scheduler; + +import de.viper.autoworldreset.AutoWorldReset; +import de.viper.autoworldreset.ResetManager; +import de.viper.autoworldreset.util.CronParserUtil; +import org.bukkit.Bukkit; +import org.bukkit.scheduler.BukkitTask; + +import java.time.Duration; + +public class ResetScheduler { + + private final AutoWorldReset plugin; + private final ResetManager resetManager; + private BukkitTask task; + + // BUG FIX #4: Fehlende stopped-Flag hinzugefügt. + // Ohne dieses Flag rief der Callback nach Ausführung scheduleNextReset() + // erneut auf, selbst nachdem stop() bereits aufgerufen wurde. Das führte + // dazu, dass der Scheduler nach einem stop() ungewollt weiter lief. + private boolean stopped = false; + + public ResetScheduler(AutoWorldReset plugin, ResetManager resetManager) { + this.plugin = plugin; + this.resetManager = resetManager; + } + + public void start() { + stopped = false; + scheduleNextReset(); + } + + private void scheduleNextReset() { + if (stopped) return; + + String cron = plugin.getConfig().getString("scheduler.cron"); + + // Null-Check (wird auch in CronParserUtil geprüft, aber defensive + // Programmierung ist hier sinnvoll für eine klare Log-Meldung) + if (cron == null || cron.isBlank()) { + plugin.getLogger().warning("Kein Cron-Ausdruck unter 'scheduler.cron' konfiguriert!"); + return; + } + + Duration delay = CronParserUtil.parseCronToDelay(cron); + + if (delay == null) { + plugin.getLogger().warning("Ungültiger Cron-Ausdruck: '" + cron + "'. Scheduler wird nicht gestartet."); + return; + } + + // BUG FIX #5: Delay von 0 oder negativ abfangen. + // Wenn die nächste Ausführungszeit in der Vergangenheit liegt (z. B. wegen + // Systemzeitproblemen), würde ein Delay von 0 Ticks zu einem Sofort-Reset führen. + if (delay.isZero() || delay.isNegative()) { + plugin.getLogger().warning("Berechneter Delay ist 0 oder negativ – Reset wird übersprungen, nächsten Termin berechnen."); + // Warte 60 Sekunden und versuche es erneut + task = Bukkit.getScheduler().runTaskLater(plugin, this::scheduleNextReset, 20L * 60); + return; + } + + long ticks = delay.getSeconds() * 20L; + plugin.getLogger().info("Nächster geplanter Reset in " + + delay.toHours() + "h " + (delay.toMinutes() % 60) + "min (" + ticks + " Ticks)."); + + task = Bukkit.getScheduler().runTaskLater(plugin, () -> { + if (stopped) return; // BUG FIX #4 (Fortsetzung): Doppelte Prüfung im Callback + plugin.getLogger().info("Geplanter Reset wird jetzt ausgeführt..."); + resetManager.resetWorld(); + scheduleNextReset(); + }, ticks); + } + + public void stop() { + stopped = true; + if (task != null) { + task.cancel(); + task = null; + } + } + + public boolean isRunning() { + return !stopped && task != null; + } +} \ No newline at end of file diff --git a/src/main/java/de/viper/autoworldreset/util/CronParserUtil.java b/src/main/java/de/viper/autoworldreset/util/CronParserUtil.java new file mode 100644 index 0000000..3388d3d --- /dev/null +++ b/src/main/java/de/viper/autoworldreset/util/CronParserUtil.java @@ -0,0 +1,40 @@ +package de.viper.autoworldreset.util; + +import com.cronutils.model.Cron; +import com.cronutils.model.time.ExecutionTime; +import com.cronutils.parser.CronParser; +import com.cronutils.model.definition.CronDefinitionBuilder; + +import java.time.Duration; +import java.time.ZonedDateTime; + +// BUG FIX #1: CronType von UNIX auf QUARTZ geändert. +// UNIX-Cron hat nur 5 Felder (min h dom mon dow), aber config.yml verwendet +// einen 6-feldrigen Quartz-Ausdruck ("0 30 18 * * *" = Sekunde/Minute/Stunde/...). +// Zur Laufzeit warf das einen IllegalArgumentException beim Parsen. +import static com.cronutils.model.CronType.QUARTZ; + +public class CronParserUtil { + + public static Duration parseCronToDelay(String cronExpression) { + // BUG FIX #2: Null-/Leerstring-Check verhindert NullPointerException, + // wenn der Schlüssel "scheduler.cron" in der config.yml fehlt. + if (cronExpression == null || cronExpression.isBlank()) { + return null; + } + try { + CronParser parser = new CronParser(CronDefinitionBuilder.instanceDefinitionFor(QUARTZ)); + Cron cron = parser.parse(cronExpression); + cron.validate(); // BUG FIX #3: Explizite Validierung für frühzeitige, + // verständliche Fehlermeldungen bei ungültigen Ausdrücken. + ExecutionTime executionTime = ExecutionTime.forCron(cron); + + ZonedDateTime now = ZonedDateTime.now(); + return executionTime.timeToNextExecution(now).orElse(null); + } catch (Exception e) { + System.err.println("[AutoWorldReset] Ungültiger Cron-Ausdruck '" + + cronExpression + "': " + e.getMessage()); + return null; + } + } +} \ No newline at end of file diff --git a/src/main/java/zombie_striker/sr/Main.java b/src/main/java/zombie_striker/sr/Main.java deleted file mode 100644 index 25bdd37..0000000 --- a/src/main/java/zombie_striker/sr/Main.java +++ /dev/null @@ -1,731 +0,0 @@ -package me.zombie_striker.sr; - -import com.jcraft.jsch.Channel; -import com.jcraft.jsch.ChannelSftp; -import com.jcraft.jsch.JSch; -import com.jcraft.jsch.Session; -import org.apache.commons.net.ftp.FTP; -import org.apache.commons.net.ftp.FTPClient; -import org.apache.commons.net.ftp.FTPSClient; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Chunk; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitRunnable; -import org.bukkit.scheduler.BukkitTask; - -import java.io.*; -import java.net.SocketException; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.zip.Deflater; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; -import java.util.zip.ZipOutputStream; - -public class Main extends JavaPlugin { - - private static List exceptions = new ArrayList(); - private static String prefix = "&6[&3ServerRestorer-Reborn&6]&8"; - private static String kickmessage = " Server wird auf den vorherigen Speicherstand zurückgesetzt. Bitte trete in wenigen Sekunden erneut bei."; - BukkitTask br = null; - private boolean saveTheConfig = false; - private long lastSave = 0; - private long timedist = 0; - private File master = null; - private File backups = null; - private boolean saveServerJar = false; - private boolean savePluiginJars = false; - private boolean currentlySaving = false; - private boolean automate = true; - private boolean useFTP = false; - private boolean useFTPS = false; - private boolean useSFTP = false; - private String serverFTP = "www.example.com"; - private String userFTP = "User"; - private String passwordFTP = "password"; - private int portFTP = 80; - private String naming_format = "Backup-%date%"; - private SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); - private String removeFilePath = ""; - private long maxSaveSize = -1; - private int maxSaveFiles = 1000; - private boolean deleteZipOnFail = false; - private boolean deleteZipOnFTP = false; - - private int hourToSaveAt = -1; - - private String separator = File.separator; - - - - private int compression = Deflater.BEST_COMPRESSION; - - public static File newFile(File destinationDir, ZipEntry zipEntry) throws IOException { - File destFile = new File(destinationDir, zipEntry.getName()); - - String destDirPath = destinationDir.getCanonicalPath(); - String destFilePath = destFile.getCanonicalPath(); - - if (!destFilePath.startsWith(destDirPath + File.separator)) { - throw new IOException("Entry is outside of the target dir: " + zipEntry.getName()); - } - - return destFile; - } - - private static boolean isExempt(String path) { - path = path.toLowerCase().trim(); - for (String s : exceptions) - if (path.endsWith(s.toLowerCase().trim())) - return true; - return false; - } - - public static String humanReadableByteCount(long bytes, boolean si) { - int unit = si ? 1000 : 1024; - if (bytes < unit) - return bytes + " B"; - int exp = (int) (Math.log(bytes) / Math.log(unit)); - String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i"); - return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre); - } - - public static long folderSize(File directory) { - long length = 0; - if(directory==null)return -1; - - for (File file : directory.listFiles()) { - if (file.isFile()) - length += file.length(); - else - length += folderSize(file); - } - return length; - } - - public static File firstFileModified(File dir) { - File fl = dir; - File[] files = fl.listFiles(new FileFilter() { - public boolean accept(File file) { - return file.isFile(); - } - }); - long lastMod = Long.MAX_VALUE; - File choice = null; - for (File file : files) { - if (file.lastModified() < lastMod) { - choice = file; - lastMod = file.lastModified(); - } - } - return choice; - } - - public File getMasterFolder() { - return master; - } - - public File getBackupFolder() { - return backups; - } - - public long a(String path, long def) { - if (getConfig().contains(path)) - return getConfig().getLong(path); - saveTheConfig = true; - getConfig().set(path, def); - return def; - } - public Object a(String path, Object def) { - if (getConfig().contains(path)) - return getConfig().get(path); - saveTheConfig = true; - getConfig().set(path, def); - return def; - } - - @SuppressWarnings("unchecked") - @Override - public void onEnable() { - master = getDataFolder().getAbsoluteFile().getParentFile().getParentFile(); - String path = ((String) a("getBackupFileDirectory", "")); - backups = new File((path.isEmpty() ? master.getPath() : path) + File.separator+"backups"+ File.separator); - if (!backups.exists()) - backups.mkdirs(); - saveServerJar = (boolean) a("saveServerJar", false); - savePluiginJars = (boolean) a("savePluginJars", false); - - timedist = toTime((String) a("AutosaveDelay", "1D,0H")); - lastSave = a("LastAutosave", 0L); - - automate = (boolean) a("enableautoSaving", true); - - naming_format = (String) a("FileNameFormat", naming_format); - - String unPrefix = (String) a("prefix", "&6[&3ServerRestorer&6]&8"); - prefix = ChatColor.translateAlternateColorCodes('&', unPrefix); - String kicky = (String) a("kickMessage", unPrefix + " Restoring server to previous save. Please rejoin in a few seconds."); - kickmessage = ChatColor.translateAlternateColorCodes('&', kicky); - - useFTP = (boolean) a("EnableFTP", false); - useFTPS = (boolean) a("EnableFTPS", false); - useSFTP = (boolean) a("EnableSFTP", false); - serverFTP = (String) a("FTPAdress", serverFTP); - portFTP = (int) a("FTPPort", portFTP); - userFTP = (String) a("FTPUsername", userFTP); - passwordFTP = (String) a("FTPPassword", passwordFTP); - - - compression = (int) a("CompressionLevel_Max_9", compression); - - removeFilePath = (String) a("FTP_Directory", removeFilePath); - - hourToSaveAt = (int) a("AutoBackup-HourToBackup", hourToSaveAt); - - if (!getConfig().contains("exceptions")) { - exceptions.add("logs"); - exceptions.add("crash-reports"); - exceptions.add("backups"); - exceptions.add("dynmap"); - exceptions.add(".lock"); - exceptions.add("pixelprinter"); - } - exceptions = (List) a("exceptions", exceptions); - - maxSaveSize = toByteSize((String) a("MaxSaveSize", "10G")); - maxSaveFiles = (int) a("MaxFileSaved", 1000); - - deleteZipOnFTP = (boolean) a("DeleteZipOnFTPTransfer", false); - deleteZipOnFail = (boolean) a("DeleteZipIfFailed", false); - separator = (String) a("FolderSeparator", separator); - if (saveTheConfig) - saveConfig(); - if (automate) { - final JavaPlugin thi = this; - br = new BukkitRunnable() { - @Override - public void run() { - Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance - calendar.setTime(new Date()); // assigns calendar to given date - int hour = calendar.get(Calendar.HOUR_OF_DAY); - - if (System.currentTimeMillis() - lastSave >= timedist && (hourToSaveAt==-1 || hourToSaveAt == hour)) { - new BukkitRunnable() { - @Override - public void run() { - getConfig().set("LastAutosave", lastSave = (System.currentTimeMillis()-5000)); - save(Bukkit.getConsoleSender()); - saveConfig(); - } - }.runTaskLater(thi, 0); - return; - } - } - }.runTaskTimerAsynchronously(this, 20, 20*60); - } - - - - } - - @Override - public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { - - if (args.length == 1) { - List list = new ArrayList<>(); - String[] commands = new String[]{"disableAutoSaver", "enableAutoSaver", "restore", "save","stop", "toggleOptions"}; - for (String f : commands) { - if (f.toLowerCase().startsWith(args[0].toLowerCase())) - list.add(f); - } - return list; - - } - - if (args.length > 1) { - if (args[0].equalsIgnoreCase("restore")) { - List list = new ArrayList<>(); - for (File f : getBackupFolder().listFiles()) { - if (f.getName().toLowerCase().startsWith(args[1].toLowerCase())) - list.add(f.getName()); - } - return list; - } - } - return super.onTabComplete(sender, command, alias, args); - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!sender.hasPermission("serverrestorer.command")) { - sender.sendMessage(prefix + ChatColor.RED + " You do not have permission to use this command."); - return true; - } - if (args.length == 0) { - sender.sendMessage(ChatColor.GOLD + "---===+Server Restorer+===---"); - sender.sendMessage("/sr save : Saves the server"); - sender.sendMessage("/sr stop : Stops creating a backup of the server"); - sender.sendMessage("/sr restore : Restores server to previous backup (automatically restarts)"); - sender.sendMessage("/sr enableAutoSaver [1H,6H,1D,7D] : Configure how long it takes to autosave"); - sender.sendMessage("/sr disableAutoSaver : Disables the autosaver"); - sender.sendMessage("/sr toggleOptions : TBD"); - return true; - } - if (args[0].equalsIgnoreCase("restore")) { - if(true) { - sender.sendMessage(prefix+ "Restore feature is temporarily disabled. Please load the files manually."); - return true; - } - if (!sender.hasPermission("serverrestorer.restore")) { - sender.sendMessage(prefix + ChatColor.RED + " You do not have permission to use this command."); - return true; - } - if (currentlySaving) { - sender.sendMessage(prefix + " The server is currently being saved. Please wait."); - return true; - } - if (args.length < 2) { - sender.sendMessage(prefix + " A valid backup file is required."); - return true; - } - File backup = new File(getBackupFolder(), args[1]); - if (!backup.exists()) { - sender.sendMessage(prefix + " The file \"" + args[1] + "\" does not exist."); - return true; - } - restore(backup); - sender.sendMessage(prefix + " Restoration complete."); - return true; - } - - if (args[0].equalsIgnoreCase("stop")) { - if (!sender.hasPermission("serverrestorer.save")) { - sender.sendMessage(prefix + ChatColor.RED + " You do not have permission to use this command."); - return true; - } - if (currentlySaving) { - currentlySaving=false; - return true; - } - sender.sendMessage(prefix + " The server is not currently being saved."); - return true; - } - if (args[0].equalsIgnoreCase("save")) { - if (!sender.hasPermission("serverrestorer.save")) { - sender.sendMessage(prefix + ChatColor.RED + " You do not have permission to use this command."); - return true; - } - if (currentlySaving) { - sender.sendMessage(prefix + " The server is currently being saved. Please wait."); - return true; - } - save(sender); - return true; - } - if (args[0].equalsIgnoreCase("disableAutoSaver")) { - if (!sender.hasPermission("serverrestorer.save")) { - sender.sendMessage(prefix + ChatColor.RED + " You do not have permission to use this command."); - return true; - } - if (br != null) - br.cancel(); - br = null; - getConfig().set("enableautoSaving", false); - saveConfig(); - sender.sendMessage(prefix + " Canceled delay."); - } - if (args[0].equalsIgnoreCase("enableAutoSaver")) { - if (!sender.hasPermission("serverrestorer.save")) { - sender.sendMessage(prefix + ChatColor.RED + " You do not have permission to use this command."); - return true; - } - if (args.length == 1) { - sender.sendMessage(prefix + " Please select a delay [E.G. 0.5H, 6H, 1D, 7D...]"); - return true; - } - String delay = args[1]; - getConfig().set("AutosaveDelay", delay); - getConfig().set("enableautoSaving", true); - saveConfig(); - if (br != null) - br.cancel(); - br = null; - br = new BukkitRunnable() { - @Override - public void run() { - if (System.currentTimeMillis() - lastSave > timedist) { - save(Bukkit.getConsoleSender()); - getConfig().set("LastAutosave", lastSave = System.currentTimeMillis()); - saveConfig(); - return; - } - } - }.runTaskTimerAsynchronously(this, 20, 20 * 60 * 30); - - sender.sendMessage(prefix + " Set the delay to \"" + delay + "\"."); - } - if (args[0].equalsIgnoreCase("toggleOptions")) { - if (!sender.hasPermission("serverrestorer.save")) { - sender.sendMessage(prefix + ChatColor.RED + " You do not have permission to use this command."); - return true; - } - sender.sendMessage(prefix + " Coming soon !"); - return true; - } - return true; - } - - public void save(CommandSender sender) { - currentlySaving = true; - sender.sendMessage(prefix + " Starting to save directory. Please wait."); - List autosave = new ArrayList<>(); - for (World loaded : Bukkit.getWorlds()) { - try { - loaded.save(); - if (loaded.isAutoSave()) { - autosave.add(loaded); - loaded.setAutoSave(false); - } - - } catch (Exception e) { - } - } - new BukkitRunnable() { - @Override - public void run() { - try { - try { - if(backups.listFiles().length > maxSaveFiles){ - for(int i = 0; i < backups.listFiles().length-maxSaveFiles; i++){ - File oldestBack = firstFileModified(backups); - sender.sendMessage(prefix + ChatColor.RED + oldestBack.getName() - + ": File goes over max amount of files that can be saved."); - oldestBack.delete(); - } - } - for (int j = 0; j < Math.min(maxSaveFiles, backups.listFiles().length - 1); j++) { - if (folderSize(backups) >= maxSaveSize) { - File oldestBack = firstFileModified(backups); - sender.sendMessage(prefix + ChatColor.RED + oldestBack.getName() - + ": The current save goes over the max savesize, and so the oldest file has been deleted. If you wish to save older backups, copy them to another location."); - oldestBack.delete(); - } else { - break; - } - } - } catch (Error | Exception e) { - } - final long time = lastSave = System.currentTimeMillis(); - Date d = new Date(lastSave); - File zipFile = new File(getBackupFolder(), - naming_format.replaceAll("%date%", dateformat.format(d)) + ".zip"); - if (!zipFile.exists()) { - zipFile.getParentFile().mkdirs(); - zipFile = new File(getBackupFolder(), - naming_format.replaceAll("%date%", dateformat.format(d)) + ".zip"); - zipFile.createNewFile(); - } - zipFolder(getMasterFolder().getPath(), zipFile.getPath()); - - long timeDif = (System.currentTimeMillis() - time) / 1000; - String timeDifS = (((int) (timeDif / 60)) + "M, " + (timeDif % 60) + "S"); - - if(!currentlySaving){ - for (World world : autosave) - world.setAutoSave(true); - sender.sendMessage(prefix + " Backup canceled."); - cancel(); - return; - } - - sender.sendMessage(prefix + " Done! Backup took:" + timeDifS); - File tempBackupCheck = new File(getMasterFolder(), "backups"); - sender.sendMessage(prefix + " Compressed server with size of " - + (humanReadableByteCount(folderSize(getMasterFolder()) - - (tempBackupCheck.exists() ? folderSize(tempBackupCheck) : 0), false)) - + " to " + humanReadableByteCount(zipFile.length(), false)); - currentlySaving = false; - for (World world : autosave) - world.setAutoSave(true); - if (useSFTP) { - try { - sender.sendMessage(prefix + " Starting SFTP Transfer"); - JSch jsch = new JSch(); - Session session = jsch.getSession(userFTP, serverFTP, portFTP); - session.setConfig("PreferredAuthentications", "password"); - session.setPassword(passwordFTP); - session.connect(1000 * 20); - Channel channel = session.openChannel("sftp"); - ChannelSftp sftp = (ChannelSftp) channel; - sftp.connect(1000 * 20); - } catch (Exception | Error e) { - sender.sendMessage( - prefix + " FAILED TO SFTP TRANSFER FILE: " + zipFile.getName() + ". ERROR IN CONSOLE."); - if (deleteZipOnFail) - zipFile.delete(); - e.printStackTrace(); - } - } else if (useFTPS) { - sender.sendMessage(prefix + " Starting FTPS Transfer"); - FileInputStream zipFileStream = new FileInputStream(zipFile); - FTPSClient ftpClient = new FTPSClient(); - try { - if (ftpClient.isConnected()) { - sender.sendMessage(prefix + "FTPSClient was already connected. Disconnecting"); - ftpClient.logout(); - ftpClient.disconnect(); - ftpClient = new FTPSClient(); - } - sendFTP(sender, zipFile, ftpClient, zipFileStream, removeFilePath); - if (deleteZipOnFTP) - zipFile.delete(); - } catch (Exception | Error e) { - sender.sendMessage( - prefix + " FAILED TO FTPS TRANSFER FILE: " + zipFile.getName() + ". ERROR IN CONSOLE."); - if (deleteZipOnFail) - zipFile.delete(); - e.printStackTrace(); - } finally { - try { - if (ftpClient.isConnected()) { - sender.sendMessage(prefix + "Disconnecting"); - ftpClient.logout(); - ftpClient.disconnect(); - } - } catch (IOException ex) { - ex.printStackTrace(); - } - } - } else if (useFTP) { - sender.sendMessage(prefix + " Starting FTP Transfer"); - FileInputStream zipFileStream = new FileInputStream(zipFile); - FTPClient ftpClient = new FTPClient(); - try { - if (ftpClient.isConnected()) { - sender.sendMessage(prefix + "FTPClient was already connected. Disconnecting"); - ftpClient.logout(); - ftpClient.disconnect(); - ftpClient = new FTPClient(); - } - sendFTP(sender, zipFile, ftpClient, zipFileStream, removeFilePath); - if (deleteZipOnFTP) - zipFile.delete(); - } catch (Exception | Error e) { - sender.sendMessage( - prefix + " FAILED TO FTP TRANSFER FILE: " + zipFile.getName() + ". ERROR IN CONSOLE."); - if (deleteZipOnFail) - zipFile.delete(); - e.printStackTrace(); - } finally { - try { - if (ftpClient.isConnected()) { - sender.sendMessage(prefix + "Disconnecting"); - ftpClient.logout(); - ftpClient.disconnect(); - } - } catch (IOException ex) { - ex.printStackTrace(); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - }.runTaskAsynchronously(this); - } - - public void sendFTP(CommandSender sender, File zipFile, FTPClient ftpClient, FileInputStream zipFileStream, String path) - throws SocketException, IOException { - ftpClient.connect(serverFTP, portFTP); - ftpClient.login(userFTP, passwordFTP); - ftpClient.enterLocalPassiveMode(); - - ftpClient.setFileType(FTP.BINARY_FILE_TYPE); - - boolean done = ftpClient.storeFile(path + zipFile.getName(), zipFileStream); - zipFileStream.close(); - if (done) { - sender.sendMessage(prefix + " Transfered backup using FTP!"); - } else { - sender.sendMessage(prefix + " Something failed (maybe)! Status=" + ftpClient.getStatus()); - } - - } - - public long toTime(String time) { - long militime = 0; - for(String split : time.split(",")) { - split = split.trim(); - long k = 1; - if (split.toUpperCase().endsWith("H")) { - k *= 60 * 60; - } else if (split.toUpperCase().endsWith("D")) { - k *= 60 * 60 * 24; - } else { - k *= 60 * 60 * 24; - } - double j = Double.parseDouble(split.substring(0, split.length() - 1)); - militime += (j*k); - } - militime *= 1000; - return militime; - } - - public void restore(File backup) { - - //Kick all players - for (Player player : Bukkit.getOnlinePlayers()) - player.kickPlayer(kickmessage); - - //Disable all plugins safely. - for (Plugin p : Bukkit.getPluginManager().getPlugins()) { - if (p != this) { - try { - Bukkit.getPluginManager().disablePlugin(p); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - //Unload all worlds. - List names = new ArrayList<>(); - for (World w : Bukkit.getWorlds()) { - for (Chunk c : w.getLoadedChunks()) { - c.unload(false); - } - names.add(w.getName()); - Bukkit.unloadWorld(w, true); - } - for(String worldnames : names){ - File worldFile = new File(getMasterFolder(),worldnames); - if(worldFile.exists()) - worldFile.delete(); - } - - //Start overriding files. - File parentTo = getMasterFolder().getParentFile(); - try { - byte[] buffer = new byte[1024]; - ZipInputStream zis = new ZipInputStream(new FileInputStream(backup)); - ZipEntry zipEntry = zis.getNextEntry(); - while (zipEntry != null) { - try { - File newFile = newFile(parentTo, zipEntry); - FileOutputStream fos = new FileOutputStream(newFile); - int len; - while ((len = zis.read(buffer)) > 0) { - fos.write(buffer, 0, len); - } - fos.close(); - zipEntry = zis.getNextEntry(); - } catch (Exception e) { - e.printStackTrace(); - } - } - zis.closeEntry(); - zis.close(); - } catch (Exception e4) { - e4.printStackTrace(); - } - Bukkit.shutdown(); - } - - public void zipFolder(String srcFolder, String destZipFile) throws Exception { - ZipOutputStream zip = null; - FileOutputStream fileWriter = null; - - fileWriter = new FileOutputStream(destZipFile); - zip = new ZipOutputStream(fileWriter); - - - zip.setLevel(compression); - - addFolderToZip("", srcFolder, zip); - zip.flush(); - zip.close(); - } - - private void addFileToZip(String path, String srcFile, ZipOutputStream zip) { - try { - File folder = new File(srcFile); - if (!isExempt(srcFile)) { - - if(!currentlySaving) - return; - // this.savedBytes += folder.length(); - if (folder.isDirectory()) { - addFolderToZip(path, srcFile, zip); - } else { - if (folder.getName().endsWith("jar")) { - if (path.contains("plugins") && (!savePluiginJars) || (!path.contains("plugins") && (!saveServerJar))) { - return; - } - } - - byte[] buf = new byte['?']; - - FileInputStream in = new FileInputStream(srcFile); - zip.putNextEntry(new ZipEntry(path + separator + folder.getName())); - int len; - while ((len = in.read(buf)) > 0) { - zip.write(buf, 0, len); - } - in.close(); - } - } - }catch (FileNotFoundException e4){ - Bukkit.getConsoleSender().sendMessage(prefix + " FAILED TO ZIP FILE: " + srcFile+" Reason: "+e4.getClass().getName()); - e4.printStackTrace(); - }catch (IOException e5){ - if(!srcFile.endsWith(".db")) { - Bukkit.getConsoleSender().sendMessage(prefix + " FAILED TO ZIP FILE: " + srcFile + " Reason: " + e5.getClass().getName()); - e5.printStackTrace(); - }else{ - Bukkit.getConsoleSender().sendMessage(prefix + " Skipping file " + srcFile +" due to another process that has locked a portion of the file"); - } - - } - } - - private void addFolderToZip(String path, String srcFolder, ZipOutputStream zip) { - if ((!path.toLowerCase().contains("backups")) && (!isExempt(path))) { - try { - File folder = new File(srcFolder); - String[] arrayOfString; - int j = (arrayOfString = folder.list()).length; - for (int i = 0; i < j; i++) { - if(!currentlySaving) - break; - String fileName = arrayOfString[i]; - if (path.equals("")) { - addFileToZip(folder.getName(), srcFolder + separator + fileName, zip); - } else { - addFileToZip(path + separator + folder.getName(), srcFolder + separator + fileName, zip); - } - } - } catch (Exception e) { - } - } - } - - private long toByteSize(String s) { - long k = Long.parseLong(s.substring(0, s.length() - 1)); - if (s.toUpperCase().endsWith("G")) { - k *= 1000 * 1000 * 1000; - } else if (s.toUpperCase().endsWith("M")) { - k *= 1000 * 1000; - } else if (s.toUpperCase().endsWith("K")) { - k *= 1000; - } else { - k *= 10; - } - return k; - } -} diff --git a/src/main/java/zombie_striker/sr/Updater.java b/src/main/java/zombie_striker/sr/Updater.java deleted file mode 100644 index fe11c6e..0000000 --- a/src/main/java/zombie_striker/sr/Updater.java +++ /dev/null @@ -1,756 +0,0 @@ -package me.zombie_striker.sr; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.Plugin; -import org.bukkit.scheduler.BukkitRunnable; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; -import org.json.simple.parser.ParseException; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLDecoder; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; -import java.nio.file.StandardOpenOption; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.logging.Level; -import java.util.regex.Pattern; -import java.util.zip.ZipEntry; -import java.util.zip.ZipException; -import java.util.zip.ZipFile; - -/** - * Checks and auto updates a plugin
- *
- * You must have a option in your config to disable the updater! - * - * @author Arsen - */ -public class Updater { - - private static final String HOST = "https://api.curseforge.com"; - private static final String QUERY = "/servermods/files?projectIds="; - private static final String AGENT = "Mozilla/5.0 Updater by ArsenArsen"; - private static final File WORKING_DIR = new File("plugins" + File.separator + "AUpdater" + File.separator); - private static final File BACKUP_DIR = new File(WORKING_DIR, "backups" + File.separator); - private static final File LOG_FILE = new File(WORKING_DIR, "updater.log"); - private static final File CONFIG_FILE = new File(WORKING_DIR, "global.yml"); - private static final char[] HEX_CHAR_ARRAY = "0123456789abcdef".toCharArray(); - private static final Pattern NAME_MATCH = Pattern.compile(".+\\sv?[0-9.]+"); - private static final String VERSION_SPLIT = "\\sv?"; - - - private int id = -1; - - private Plugin p; - private boolean debug = false; - private UpdateAvailability lastCheck = null; - private UpdateResult lastUpdate = UpdateResult.NOT_UPDATED; - private File pluginFile = null; - private String downloadURL = null; - private String futuremd5; - private String downloadName; - private List allowedChannels = Arrays.asList(Channel.ALPHA, Channel.BETA, Channel.RELEASE); - private List callbacks = new ArrayList<>(); - private SyncCallbackCaller caller = new SyncCallbackCaller(); - private List skipTags = new ArrayList<>(); - private String latest; - private FileConfiguration global; - - public boolean updaterActive = false; - - /** - * Makes the updater for a plugin - * - * @param p Plugin to update - */ - public Updater(Plugin p) { - this.p = p; - try { - pluginFile = new File(URLDecoder.decode(p.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8")); - } catch (UnsupportedEncodingException e) { - debug(e.toString()); - // Should not ever happen - } - latest = p.getDescription().getVersion(); - if (!CONFIG_FILE.exists()) { - try { - CONFIG_FILE.getParentFile().mkdirs(); - CONFIG_FILE.createNewFile(); - log("Created config file!"); - } catch (IOException e) { - p.getLogger().log(Level.SEVERE, "Could not create " + CONFIG_FILE.getName() + "!", e); - } - } - global = YamlConfiguration.loadConfiguration(CONFIG_FILE); - global.options().header("Updater by ArsenArsen\nGlobal config\nSets should updates be downloaded globaly"); - if (!global.isSet("update")) { - global.set("update", true); - try { - global.save(CONFIG_FILE); - } catch (IOException e) { - p.getLogger().log(Level.SEVERE, "Could not save default config file!", e); - } - } - if (!LOG_FILE.exists()) { - try { - LOG_FILE.getParentFile().mkdirs(); - LOG_FILE.createNewFile(); - log("Created log file!"); - } catch (IOException e) { - p.getLogger().log(Level.SEVERE, "Could not create " + LOG_FILE.getName() + "!", e); - } - } - updaterActive = global.getBoolean("update"); - } - - /** - * Makes the updater for a plugin with an ID - * - * @param p The plugin - * @param id Plugin ID - */ - public Updater(Plugin p, int id) { - this(p); - setID(id); - - } - - /** - * Makes the updater for a plugin with an ID - * - * @param p The plugin - * @param id Plugin ID - * @param download Set to true if your plugin needs to be immediately downloaded - * @param skipTags Tags, endings of a filename, that updater will ignore, must begin with a dash ('-') - */ - public Updater(Plugin p, int id, boolean download, String... skipTags) { - this(p); - setID(id); - for (String tag : skipTags) - if (tag.startsWith("-")) - this.skipTags.add(tag); - if (download && (checkForUpdates() == UpdateAvailability.UPDATE_AVAILABLE)) { - update(); - } - } - - /** - * Makes the updater for a plugin with an ID - * - * @param p The plugin - * @param id Plugin ID - * @param download Set to true if your plugin needs to be immediately downloaded - * @param skipTags Tags, endings of a filename, that updater will ignore, or null for none - * @param callbacks All update callbacks you need - */ - public Updater(Plugin p, int id, boolean download, String[] skipTags, UpdateCallback... callbacks) { - this(p); - setID(id); - this.callbacks.addAll(Arrays.asList(callbacks)); - if (skipTags != null) { - for (String tag : skipTags) - if (tag.startsWith("-")) - this.skipTags.add(tag); - } - if (global.getBoolean("update", true) && download && (checkForUpdates() == UpdateAvailability.UPDATE_AVAILABLE)) { - update(); - } - } - - /** - * Gets the plugin ID - * - * @return the plugin ID - */ - public int getID() { - return id; - } - - /** - * Sets the plugin ID - * - * @param id The plugin ID - */ - public void setID(int id) { - this.id = id; - } - - /** - * Adds a new callback - * - * @param callback Callback to register - */ - public void registerCallback(UpdateCallback callback) { - callbacks.add(callback); - } - - /** - * Attempts a update - * - * @throws IllegalStateException if the ID was not set - */ - public void update() { - debug(WORKING_DIR.getAbsolutePath()); - debug("Update!"); - if (id == -1) { - throw new IllegalStateException("Plugin ID is not set!"); - } - - if (lastCheck == null) { - checkForUpdates(); - } - - if (!BACKUP_DIR.exists() || !BACKUP_DIR.isDirectory()) { - BACKUP_DIR.mkdir(); - } - final Updater updater = this; - if (!global.getBoolean("update", true)) { - lastUpdate = UpdateResult.DISABLED; - debug("Disabled!"); - caller.call(callbacks, UpdateResult.DISABLED, updater); - return; - } - if (lastCheck == UpdateAvailability.UPDATE_AVAILABLE) { - new BukkitRunnable() { - - @Override - public void run() { - debug("Update STARTED!"); - p.getLogger().info("Starting update of " + p.getName()); - log("Updating " + p.getName() + "!"); - lastUpdate = download(true); - p.getLogger().log(Level.INFO, "Update done! Result: " + lastUpdate); - caller.call(callbacks, lastUpdate, updater); - } - }.runTaskAsynchronously(p); - } else if (lastCheck == UpdateAvailability.SM_UNREACHABLE) { - lastUpdate = UpdateResult.IOERROR; - debug("Fail!"); - caller.call(callbacks, UpdateResult.IOERROR, updater); - } else { - lastUpdate = UpdateResult.GENERAL_ERROR; - debug("Fail!"); - caller.call(callbacks, UpdateResult.IOERROR, updater); - } - } - - public UpdateResult download(boolean keepBackups) { - try { - if(keepBackups){ - Files.copy(pluginFile.toPath(), - new File(BACKUP_DIR, "backup-" + System.currentTimeMillis() + "-" + p.getName() + ".jar").toPath(), - StandardCopyOption.REPLACE_EXISTING); - //TODO: Considering the amount of times the plugin updates, I don't want there to be a huge file full of old jars. - } - File downloadTo = new File(pluginFile.getParentFile().getAbsolutePath() + - File.separator + "AUpdater" + File.separator, downloadName); - downloadTo.getParentFile().mkdirs(); - downloadTo.delete(); - if(keepBackups) - debug("Started download!"); - - downloadIsSeperateBecauseGotoGotRemoved(downloadTo); - - if(keepBackups){ - debug("Ended download!"); - if (!fileHash(downloadTo).equalsIgnoreCase(futuremd5)) - return UpdateResult.BAD_HASH; - if (downloadTo.getName().endsWith(".jar")) { - pluginFile.setWritable(true, false); - pluginFile.delete(); - if(keepBackups){ - debug("Started copy!"); - InputStream in = new FileInputStream(downloadTo); - File file = new File(pluginFile.getParentFile() - .getAbsoluteFile() + File.separator + "update" + File.separator, pluginFile.getName()); - file.getParentFile().mkdirs(); - file.createNewFile(); - OutputStream out = new FileOutputStream(file); - long bytes = copy(in, out); - p.getLogger().info("Update done! Downloaded " + bytes + " bytes!"); - log("Updated plugin " + p.getName() + " with " + bytes + "bytes!"); - } - return UpdateResult.UPDATE_SUCCEEDED; - } else - return unzip(downloadTo); - - - }else{ - return UpdateResult.UPDATE_SUCCEEDED; - } - } catch (IOException e) { - p.getLogger().log(Level.SEVERE, "Couldn't download update for " + p.getName(), e); - log("Failed to update " + p.getName() + "!", e); - return UpdateResult.IOERROR; - } - } - - /** - * God damn it Gosling, reference here. - */ - private void downloadIsSeperateBecauseGotoGotRemoved(File downloadTo) throws IOException { - URL url = new URL(downloadURL); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.addRequestProperty("User-Agent", AGENT); - connection.connect(); - if (connection.getResponseCode() >= 300 && connection.getResponseCode() < 400) { - downloadURL = connection.getHeaderField("Location"); - downloadIsSeperateBecauseGotoGotRemoved(downloadTo); - } else { - debug(connection.getResponseCode() + " " + connection.getResponseMessage() + " when requesting " + downloadURL); - copy(connection.getInputStream(), new FileOutputStream(downloadTo)); - } - } - - private long copy(InputStream in, OutputStream out) throws IOException { - long bytes = 0; - byte[] buf = new byte[0x1000]; - while (true) { - int r = in.read(buf); - if (r == -1) - break; - out.write(buf, 0, r); - bytes += r; - debug("Another 4K, current: " + r); - } - out.flush(); - out.close(); - in.close(); - return bytes; - } - - - private UpdateResult unzip(File download) { - ZipFile zipFile = null; - try { - zipFile = new ZipFile(download); - Enumeration entries = zipFile.entries(); - ZipEntry entry; - File updateFile = new File(pluginFile.getParentFile() - .getAbsoluteFile() + File.separator + "update" + File.separator, pluginFile.getName()); - while ((entry = entries.nextElement()) != null) { - File target = new File(updateFile, entry.getName()); - File inPlugins = new File(pluginFile.getParentFile(), entry.getName()); - if(!inPlugins.exists()){ - target = inPlugins; - } - if (!entry.isDirectory()) { - target.getParentFile().mkdirs(); - InputStream zipStream = zipFile.getInputStream(entry); - OutputStream fileStream = new FileOutputStream(target); - copy(zipStream, fileStream); - } - } - return UpdateResult.UPDATE_SUCCEEDED; - } catch (IOException e) { - if (e instanceof ZipException) { - p.getLogger().log(Level.SEVERE, "Could not unzip downloaded file!", e); - log("Update for " + p.getName() + "was an unknown filetype! ", e); - return UpdateResult.UNKNOWN_FILE_TYPE; - } else { - p.getLogger().log(Level.SEVERE, - "An IOException occured while trying to update %s!".replace("%s", p.getName()), e); - log("Update for " + p.getName() + "was an unknown filetype! ", e); - return UpdateResult.IOERROR; - } - } finally { - if (zipFile != null) { - try { - zipFile.close(); - } catch (IOException ignored) { - } - } - } - } - - /** - * Checks for new updates - * - * @param force Discards the cached state in order to get a new one, ignored if update check didn't run - * @return Is there any updates - * @throws IllegalStateException If the plugin ID is not set - */ - public UpdateAvailability checkForUpdates(boolean force) { - if (id == -1) { - throw new IllegalStateException("Plugin ID is not set!"); - } - - if (force || lastCheck == null) { - String target = HOST + QUERY + id; - debug(target); - try { - URL url = new URL(target); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.addRequestProperty("User-Agent", AGENT); - connection.connect(); - debug("Connecting!"); - BufferedReader responseReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - StringBuilder responseBuffer = new StringBuilder(); - String line; - while ((line = responseReader.readLine()) != null) { - responseBuffer.append(line); - } - debug("All read!"); - responseReader.close(); - String response = responseBuffer.toString(); - int counter = 1; - if (connection.getResponseCode() == 200) { - - try { - debug("RESCODE 200"); - while (true) { - debug("Counter: " + counter); - JSONParser parser = new JSONParser(); - JSONArray json = (JSONArray) parser.parse(response); - if (json.size() - counter < 0) { - lastCheck = UpdateAvailability.NO_UPDATE; - debug("No update!"); - break; - } - JSONObject latest = (JSONObject) json.get(json.size() - counter); - futuremd5 = (String) latest.get("md5"); - String channel = (String) latest.get("releaseType"); - String name = (String) latest.get("name"); - if (allowedChannels.contains(Channel.matchChannel(channel.toUpperCase())) - && !hasTag(name)) { - String noTagName = name; - String oldVersion = p.getDescription().getVersion().replaceAll("-.*", ""); - for (String tag : skipTags) { - noTagName = noTagName.replace(tag, ""); - oldVersion = oldVersion.replace(tag, ""); - } - if (!NAME_MATCH.matcher(noTagName).matches()) { - lastCheck = UpdateAvailability.CANT_PARSE_NAME; - return lastCheck; - } - String[] splitName = noTagName.split(VERSION_SPLIT); - String version = splitName[splitName.length - 1]; - if (oldVersion.length() > version.length()) { - while (oldVersion.length() > version.length()) { - version += ".0"; - } - } else if (oldVersion.length() < version.length()) { - while (oldVersion.length() < version.length()) { - oldVersion += ".0"; - } - } - debug("Versions are same length"); - String[] splitOldVersion = oldVersion.split("\\."); - String[] splitVersion = version.split("\\."); - - Integer[] parsedOldVersion = new Integer[splitOldVersion.length]; - Integer[] parsedVersion = new Integer[splitVersion.length]; - - for (int i = 0; i < parsedOldVersion.length; i++) { - parsedOldVersion[i] = Integer.parseInt(splitOldVersion[i]); - } - for (int i = 0; i < parsedVersion.length; i++) { - parsedVersion[i] = Integer.parseInt(splitVersion[i]); - } - boolean update = false; - for (int i = 0; i < parsedOldVersion.length; i++) { - if (parsedOldVersion[i] < parsedVersion[i]) { - update = true; - break; - } - } - if (!update) { - lastCheck = UpdateAvailability.NO_UPDATE; - //Temp fix for downloads - downloadURL = ((String) latest.get("downloadUrl")).replace(" ", "%20"); - downloadName = (String) latest.get("fileName"); - } else { - lastCheck = UpdateAvailability.UPDATE_AVAILABLE; - downloadURL = ((String) latest.get("downloadUrl")).replace(" ", "%20"); - downloadName = (String) latest.get("fileName"); - } - break; - } else - counter++; - } - debug("While loop over!"); - } catch (ParseException e) { - p.getLogger().log(Level.SEVERE, "Could not parse API Response for " + target, e); - log("Could not parse API Response for " + target + " while updating " + p.getName(), e); - lastCheck = UpdateAvailability.CANT_UNDERSTAND; - } - } else { - log("Could not reach API for " + target + " while updating " + p.getName()); - lastCheck = UpdateAvailability.SM_UNREACHABLE; - } - } catch (IOException e) { - p.getLogger().log(Level.SEVERE, "Could not check for updates for plugin " + p.getName(), e); - log("Could not reach API for " + target + " while updating " + p.getName(), e); - lastCheck = UpdateAvailability.SM_UNREACHABLE; - } - } - log("Update check ran for " + p.getName() + "! Check resulted in " + lastCheck); - return lastCheck; - } - - private void debug(String message) { - if (debug) - p.getLogger().info(message + ' ' + new Throwable().getStackTrace()[1]); - } - - private void log(String message) { - try { - Files.write(LOG_FILE.toPath(), Collections.singletonList( - "[" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "] " + message), - StandardCharsets.UTF_8, StandardOpenOption.APPEND); - } catch (IOException e) { - p.getLogger().log(Level.SEVERE, "Could not log to " + LOG_FILE.getAbsolutePath() + "!", e); - } - } - - private void log(String message, Exception exception) { - StringWriter string = new StringWriter(); - PrintWriter print = new PrintWriter(string); - exception.printStackTrace(print); - log(message + " " + string.toString()); - try { - string.close(); - } catch (IOException ignored) { - } - print.close(); - } - - private boolean hasTag(String name) { - for (String tag : skipTags) { - if (name.toLowerCase().endsWith(tag.toLowerCase())) { - return true; - } - } - return false; - } - - /** - * Checks for new updates, non forcing cache override - * - * @return Is there any updates - * @throws IllegalStateException If the plugin ID is not set - */ - public UpdateAvailability checkForUpdates() { - return checkForUpdates(false); - } - - /** - * Checks did the update run successfully - * - * @return The update state - */ - public UpdateResult isUpdated() { - return lastUpdate; - } - - /** - * Sets allowed channels, AKA release types - * - * @param channels The allowed channels - */ - public void setChannels(Channel... channels) { - allowedChannels.clear(); - allowedChannels.addAll(Arrays.asList(channels)); - } - - /** - * Gets the latest version - * - * @return The latest version - */ - public String getLatest() { - return latest; - } - - /** - * Shows the outcome of an update - * - * @author Arsen - */ - public enum UpdateResult { - /** - * Update was successful - */ - UPDATE_SUCCEEDED, - - /** - * Update was not attempted yet - */ - NOT_UPDATED, - - /** - * Could not unpack the update - */ - UNKNOWN_FILE_TYPE, - - /** - * Miscellanies error occurred while update checking - */ - GENERAL_ERROR, - - /** - * Updater is globally disabled - */ - DISABLED, - /** - * The hashing algorithm and the remote hash had different results. - */ - BAD_HASH, - /** - * An unknown IO error occurred - */ - IOERROR - } - - /** - * Shows the outcome of an update check - * - * @author Arsen - */ - public enum UpdateAvailability { - /** - * There is an update - */ - UPDATE_AVAILABLE, - - /** - * You have the latest version - */ - NO_UPDATE, - - /** - * Could not reach server mods API - */ - SM_UNREACHABLE, - - /** - * Update name cannot be parsed, meaning the version cannot be compared - */ - CANT_PARSE_NAME, - - /** - * Could not parse response from server mods API - */ - CANT_UNDERSTAND - } - - public enum Channel { - /** - * Normal release - */ - RELEASE("release"), - - /** - * Beta release - */ - BETA("beta"), - - /** - * Alpha release - */ - ALPHA("alpha"); - - private String channel; - - Channel(String channel) { - this.channel = channel; - } - - /** - * Gets the channel value - * - * @return the channel value - */ - public String getChannel() { - return channel; - } - - /** - * Returns channel whose channel value matches the given string - * - * @param channel The channel value - * @return The Channel constant - */ - public static Channel matchChannel(String channel) { - for (Channel c : values()) { - if (c.channel.equalsIgnoreCase(channel)) { - return c; - } - } - return null; - } - } - - /** - * Calculates files MD5 hash - * - * @param file The file to digest - * @return The MD5 hex or null, if the operation failed - */ - public String fileHash(File file) { - FileInputStream is; - try { - is = new FileInputStream(file); - MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] bytes = new byte[2048]; - int numBytes; - while ((numBytes = is.read(bytes)) != -1) { - md.update(bytes, 0, numBytes); - } - byte[] digest = md.digest(); - char[] hexChars = new char[digest.length * 2]; - for (int j = 0; j < digest.length; j++) { - int v = digest[j] & 0xFF; - hexChars[j * 2] = HEX_CHAR_ARRAY[v >>> 4]; - hexChars[j * 2 + 1] = HEX_CHAR_ARRAY[v & 0x0F]; - } - is.close(); - return new String(hexChars); - } catch (IOException | NoSuchAlgorithmException e) { - p.getLogger().log(Level.SEVERE, "Could not digest " + file.getPath(), e); - return null; - } - } - - /** - * Called right after update is done - * - * @author Arsen - */ - public interface UpdateCallback { - - void updated(UpdateResult updateResult, Updater updater); - } - - private class SyncCallbackCaller extends BukkitRunnable { - private List callbacks; - private UpdateResult updateResult; - private Updater updater; - - public void run() { - for (UpdateCallback callback : callbacks) { - callback.updated(updateResult, updater); - } - } - - void call(List callbacks, UpdateResult updateResult, Updater updater) { - this.callbacks = callbacks; - this.updateResult = updateResult; - this.updater = updater; - if (!Bukkit.getServer().isPrimaryThread()) - runTask(updater.p); - else run(); - } - - } -} \ No newline at end of file diff --git a/src/main/resources/com/jcraft/jsch/Buffer.class b/src/main/resources/com/jcraft/jsch/Buffer.class deleted file mode 100644 index 3232109..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Buffer.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Channel$1.class b/src/main/resources/com/jcraft/jsch/Channel$1.class deleted file mode 100644 index cb19837..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Channel$1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Channel$MyPipedInputStream.class b/src/main/resources/com/jcraft/jsch/Channel$MyPipedInputStream.class deleted file mode 100644 index e5f3112..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Channel$MyPipedInputStream.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Channel$PassiveInputStream.class b/src/main/resources/com/jcraft/jsch/Channel$PassiveInputStream.class deleted file mode 100644 index f34481a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Channel$PassiveInputStream.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Channel$PassiveOutputStream.class b/src/main/resources/com/jcraft/jsch/Channel$PassiveOutputStream.class deleted file mode 100644 index 533834b..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Channel$PassiveOutputStream.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Channel.class b/src/main/resources/com/jcraft/jsch/Channel.class deleted file mode 100644 index 7be7944..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Channel.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelAgentForwarding.class b/src/main/resources/com/jcraft/jsch/ChannelAgentForwarding.class deleted file mode 100644 index e2f5554..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelAgentForwarding.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelDirectTCPIP.class b/src/main/resources/com/jcraft/jsch/ChannelDirectTCPIP.class deleted file mode 100644 index b7d4afd..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelDirectTCPIP.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelExec.class b/src/main/resources/com/jcraft/jsch/ChannelExec.class deleted file mode 100644 index e05d184..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelExec.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$Config.class b/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$Config.class deleted file mode 100644 index f826a32..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$Config.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$ConfigDaemon.class b/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$ConfigDaemon.class deleted file mode 100644 index 58e9b6c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$ConfigDaemon.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$ConfigLHost.class b/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$ConfigLHost.class deleted file mode 100644 index c69cc91..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP$ConfigLHost.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP.class b/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP.class deleted file mode 100644 index 71dcf1c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelForwardedTCPIP.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSession.class b/src/main/resources/com/jcraft/jsch/ChannelSession.class deleted file mode 100644 index 4839ca5..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSession.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$1.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$1.class deleted file mode 100644 index 1111e3a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$2.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$2.class deleted file mode 100644 index 4a580a9..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$2.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$3.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$3.class deleted file mode 100644 index ea5ca94..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$3.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$Header.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$Header.class deleted file mode 100644 index 8cf39a7..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$Header.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$LsEntry.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$LsEntry.class deleted file mode 100644 index ce905a3..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$LsEntry.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$LsEntrySelector.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$LsEntrySelector.class deleted file mode 100644 index 85e80ed..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$LsEntrySelector.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue$OutOfOrderException.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue$OutOfOrderException.class deleted file mode 100644 index e3caab6..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue$OutOfOrderException.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue$Request.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue$Request.class deleted file mode 100644 index 009ba65..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue$Request.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue.class b/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue.class deleted file mode 100644 index 991f0fa..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp$RequestQueue.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSftp.class b/src/main/resources/com/jcraft/jsch/ChannelSftp.class deleted file mode 100644 index 5a44cfe..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSftp.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelShell.class b/src/main/resources/com/jcraft/jsch/ChannelShell.class deleted file mode 100644 index 9105f8f..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelShell.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelSubsystem.class b/src/main/resources/com/jcraft/jsch/ChannelSubsystem.class deleted file mode 100644 index 0fd93a9..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelSubsystem.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ChannelX11.class b/src/main/resources/com/jcraft/jsch/ChannelX11.class deleted file mode 100644 index 421125c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ChannelX11.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Cipher.class b/src/main/resources/com/jcraft/jsch/Cipher.class deleted file mode 100644 index cb29bd1..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Cipher.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/CipherNone.class b/src/main/resources/com/jcraft/jsch/CipherNone.class deleted file mode 100644 index 4620257..0000000 Binary files a/src/main/resources/com/jcraft/jsch/CipherNone.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Compression.class b/src/main/resources/com/jcraft/jsch/Compression.class deleted file mode 100644 index a160ec8..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Compression.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ConfigRepository$1.class b/src/main/resources/com/jcraft/jsch/ConfigRepository$1.class deleted file mode 100644 index 2346a50..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ConfigRepository$1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ConfigRepository$2.class b/src/main/resources/com/jcraft/jsch/ConfigRepository$2.class deleted file mode 100644 index 10671bb..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ConfigRepository$2.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ConfigRepository$Config.class b/src/main/resources/com/jcraft/jsch/ConfigRepository$Config.class deleted file mode 100644 index b7692d3..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ConfigRepository$Config.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ConfigRepository.class b/src/main/resources/com/jcraft/jsch/ConfigRepository.class deleted file mode 100644 index ee94ebe..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ConfigRepository.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DH.class b/src/main/resources/com/jcraft/jsch/DH.class deleted file mode 100644 index 3e1fc72..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DH.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DHEC256.class b/src/main/resources/com/jcraft/jsch/DHEC256.class deleted file mode 100644 index d825d08..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DHEC256.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DHEC384.class b/src/main/resources/com/jcraft/jsch/DHEC384.class deleted file mode 100644 index 912f32a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DHEC384.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DHEC521.class b/src/main/resources/com/jcraft/jsch/DHEC521.class deleted file mode 100644 index 363419d..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DHEC521.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DHECN.class b/src/main/resources/com/jcraft/jsch/DHECN.class deleted file mode 100644 index c7bd9b7..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DHECN.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DHG1.class b/src/main/resources/com/jcraft/jsch/DHG1.class deleted file mode 100644 index 42db24b..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DHG1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DHG14.class b/src/main/resources/com/jcraft/jsch/DHG14.class deleted file mode 100644 index ac00f79..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DHG14.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DHGEX.class b/src/main/resources/com/jcraft/jsch/DHGEX.class deleted file mode 100644 index 651119d..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DHGEX.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/DHGEX256.class b/src/main/resources/com/jcraft/jsch/DHGEX256.class deleted file mode 100644 index 69b6b54..0000000 Binary files a/src/main/resources/com/jcraft/jsch/DHGEX256.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ECDH.class b/src/main/resources/com/jcraft/jsch/ECDH.class deleted file mode 100644 index 0ee88a2..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ECDH.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ForwardedTCPIPDaemon.class b/src/main/resources/com/jcraft/jsch/ForwardedTCPIPDaemon.class deleted file mode 100644 index 62c713c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ForwardedTCPIPDaemon.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/GSSContext.class b/src/main/resources/com/jcraft/jsch/GSSContext.class deleted file mode 100644 index 83b3ef6..0000000 Binary files a/src/main/resources/com/jcraft/jsch/GSSContext.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/HASH.class b/src/main/resources/com/jcraft/jsch/HASH.class deleted file mode 100644 index ea70fd8..0000000 Binary files a/src/main/resources/com/jcraft/jsch/HASH.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/HostKey.class b/src/main/resources/com/jcraft/jsch/HostKey.class deleted file mode 100644 index 72d9389..0000000 Binary files a/src/main/resources/com/jcraft/jsch/HostKey.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/HostKeyRepository.class b/src/main/resources/com/jcraft/jsch/HostKeyRepository.class deleted file mode 100644 index efcdde6..0000000 Binary files a/src/main/resources/com/jcraft/jsch/HostKeyRepository.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/IO.class b/src/main/resources/com/jcraft/jsch/IO.class deleted file mode 100644 index d2f6fa2..0000000 Binary files a/src/main/resources/com/jcraft/jsch/IO.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Identity.class b/src/main/resources/com/jcraft/jsch/Identity.class deleted file mode 100644 index 0a652a3..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Identity.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/IdentityFile.class b/src/main/resources/com/jcraft/jsch/IdentityFile.class deleted file mode 100644 index 65c5a44..0000000 Binary files a/src/main/resources/com/jcraft/jsch/IdentityFile.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/IdentityRepository$Wrapper.class b/src/main/resources/com/jcraft/jsch/IdentityRepository$Wrapper.class deleted file mode 100644 index e1040d1..0000000 Binary files a/src/main/resources/com/jcraft/jsch/IdentityRepository$Wrapper.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/IdentityRepository.class b/src/main/resources/com/jcraft/jsch/IdentityRepository.class deleted file mode 100644 index 4f38850..0000000 Binary files a/src/main/resources/com/jcraft/jsch/IdentityRepository.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/JSch$1.class b/src/main/resources/com/jcraft/jsch/JSch$1.class deleted file mode 100644 index 051e435..0000000 Binary files a/src/main/resources/com/jcraft/jsch/JSch$1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/JSch.class b/src/main/resources/com/jcraft/jsch/JSch.class deleted file mode 100644 index bec7a05..0000000 Binary files a/src/main/resources/com/jcraft/jsch/JSch.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/JSchAuthCancelException.class b/src/main/resources/com/jcraft/jsch/JSchAuthCancelException.class deleted file mode 100644 index 6c0ba7e..0000000 Binary files a/src/main/resources/com/jcraft/jsch/JSchAuthCancelException.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/JSchException.class b/src/main/resources/com/jcraft/jsch/JSchException.class deleted file mode 100644 index cfb13e0..0000000 Binary files a/src/main/resources/com/jcraft/jsch/JSchException.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/JSchPartialAuthException.class b/src/main/resources/com/jcraft/jsch/JSchPartialAuthException.class deleted file mode 100644 index 9b8e959..0000000 Binary files a/src/main/resources/com/jcraft/jsch/JSchPartialAuthException.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyExchange.class b/src/main/resources/com/jcraft/jsch/KeyExchange.class deleted file mode 100644 index 0335ac3..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyExchange.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPair$ASN1.class b/src/main/resources/com/jcraft/jsch/KeyPair$ASN1.class deleted file mode 100644 index 619400e..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPair$ASN1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPair$ASN1Exception.class b/src/main/resources/com/jcraft/jsch/KeyPair$ASN1Exception.class deleted file mode 100644 index 60fcd65..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPair$ASN1Exception.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPair.class b/src/main/resources/com/jcraft/jsch/KeyPair.class deleted file mode 100644 index fc0be44..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPair.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPairDSA.class b/src/main/resources/com/jcraft/jsch/KeyPairDSA.class deleted file mode 100644 index 4dcf45c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPairDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPairECDSA.class b/src/main/resources/com/jcraft/jsch/KeyPairECDSA.class deleted file mode 100644 index bc73e71..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPairECDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPairGenDSA.class b/src/main/resources/com/jcraft/jsch/KeyPairGenDSA.class deleted file mode 100644 index 9a1286b..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPairGenDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPairGenECDSA.class b/src/main/resources/com/jcraft/jsch/KeyPairGenECDSA.class deleted file mode 100644 index cd03e87..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPairGenECDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPairGenRSA.class b/src/main/resources/com/jcraft/jsch/KeyPairGenRSA.class deleted file mode 100644 index 8a33595..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPairGenRSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPairPKCS8.class b/src/main/resources/com/jcraft/jsch/KeyPairPKCS8.class deleted file mode 100644 index ad5423a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPairPKCS8.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KeyPairRSA.class b/src/main/resources/com/jcraft/jsch/KeyPairRSA.class deleted file mode 100644 index 2e5b43a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KeyPairRSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KnownHosts$HashedHostKey.class b/src/main/resources/com/jcraft/jsch/KnownHosts$HashedHostKey.class deleted file mode 100644 index 9a0b8d7..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KnownHosts$HashedHostKey.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/KnownHosts.class b/src/main/resources/com/jcraft/jsch/KnownHosts.class deleted file mode 100644 index ed9cb8c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/KnownHosts.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/LocalIdentityRepository.class b/src/main/resources/com/jcraft/jsch/LocalIdentityRepository.class deleted file mode 100644 index 74aa368..0000000 Binary files a/src/main/resources/com/jcraft/jsch/LocalIdentityRepository.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Logger.class b/src/main/resources/com/jcraft/jsch/Logger.class deleted file mode 100644 index 8758ad7..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Logger.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/MAC.class b/src/main/resources/com/jcraft/jsch/MAC.class deleted file mode 100644 index 61f216b..0000000 Binary files a/src/main/resources/com/jcraft/jsch/MAC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/OpenSSHConfig$MyConfig.class b/src/main/resources/com/jcraft/jsch/OpenSSHConfig$MyConfig.class deleted file mode 100644 index bdda11e..0000000 Binary files a/src/main/resources/com/jcraft/jsch/OpenSSHConfig$MyConfig.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/OpenSSHConfig.class b/src/main/resources/com/jcraft/jsch/OpenSSHConfig.class deleted file mode 100644 index 79b023c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/OpenSSHConfig.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/PBKDF.class b/src/main/resources/com/jcraft/jsch/PBKDF.class deleted file mode 100644 index d790b74..0000000 Binary files a/src/main/resources/com/jcraft/jsch/PBKDF.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Packet.class b/src/main/resources/com/jcraft/jsch/Packet.class deleted file mode 100644 index e022eae..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Packet.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/PortWatcher.class b/src/main/resources/com/jcraft/jsch/PortWatcher.class deleted file mode 100644 index 1c1a26f..0000000 Binary files a/src/main/resources/com/jcraft/jsch/PortWatcher.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Proxy.class b/src/main/resources/com/jcraft/jsch/Proxy.class deleted file mode 100644 index 8b76913..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Proxy.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ProxyHTTP.class b/src/main/resources/com/jcraft/jsch/ProxyHTTP.class deleted file mode 100644 index 756549e..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ProxyHTTP.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ProxySOCKS4.class b/src/main/resources/com/jcraft/jsch/ProxySOCKS4.class deleted file mode 100644 index 24bedc7..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ProxySOCKS4.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ProxySOCKS5.class b/src/main/resources/com/jcraft/jsch/ProxySOCKS5.class deleted file mode 100644 index 0e8d25a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ProxySOCKS5.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Random.class b/src/main/resources/com/jcraft/jsch/Random.class deleted file mode 100644 index 7b29999..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Random.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Request.class b/src/main/resources/com/jcraft/jsch/Request.class deleted file mode 100644 index 7cac43c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Request.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestAgentForwarding.class b/src/main/resources/com/jcraft/jsch/RequestAgentForwarding.class deleted file mode 100644 index 28367ba..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestAgentForwarding.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestEnv.class b/src/main/resources/com/jcraft/jsch/RequestEnv.class deleted file mode 100644 index 04f7caf..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestEnv.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestExec.class b/src/main/resources/com/jcraft/jsch/RequestExec.class deleted file mode 100644 index a048afb..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestExec.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestPtyReq.class b/src/main/resources/com/jcraft/jsch/RequestPtyReq.class deleted file mode 100644 index d271d70..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestPtyReq.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestSftp.class b/src/main/resources/com/jcraft/jsch/RequestSftp.class deleted file mode 100644 index f2b8e94..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestSftp.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestShell.class b/src/main/resources/com/jcraft/jsch/RequestShell.class deleted file mode 100644 index 1457398..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestShell.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestSignal.class b/src/main/resources/com/jcraft/jsch/RequestSignal.class deleted file mode 100644 index a56863f..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestSignal.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestSubsystem.class b/src/main/resources/com/jcraft/jsch/RequestSubsystem.class deleted file mode 100644 index e272fc0..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestSubsystem.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestWindowChange.class b/src/main/resources/com/jcraft/jsch/RequestWindowChange.class deleted file mode 100644 index 1f271db..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestWindowChange.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/RequestX11.class b/src/main/resources/com/jcraft/jsch/RequestX11.class deleted file mode 100644 index b8806ed..0000000 Binary files a/src/main/resources/com/jcraft/jsch/RequestX11.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/ServerSocketFactory.class b/src/main/resources/com/jcraft/jsch/ServerSocketFactory.class deleted file mode 100644 index 18a2071..0000000 Binary files a/src/main/resources/com/jcraft/jsch/ServerSocketFactory.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Session$1.class b/src/main/resources/com/jcraft/jsch/Session$1.class deleted file mode 100644 index 71c390c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Session$1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Session$Forwarding.class b/src/main/resources/com/jcraft/jsch/Session$Forwarding.class deleted file mode 100644 index 6c59ed6..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Session$Forwarding.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Session$GlobalRequestReply.class b/src/main/resources/com/jcraft/jsch/Session$GlobalRequestReply.class deleted file mode 100644 index b07c4ea..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Session$GlobalRequestReply.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Session.class b/src/main/resources/com/jcraft/jsch/Session.class deleted file mode 100644 index 2a8f9ef..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Session.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/SftpATTRS.class b/src/main/resources/com/jcraft/jsch/SftpATTRS.class deleted file mode 100644 index eca5265..0000000 Binary files a/src/main/resources/com/jcraft/jsch/SftpATTRS.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/SftpException.class b/src/main/resources/com/jcraft/jsch/SftpException.class deleted file mode 100644 index c06f96a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/SftpException.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/SftpProgressMonitor.class b/src/main/resources/com/jcraft/jsch/SftpProgressMonitor.class deleted file mode 100644 index 55db3c9..0000000 Binary files a/src/main/resources/com/jcraft/jsch/SftpProgressMonitor.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/SftpStatVFS.class b/src/main/resources/com/jcraft/jsch/SftpStatVFS.class deleted file mode 100644 index 208f9b9..0000000 Binary files a/src/main/resources/com/jcraft/jsch/SftpStatVFS.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Signature.class b/src/main/resources/com/jcraft/jsch/Signature.class deleted file mode 100644 index af49b4c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Signature.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/SignatureDSA.class b/src/main/resources/com/jcraft/jsch/SignatureDSA.class deleted file mode 100644 index bbc34f7..0000000 Binary files a/src/main/resources/com/jcraft/jsch/SignatureDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/SignatureECDSA.class b/src/main/resources/com/jcraft/jsch/SignatureECDSA.class deleted file mode 100644 index 9d50cf3..0000000 Binary files a/src/main/resources/com/jcraft/jsch/SignatureECDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/SignatureRSA.class b/src/main/resources/com/jcraft/jsch/SignatureRSA.class deleted file mode 100644 index 8f00385..0000000 Binary files a/src/main/resources/com/jcraft/jsch/SignatureRSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/SocketFactory.class b/src/main/resources/com/jcraft/jsch/SocketFactory.class deleted file mode 100644 index bf87923..0000000 Binary files a/src/main/resources/com/jcraft/jsch/SocketFactory.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/UIKeyboardInteractive.class b/src/main/resources/com/jcraft/jsch/UIKeyboardInteractive.class deleted file mode 100644 index 2c2afe9..0000000 Binary files a/src/main/resources/com/jcraft/jsch/UIKeyboardInteractive.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/UserAuth.class b/src/main/resources/com/jcraft/jsch/UserAuth.class deleted file mode 100644 index 374449d..0000000 Binary files a/src/main/resources/com/jcraft/jsch/UserAuth.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/UserAuthGSSAPIWithMIC.class b/src/main/resources/com/jcraft/jsch/UserAuthGSSAPIWithMIC.class deleted file mode 100644 index cfac7a9..0000000 Binary files a/src/main/resources/com/jcraft/jsch/UserAuthGSSAPIWithMIC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/UserAuthKeyboardInteractive.class b/src/main/resources/com/jcraft/jsch/UserAuthKeyboardInteractive.class deleted file mode 100644 index 99e72c7..0000000 Binary files a/src/main/resources/com/jcraft/jsch/UserAuthKeyboardInteractive.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/UserAuthNone.class b/src/main/resources/com/jcraft/jsch/UserAuthNone.class deleted file mode 100644 index 558ae2f..0000000 Binary files a/src/main/resources/com/jcraft/jsch/UserAuthNone.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/UserAuthPassword.class b/src/main/resources/com/jcraft/jsch/UserAuthPassword.class deleted file mode 100644 index 1016a0e..0000000 Binary files a/src/main/resources/com/jcraft/jsch/UserAuthPassword.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/UserAuthPublicKey.class b/src/main/resources/com/jcraft/jsch/UserAuthPublicKey.class deleted file mode 100644 index 4a3fc81..0000000 Binary files a/src/main/resources/com/jcraft/jsch/UserAuthPublicKey.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/UserInfo.class b/src/main/resources/com/jcraft/jsch/UserInfo.class deleted file mode 100644 index 27c805f..0000000 Binary files a/src/main/resources/com/jcraft/jsch/UserInfo.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Util$1.class b/src/main/resources/com/jcraft/jsch/Util$1.class deleted file mode 100644 index 9abeb75..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Util$1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/Util.class b/src/main/resources/com/jcraft/jsch/Util.class deleted file mode 100644 index f5799dc..0000000 Binary files a/src/main/resources/com/jcraft/jsch/Util.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/AES128CBC.class b/src/main/resources/com/jcraft/jsch/jce/AES128CBC.class deleted file mode 100644 index 3b124df..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/AES128CBC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/AES128CTR.class b/src/main/resources/com/jcraft/jsch/jce/AES128CTR.class deleted file mode 100644 index 0b59b05..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/AES128CTR.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/AES192CBC.class b/src/main/resources/com/jcraft/jsch/jce/AES192CBC.class deleted file mode 100644 index e6c79b3..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/AES192CBC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/AES192CTR.class b/src/main/resources/com/jcraft/jsch/jce/AES192CTR.class deleted file mode 100644 index 0e0010c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/AES192CTR.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/AES256CBC.class b/src/main/resources/com/jcraft/jsch/jce/AES256CBC.class deleted file mode 100644 index 8d2a85e..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/AES256CBC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/AES256CTR.class b/src/main/resources/com/jcraft/jsch/jce/AES256CTR.class deleted file mode 100644 index 56e323a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/AES256CTR.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/ARCFOUR.class b/src/main/resources/com/jcraft/jsch/jce/ARCFOUR.class deleted file mode 100644 index d4b3c82..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/ARCFOUR.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/ARCFOUR128.class b/src/main/resources/com/jcraft/jsch/jce/ARCFOUR128.class deleted file mode 100644 index eac4ae2..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/ARCFOUR128.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/ARCFOUR256.class b/src/main/resources/com/jcraft/jsch/jce/ARCFOUR256.class deleted file mode 100644 index 147d0ed..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/ARCFOUR256.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/BlowfishCBC.class b/src/main/resources/com/jcraft/jsch/jce/BlowfishCBC.class deleted file mode 100644 index c17128c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/BlowfishCBC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/DH.class b/src/main/resources/com/jcraft/jsch/jce/DH.class deleted file mode 100644 index 0ef4692..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/DH.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/ECDH256.class b/src/main/resources/com/jcraft/jsch/jce/ECDH256.class deleted file mode 100644 index d5b9499..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/ECDH256.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/ECDH384.class b/src/main/resources/com/jcraft/jsch/jce/ECDH384.class deleted file mode 100644 index eb1d869..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/ECDH384.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/ECDH521.class b/src/main/resources/com/jcraft/jsch/jce/ECDH521.class deleted file mode 100644 index 82ac0f6..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/ECDH521.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/ECDHN.class b/src/main/resources/com/jcraft/jsch/jce/ECDHN.class deleted file mode 100644 index 1993685..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/ECDHN.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/HMAC.class b/src/main/resources/com/jcraft/jsch/jce/HMAC.class deleted file mode 100644 index 565d4da..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/HMAC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/HMACMD5.class b/src/main/resources/com/jcraft/jsch/jce/HMACMD5.class deleted file mode 100644 index c47ba71..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/HMACMD5.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/HMACMD596.class b/src/main/resources/com/jcraft/jsch/jce/HMACMD596.class deleted file mode 100644 index cdd0398..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/HMACMD596.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/HMACSHA1.class b/src/main/resources/com/jcraft/jsch/jce/HMACSHA1.class deleted file mode 100644 index f8a2ec2..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/HMACSHA1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/HMACSHA196.class b/src/main/resources/com/jcraft/jsch/jce/HMACSHA196.class deleted file mode 100644 index b87a115..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/HMACSHA196.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/HMACSHA256.class b/src/main/resources/com/jcraft/jsch/jce/HMACSHA256.class deleted file mode 100644 index ac51614..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/HMACSHA256.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/HMACSHA512.class b/src/main/resources/com/jcraft/jsch/jce/HMACSHA512.class deleted file mode 100644 index 910a567..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/HMACSHA512.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/KeyPairGenDSA.class b/src/main/resources/com/jcraft/jsch/jce/KeyPairGenDSA.class deleted file mode 100644 index 12c41a8..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/KeyPairGenDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/KeyPairGenECDSA.class b/src/main/resources/com/jcraft/jsch/jce/KeyPairGenECDSA.class deleted file mode 100644 index a6d60f9..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/KeyPairGenECDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/KeyPairGenRSA.class b/src/main/resources/com/jcraft/jsch/jce/KeyPairGenRSA.class deleted file mode 100644 index f2b629a..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/KeyPairGenRSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/MD5.class b/src/main/resources/com/jcraft/jsch/jce/MD5.class deleted file mode 100644 index 82c4b04..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/MD5.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/PBKDF.class b/src/main/resources/com/jcraft/jsch/jce/PBKDF.class deleted file mode 100644 index 3a1a4be..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/PBKDF.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/Random.class b/src/main/resources/com/jcraft/jsch/jce/Random.class deleted file mode 100644 index d6654b0..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/Random.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SHA1.class b/src/main/resources/com/jcraft/jsch/jce/SHA1.class deleted file mode 100644 index ce7a1a4..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SHA1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SHA256.class b/src/main/resources/com/jcraft/jsch/jce/SHA256.class deleted file mode 100644 index d5ffb5e..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SHA256.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SHA384.class b/src/main/resources/com/jcraft/jsch/jce/SHA384.class deleted file mode 100644 index 79a8d4f..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SHA384.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SHA512.class b/src/main/resources/com/jcraft/jsch/jce/SHA512.class deleted file mode 100644 index 40d8e87..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SHA512.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SignatureDSA.class b/src/main/resources/com/jcraft/jsch/jce/SignatureDSA.class deleted file mode 100644 index febbd56..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SignatureDSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA256.class b/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA256.class deleted file mode 100644 index a78d0b3..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA256.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA384.class b/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA384.class deleted file mode 100644 index 64b4766..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA384.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA521.class b/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA521.class deleted file mode 100644 index b54b660..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SignatureECDSA521.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SignatureECDSAN.class b/src/main/resources/com/jcraft/jsch/jce/SignatureECDSAN.class deleted file mode 100644 index ea50009..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SignatureECDSAN.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/SignatureRSA.class b/src/main/resources/com/jcraft/jsch/jce/SignatureRSA.class deleted file mode 100644 index 93cccba..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/SignatureRSA.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/TripleDESCBC.class b/src/main/resources/com/jcraft/jsch/jce/TripleDESCBC.class deleted file mode 100644 index 9102b3d..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/TripleDESCBC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jce/TripleDESCTR.class b/src/main/resources/com/jcraft/jsch/jce/TripleDESCTR.class deleted file mode 100644 index fcc052c..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jce/TripleDESCTR.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jcraft/Compression.class b/src/main/resources/com/jcraft/jsch/jcraft/Compression.class deleted file mode 100644 index 7622d98..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jcraft/Compression.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jcraft/HMAC.class b/src/main/resources/com/jcraft/jsch/jcraft/HMAC.class deleted file mode 100644 index d5a2148..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jcraft/HMAC.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jcraft/HMACMD5.class b/src/main/resources/com/jcraft/jsch/jcraft/HMACMD5.class deleted file mode 100644 index 2388198..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jcraft/HMACMD5.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jcraft/HMACMD596.class b/src/main/resources/com/jcraft/jsch/jcraft/HMACMD596.class deleted file mode 100644 index 2c5ea18..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jcraft/HMACMD596.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jcraft/HMACSHA1.class b/src/main/resources/com/jcraft/jsch/jcraft/HMACSHA1.class deleted file mode 100644 index 272c779..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jcraft/HMACSHA1.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jcraft/HMACSHA196.class b/src/main/resources/com/jcraft/jsch/jcraft/HMACSHA196.class deleted file mode 100644 index e85c698..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jcraft/HMACSHA196.class and /dev/null differ diff --git a/src/main/resources/com/jcraft/jsch/jgss/GSSContextKrb5.class b/src/main/resources/com/jcraft/jsch/jgss/GSSContextKrb5.class deleted file mode 100644 index f2aa9df..0000000 Binary files a/src/main/resources/com/jcraft/jsch/jgss/GSSContextKrb5.class and /dev/null differ diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..cf0775d --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,47 @@ +# Weltname, die zurückgesetzt werden soll +world-name: "world" + +# Ob beim Serverstart automatisch ein Reset durchgeführt werden soll +auto-reset-on-startup: false + +# Modus: reset = Welt wird aus Backup wiederhergestellt +mode: "reset" + +# Spielerhandling vor Reset: +# KICK = Spieler werden gekickt +# TELEPORT = Spieler werden zur Spawn-Welt teleportiert +# TELEPORT_BACK = wie TELEPORT (Rückteleport-Logik muss selbst implementiert werden) +handle-players: "TELEPORT" + +# Multiverse-Core Nutzung (muss installiert sein, wenn true) +multiverse-support: false + +# Behalte den Seed (true) oder generiere neuen (false) +keep-seed: true + +# Backup Einstellungen +backup: + enabled: true + # Der Backup-Ordner wird angelegt als _ + # Beispiel: "world" + "backup" = Ordner "world_backup" + folder-name: "backup" + +# Scheduler-Einstellungen +scheduler: + enabled: true + # BUG FIX: Quartz-Cron-Syntax (6 Felder): Sekunde Minute Stunde Tag Monat Wochentag + # Beispiele: + # "0 0 4 * * ?" → Jeden Tag um 04:00 Uhr + # "0 30 18 * * ?" → Jeden Tag um 18:30 Uhr + # "0 0 */6 * * ?" → Alle 6 Stunden + cron: "0 0 4 * * ?" + +# Nachrichten – können vollständig in lang.yml angepasst werden. +# lang.yml hat Vorrang vor den Werten hier. +messages: + resetting: "&eDie Welt wird zurückgesetzt..." + finished: "&aWelt wurde erfolgreich zurückgesetzt!" + no_permission: "&cDu hast keine Berechtigung für diesen Befehl." + invalid_command: "&cUngültiger Befehl oder Argument." + kick-message: "&cDie Welt wird zurückgesetzt, du wurdest gekickt." + teleport-message: "&cDie Welt wird zurückgesetzt. Du wurdest sicher teleportiert." \ No newline at end of file diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml new file mode 100644 index 0000000..07ba9be --- /dev/null +++ b/src/main/resources/lang.yml @@ -0,0 +1,7 @@ +messages: + resetting: "&eDie Welt wird zurückgesetzt..." + finished: "&aWelt wurde erfolgreich zurückgesetzt!" + no_permission: "&cDu hast keine Berechtigung, diesen Befehl auszuführen." + invalid_command: "&cUngültiger Befehl oder Argument." + kick-message: "&cDie Welt wird zurückgesetzt, du wurdest gekickt." + teleport-message: "&cDie Welt wird zurückgesetzt. Du wurdest sicher teleportiert." \ No newline at end of file diff --git a/src/main/resources/org/apache/commons/net/DatagramSocketClient.class b/src/main/resources/org/apache/commons/net/DatagramSocketClient.class deleted file mode 100644 index 6fd5657..0000000 Binary files a/src/main/resources/org/apache/commons/net/DatagramSocketClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/DatagramSocketFactory.class b/src/main/resources/org/apache/commons/net/DatagramSocketFactory.class deleted file mode 100644 index 61fcc69..0000000 Binary files a/src/main/resources/org/apache/commons/net/DatagramSocketFactory.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/DefaultDatagramSocketFactory.class b/src/main/resources/org/apache/commons/net/DefaultDatagramSocketFactory.class deleted file mode 100644 index 993c09f..0000000 Binary files a/src/main/resources/org/apache/commons/net/DefaultDatagramSocketFactory.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/DefaultSocketFactory.class b/src/main/resources/org/apache/commons/net/DefaultSocketFactory.class deleted file mode 100644 index 043c82d..0000000 Binary files a/src/main/resources/org/apache/commons/net/DefaultSocketFactory.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/MalformedServerReplyException.class b/src/main/resources/org/apache/commons/net/MalformedServerReplyException.class deleted file mode 100644 index d9c94ae..0000000 Binary files a/src/main/resources/org/apache/commons/net/MalformedServerReplyException.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/PrintCommandListener.class b/src/main/resources/org/apache/commons/net/PrintCommandListener.class deleted file mode 100644 index 70f7790..0000000 Binary files a/src/main/resources/org/apache/commons/net/PrintCommandListener.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ProtocolCommandEvent.class b/src/main/resources/org/apache/commons/net/ProtocolCommandEvent.class deleted file mode 100644 index d453205..0000000 Binary files a/src/main/resources/org/apache/commons/net/ProtocolCommandEvent.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ProtocolCommandListener.class b/src/main/resources/org/apache/commons/net/ProtocolCommandListener.class deleted file mode 100644 index 54d6a46..0000000 Binary files a/src/main/resources/org/apache/commons/net/ProtocolCommandListener.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ProtocolCommandSupport.class b/src/main/resources/org/apache/commons/net/ProtocolCommandSupport.class deleted file mode 100644 index 75f7ffb..0000000 Binary files a/src/main/resources/org/apache/commons/net/ProtocolCommandSupport.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/SocketClient.class b/src/main/resources/org/apache/commons/net/SocketClient.class deleted file mode 100644 index 2c71b99..0000000 Binary files a/src/main/resources/org/apache/commons/net/SocketClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/bsd/RCommandClient.class b/src/main/resources/org/apache/commons/net/bsd/RCommandClient.class deleted file mode 100644 index 95fc83b..0000000 Binary files a/src/main/resources/org/apache/commons/net/bsd/RCommandClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/bsd/RExecClient.class b/src/main/resources/org/apache/commons/net/bsd/RExecClient.class deleted file mode 100644 index 7814fc8..0000000 Binary files a/src/main/resources/org/apache/commons/net/bsd/RExecClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/bsd/RLoginClient.class b/src/main/resources/org/apache/commons/net/bsd/RLoginClient.class deleted file mode 100644 index 068bf81..0000000 Binary files a/src/main/resources/org/apache/commons/net/bsd/RLoginClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/chargen/CharGenTCPClient.class b/src/main/resources/org/apache/commons/net/chargen/CharGenTCPClient.class deleted file mode 100644 index ec134c2..0000000 Binary files a/src/main/resources/org/apache/commons/net/chargen/CharGenTCPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/chargen/CharGenUDPClient.class b/src/main/resources/org/apache/commons/net/chargen/CharGenUDPClient.class deleted file mode 100644 index 00b88db..0000000 Binary files a/src/main/resources/org/apache/commons/net/chargen/CharGenUDPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/daytime/DaytimeTCPClient.class b/src/main/resources/org/apache/commons/net/daytime/DaytimeTCPClient.class deleted file mode 100644 index e7ea08e..0000000 Binary files a/src/main/resources/org/apache/commons/net/daytime/DaytimeTCPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/daytime/DaytimeUDPClient.class b/src/main/resources/org/apache/commons/net/daytime/DaytimeUDPClient.class deleted file mode 100644 index 1a23349..0000000 Binary files a/src/main/resources/org/apache/commons/net/daytime/DaytimeUDPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/discard/DiscardTCPClient.class b/src/main/resources/org/apache/commons/net/discard/DiscardTCPClient.class deleted file mode 100644 index bc7b355..0000000 Binary files a/src/main/resources/org/apache/commons/net/discard/DiscardTCPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/discard/DiscardUDPClient.class b/src/main/resources/org/apache/commons/net/discard/DiscardUDPClient.class deleted file mode 100644 index 5404668..0000000 Binary files a/src/main/resources/org/apache/commons/net/discard/DiscardUDPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/echo/EchoTCPClient.class b/src/main/resources/org/apache/commons/net/echo/EchoTCPClient.class deleted file mode 100644 index 02e6ab5..0000000 Binary files a/src/main/resources/org/apache/commons/net/echo/EchoTCPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/echo/EchoUDPClient.class b/src/main/resources/org/apache/commons/net/echo/EchoUDPClient.class deleted file mode 100644 index d397f34..0000000 Binary files a/src/main/resources/org/apache/commons/net/echo/EchoUDPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/finger/FingerClient.class b/src/main/resources/org/apache/commons/net/finger/FingerClient.class deleted file mode 100644 index 1c24eb6..0000000 Binary files a/src/main/resources/org/apache/commons/net/finger/FingerClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/Configurable.class b/src/main/resources/org/apache/commons/net/ftp/Configurable.class deleted file mode 100644 index abcae1f..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/Configurable.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTP.class b/src/main/resources/org/apache/commons/net/ftp/FTP.class deleted file mode 100644 index addd13f..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTP.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPClient$CSL.class b/src/main/resources/org/apache/commons/net/ftp/FTPClient$CSL.class deleted file mode 100644 index 74e0441..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPClient$CSL.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPClient$HostnameResolver.class b/src/main/resources/org/apache/commons/net/ftp/FTPClient$HostnameResolver.class deleted file mode 100644 index 0e1d307..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPClient$HostnameResolver.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPClient$NatServerResolverImpl.class b/src/main/resources/org/apache/commons/net/ftp/FTPClient$NatServerResolverImpl.class deleted file mode 100644 index f70a630..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPClient$NatServerResolverImpl.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPClient$PropertiesSingleton.class b/src/main/resources/org/apache/commons/net/ftp/FTPClient$PropertiesSingleton.class deleted file mode 100644 index 3bd8b5e..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPClient$PropertiesSingleton.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPClient.class b/src/main/resources/org/apache/commons/net/ftp/FTPClient.class deleted file mode 100644 index 5f6478b..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPClientConfig.class b/src/main/resources/org/apache/commons/net/ftp/FTPClientConfig.class deleted file mode 100644 index 5231a3a..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPClientConfig.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPCmd.class b/src/main/resources/org/apache/commons/net/ftp/FTPCmd.class deleted file mode 100644 index 46d7479..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPCmd.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPCommand.class b/src/main/resources/org/apache/commons/net/ftp/FTPCommand.class deleted file mode 100644 index 9e5ae13..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPCommand.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPConnectionClosedException.class b/src/main/resources/org/apache/commons/net/ftp/FTPConnectionClosedException.class deleted file mode 100644 index 8788d88..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPConnectionClosedException.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPFile.class b/src/main/resources/org/apache/commons/net/ftp/FTPFile.class deleted file mode 100644 index f753ec3..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPFile.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPFileEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/FTPFileEntryParser.class deleted file mode 100644 index 2643bb2..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPFileEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPFileEntryParserImpl.class b/src/main/resources/org/apache/commons/net/ftp/FTPFileEntryParserImpl.class deleted file mode 100644 index 6549a2b..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPFileEntryParserImpl.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilter.class b/src/main/resources/org/apache/commons/net/ftp/FTPFileFilter.class deleted file mode 100644 index 3785603..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilter.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$1.class b/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$1.class deleted file mode 100644 index 9347f8b..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$1.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$2.class b/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$2.class deleted file mode 100644 index dce583c..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$2.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$3.class b/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$3.class deleted file mode 100644 index 85f8077..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters$3.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters.class b/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters.class deleted file mode 100644 index 1ab2f16..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPFileFilters.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPHTTPClient.class b/src/main/resources/org/apache/commons/net/ftp/FTPHTTPClient.class deleted file mode 100644 index b8c9302..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPHTTPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPListParseEngine.class b/src/main/resources/org/apache/commons/net/ftp/FTPListParseEngine.class deleted file mode 100644 index 413629e..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPListParseEngine.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPReply.class b/src/main/resources/org/apache/commons/net/ftp/FTPReply.class deleted file mode 100644 index c710184..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPReply.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPSClient.class b/src/main/resources/org/apache/commons/net/ftp/FTPSClient.class deleted file mode 100644 index 6f58f16..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPSClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPSCommand.class b/src/main/resources/org/apache/commons/net/ftp/FTPSCommand.class deleted file mode 100644 index 36334d3..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPSCommand.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPSServerSocketFactory.class b/src/main/resources/org/apache/commons/net/ftp/FTPSServerSocketFactory.class deleted file mode 100644 index d0669eb..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPSServerSocketFactory.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPSSocketFactory.class b/src/main/resources/org/apache/commons/net/ftp/FTPSSocketFactory.class deleted file mode 100644 index 37a0e0a..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPSSocketFactory.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/FTPSTrustManager.class b/src/main/resources/org/apache/commons/net/ftp/FTPSTrustManager.class deleted file mode 100644 index 17d754c..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/FTPSTrustManager.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.class deleted file mode 100644 index 795e5d8..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.class b/src/main/resources/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.class deleted file mode 100644 index 01987fd..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.class b/src/main/resources/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.class deleted file mode 100644 index b9991cc..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/EnterpriseUnixFTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/EnterpriseUnixFTPEntryParser.class deleted file mode 100644 index a00d004..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/EnterpriseUnixFTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.class b/src/main/resources/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.class deleted file mode 100644 index f1bdf1b..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/FTPTimestampParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/FTPTimestampParser.class deleted file mode 100644 index 32230d8..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/FTPTimestampParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.class b/src/main/resources/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.class deleted file mode 100644 index 6258f96..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/MLSxEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/MLSxEntryParser.class deleted file mode 100644 index dad1c60..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/MLSxEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.class deleted file mode 100644 index bb16dcb..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/MacOsPeterFTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/MacOsPeterFTPEntryParser.class deleted file mode 100644 index 156c567..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/MacOsPeterFTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/NTFTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/NTFTPEntryParser.class deleted file mode 100644 index cfa06cf..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/NTFTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.class deleted file mode 100644 index 88c5ed0..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.class deleted file mode 100644 index 06d0619..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.class deleted file mode 100644 index 4b5d262..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/ParserInitializationException.class b/src/main/resources/org/apache/commons/net/ftp/parser/ParserInitializationException.class deleted file mode 100644 index 6043882..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/ParserInitializationException.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.class b/src/main/resources/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.class deleted file mode 100644 index fbb907a..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.class deleted file mode 100644 index 65dd58e..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.class deleted file mode 100644 index 04b810e..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.class b/src/main/resources/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.class deleted file mode 100644 index 40bb27b..0000000 Binary files a/src/main/resources/org/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient$1.class b/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient$1.class deleted file mode 100644 index e1f05f3..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient$1.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient$AUTH_METHOD.class b/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient$AUTH_METHOD.class deleted file mode 100644 index bcdb5ea..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient$AUTH_METHOD.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient.class b/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient.class deleted file mode 100644 index 1ba2a05..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/AuthenticatingIMAPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAP$1.class b/src/main/resources/org/apache/commons/net/imap/IMAP$1.class deleted file mode 100644 index 1e9e922..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAP$1.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAP$IMAPChunkListener.class b/src/main/resources/org/apache/commons/net/imap/IMAP$IMAPChunkListener.class deleted file mode 100644 index 696d063..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAP$IMAPChunkListener.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAP$IMAPState.class b/src/main/resources/org/apache/commons/net/imap/IMAP$IMAPState.class deleted file mode 100644 index 9abb7d5..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAP$IMAPState.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAP.class b/src/main/resources/org/apache/commons/net/imap/IMAP.class deleted file mode 100644 index 52f784a..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAP.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAPClient$FETCH_ITEM_NAMES.class b/src/main/resources/org/apache/commons/net/imap/IMAPClient$FETCH_ITEM_NAMES.class deleted file mode 100644 index 7cf39e6..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAPClient$FETCH_ITEM_NAMES.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAPClient$SEARCH_CRITERIA.class b/src/main/resources/org/apache/commons/net/imap/IMAPClient$SEARCH_CRITERIA.class deleted file mode 100644 index 4524e84..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAPClient$SEARCH_CRITERIA.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAPClient$STATUS_DATA_ITEMS.class b/src/main/resources/org/apache/commons/net/imap/IMAPClient$STATUS_DATA_ITEMS.class deleted file mode 100644 index ba79e0d..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAPClient$STATUS_DATA_ITEMS.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAPClient.class b/src/main/resources/org/apache/commons/net/imap/IMAPClient.class deleted file mode 100644 index 44c71e5..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAPCommand.class b/src/main/resources/org/apache/commons/net/imap/IMAPCommand.class deleted file mode 100644 index af316b3..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAPCommand.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAPReply.class b/src/main/resources/org/apache/commons/net/imap/IMAPReply.class deleted file mode 100644 index b4262ff..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAPReply.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/imap/IMAPSClient.class b/src/main/resources/org/apache/commons/net/imap/IMAPSClient.class deleted file mode 100644 index d909624..0000000 Binary files a/src/main/resources/org/apache/commons/net/imap/IMAPSClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/CRLFLineReader.class b/src/main/resources/org/apache/commons/net/io/CRLFLineReader.class deleted file mode 100644 index e52251b..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/CRLFLineReader.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/CopyStreamAdapter.class b/src/main/resources/org/apache/commons/net/io/CopyStreamAdapter.class deleted file mode 100644 index 927edd9..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/CopyStreamAdapter.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/CopyStreamEvent.class b/src/main/resources/org/apache/commons/net/io/CopyStreamEvent.class deleted file mode 100644 index ee787fb..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/CopyStreamEvent.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/CopyStreamException.class b/src/main/resources/org/apache/commons/net/io/CopyStreamException.class deleted file mode 100644 index bb628f5..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/CopyStreamException.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/CopyStreamListener.class b/src/main/resources/org/apache/commons/net/io/CopyStreamListener.class deleted file mode 100644 index 3d5bb08..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/CopyStreamListener.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/DotTerminatedMessageReader.class b/src/main/resources/org/apache/commons/net/io/DotTerminatedMessageReader.class deleted file mode 100644 index 24dcfb2..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/DotTerminatedMessageReader.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/DotTerminatedMessageWriter.class b/src/main/resources/org/apache/commons/net/io/DotTerminatedMessageWriter.class deleted file mode 100644 index eea32d6..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/DotTerminatedMessageWriter.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/FromNetASCIIInputStream.class b/src/main/resources/org/apache/commons/net/io/FromNetASCIIInputStream.class deleted file mode 100644 index 655fc2b..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/FromNetASCIIInputStream.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/FromNetASCIIOutputStream.class b/src/main/resources/org/apache/commons/net/io/FromNetASCIIOutputStream.class deleted file mode 100644 index d5b56b7..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/FromNetASCIIOutputStream.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/SocketInputStream.class b/src/main/resources/org/apache/commons/net/io/SocketInputStream.class deleted file mode 100644 index 7c9fda6..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/SocketInputStream.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/SocketOutputStream.class b/src/main/resources/org/apache/commons/net/io/SocketOutputStream.class deleted file mode 100644 index 79e1217..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/SocketOutputStream.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/ToNetASCIIInputStream.class b/src/main/resources/org/apache/commons/net/io/ToNetASCIIInputStream.class deleted file mode 100644 index 0d2bac1..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/ToNetASCIIInputStream.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/ToNetASCIIOutputStream.class b/src/main/resources/org/apache/commons/net/io/ToNetASCIIOutputStream.class deleted file mode 100644 index 6a6b9a9..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/ToNetASCIIOutputStream.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/io/Util.class b/src/main/resources/org/apache/commons/net/io/Util.class deleted file mode 100644 index 321250f..0000000 Binary files a/src/main/resources/org/apache/commons/net/io/Util.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/Article.class b/src/main/resources/org/apache/commons/net/nntp/Article.class deleted file mode 100644 index 8c49c27..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/Article.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/ArticleInfo.class b/src/main/resources/org/apache/commons/net/nntp/ArticleInfo.class deleted file mode 100644 index 1f1a3ed..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/ArticleInfo.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/ArticleIterator.class b/src/main/resources/org/apache/commons/net/nntp/ArticleIterator.class deleted file mode 100644 index 742b362..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/ArticleIterator.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/ArticlePointer.class b/src/main/resources/org/apache/commons/net/nntp/ArticlePointer.class deleted file mode 100644 index 91f91f5..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/ArticlePointer.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/NNTP.class b/src/main/resources/org/apache/commons/net/nntp/NNTP.class deleted file mode 100644 index 60f4e17..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/NNTP.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/NNTPClient.class b/src/main/resources/org/apache/commons/net/nntp/NNTPClient.class deleted file mode 100644 index bbcb88d..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/NNTPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/NNTPCommand.class b/src/main/resources/org/apache/commons/net/nntp/NNTPCommand.class deleted file mode 100644 index fb52368..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/NNTPCommand.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/NNTPConnectionClosedException.class b/src/main/resources/org/apache/commons/net/nntp/NNTPConnectionClosedException.class deleted file mode 100644 index 89eda4f..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/NNTPConnectionClosedException.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/NNTPReply.class b/src/main/resources/org/apache/commons/net/nntp/NNTPReply.class deleted file mode 100644 index 9570ff1..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/NNTPReply.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/NewGroupsOrNewsQuery.class b/src/main/resources/org/apache/commons/net/nntp/NewGroupsOrNewsQuery.class deleted file mode 100644 index 02f212b..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/NewGroupsOrNewsQuery.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/NewsgroupInfo.class b/src/main/resources/org/apache/commons/net/nntp/NewsgroupInfo.class deleted file mode 100644 index a2add58..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/NewsgroupInfo.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/NewsgroupIterator.class b/src/main/resources/org/apache/commons/net/nntp/NewsgroupIterator.class deleted file mode 100644 index e01d1b2..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/NewsgroupIterator.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/ReplyIterator.class b/src/main/resources/org/apache/commons/net/nntp/ReplyIterator.class deleted file mode 100644 index 05cc458..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/ReplyIterator.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/SimpleNNTPHeader.class b/src/main/resources/org/apache/commons/net/nntp/SimpleNNTPHeader.class deleted file mode 100644 index 78b777d..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/SimpleNNTPHeader.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/ThreadContainer.class b/src/main/resources/org/apache/commons/net/nntp/ThreadContainer.class deleted file mode 100644 index 8798c19..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/ThreadContainer.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/Threadable.class b/src/main/resources/org/apache/commons/net/nntp/Threadable.class deleted file mode 100644 index 3c255e2..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/Threadable.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/nntp/Threader.class b/src/main/resources/org/apache/commons/net/nntp/Threader.class deleted file mode 100644 index a3cba25..0000000 Binary files a/src/main/resources/org/apache/commons/net/nntp/Threader.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ntp/NTPUDPClient.class b/src/main/resources/org/apache/commons/net/ntp/NTPUDPClient.class deleted file mode 100644 index 37aaca6..0000000 Binary files a/src/main/resources/org/apache/commons/net/ntp/NTPUDPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ntp/NtpUtils.class b/src/main/resources/org/apache/commons/net/ntp/NtpUtils.class deleted file mode 100644 index 1453ee0..0000000 Binary files a/src/main/resources/org/apache/commons/net/ntp/NtpUtils.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ntp/NtpV3Impl.class b/src/main/resources/org/apache/commons/net/ntp/NtpV3Impl.class deleted file mode 100644 index af91ca1..0000000 Binary files a/src/main/resources/org/apache/commons/net/ntp/NtpV3Impl.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ntp/NtpV3Packet.class b/src/main/resources/org/apache/commons/net/ntp/NtpV3Packet.class deleted file mode 100644 index adb6257..0000000 Binary files a/src/main/resources/org/apache/commons/net/ntp/NtpV3Packet.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ntp/TimeInfo.class b/src/main/resources/org/apache/commons/net/ntp/TimeInfo.class deleted file mode 100644 index ce720b0..0000000 Binary files a/src/main/resources/org/apache/commons/net/ntp/TimeInfo.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/ntp/TimeStamp.class b/src/main/resources/org/apache/commons/net/ntp/TimeStamp.class deleted file mode 100644 index 81bed43..0000000 Binary files a/src/main/resources/org/apache/commons/net/ntp/TimeStamp.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client$1.class b/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client$1.class deleted file mode 100644 index 288351e..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client$1.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client$AUTH_METHOD.class b/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client$AUTH_METHOD.class deleted file mode 100644 index af6e301..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client$AUTH_METHOD.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client.class b/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client.class deleted file mode 100644 index ef56ee2..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/ExtendedPOP3Client.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/POP3.class b/src/main/resources/org/apache/commons/net/pop3/POP3.class deleted file mode 100644 index 5462c8d..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/POP3.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/POP3Client.class b/src/main/resources/org/apache/commons/net/pop3/POP3Client.class deleted file mode 100644 index 5006d29..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/POP3Client.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/POP3Command.class b/src/main/resources/org/apache/commons/net/pop3/POP3Command.class deleted file mode 100644 index 4d652f5..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/POP3Command.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/POP3MessageInfo.class b/src/main/resources/org/apache/commons/net/pop3/POP3MessageInfo.class deleted file mode 100644 index f149cf6..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/POP3MessageInfo.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/POP3Reply.class b/src/main/resources/org/apache/commons/net/pop3/POP3Reply.class deleted file mode 100644 index 3efc22c..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/POP3Reply.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/pop3/POP3SClient.class b/src/main/resources/org/apache/commons/net/pop3/POP3SClient.class deleted file mode 100644 index 377925c..0000000 Binary files a/src/main/resources/org/apache/commons/net/pop3/POP3SClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/AuthenticatingSMTPClient$AUTH_METHOD.class b/src/main/resources/org/apache/commons/net/smtp/AuthenticatingSMTPClient$AUTH_METHOD.class deleted file mode 100644 index b2eb68b..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/AuthenticatingSMTPClient$AUTH_METHOD.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/AuthenticatingSMTPClient.class b/src/main/resources/org/apache/commons/net/smtp/AuthenticatingSMTPClient.class deleted file mode 100644 index f2e03b9..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/AuthenticatingSMTPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/RelayPath.class b/src/main/resources/org/apache/commons/net/smtp/RelayPath.class deleted file mode 100644 index e6a40a9..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/RelayPath.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/SMTP.class b/src/main/resources/org/apache/commons/net/smtp/SMTP.class deleted file mode 100644 index 76631cd..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/SMTP.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/SMTPClient.class b/src/main/resources/org/apache/commons/net/smtp/SMTPClient.class deleted file mode 100644 index b81fc3a..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/SMTPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/SMTPCommand.class b/src/main/resources/org/apache/commons/net/smtp/SMTPCommand.class deleted file mode 100644 index 0638397..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/SMTPCommand.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/SMTPConnectionClosedException.class b/src/main/resources/org/apache/commons/net/smtp/SMTPConnectionClosedException.class deleted file mode 100644 index 6cadb2f..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/SMTPConnectionClosedException.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/SMTPReply.class b/src/main/resources/org/apache/commons/net/smtp/SMTPReply.class deleted file mode 100644 index fe94c89..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/SMTPReply.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/SMTPSClient.class b/src/main/resources/org/apache/commons/net/smtp/SMTPSClient.class deleted file mode 100644 index fc7c7a2..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/SMTPSClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/smtp/SimpleSMTPHeader.class b/src/main/resources/org/apache/commons/net/smtp/SimpleSMTPHeader.class deleted file mode 100644 index 49ffd4e..0000000 Binary files a/src/main/resources/org/apache/commons/net/smtp/SimpleSMTPHeader.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/EchoOptionHandler.class b/src/main/resources/org/apache/commons/net/telnet/EchoOptionHandler.class deleted file mode 100644 index 95be496..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/EchoOptionHandler.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/InvalidTelnetOptionException.class b/src/main/resources/org/apache/commons/net/telnet/InvalidTelnetOptionException.class deleted file mode 100644 index 3c9ac7c..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/InvalidTelnetOptionException.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/SimpleOptionHandler.class b/src/main/resources/org/apache/commons/net/telnet/SimpleOptionHandler.class deleted file mode 100644 index 40fc8e2..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/SimpleOptionHandler.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/SuppressGAOptionHandler.class b/src/main/resources/org/apache/commons/net/telnet/SuppressGAOptionHandler.class deleted file mode 100644 index 6b175f9..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/SuppressGAOptionHandler.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/Telnet.class b/src/main/resources/org/apache/commons/net/telnet/Telnet.class deleted file mode 100644 index d23082e..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/Telnet.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TelnetClient.class b/src/main/resources/org/apache/commons/net/telnet/TelnetClient.class deleted file mode 100644 index 35f60f4..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TelnetClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TelnetCommand.class b/src/main/resources/org/apache/commons/net/telnet/TelnetCommand.class deleted file mode 100644 index 988d0d9..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TelnetCommand.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TelnetInputListener.class b/src/main/resources/org/apache/commons/net/telnet/TelnetInputListener.class deleted file mode 100644 index 174fb22..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TelnetInputListener.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TelnetInputStream.class b/src/main/resources/org/apache/commons/net/telnet/TelnetInputStream.class deleted file mode 100644 index 985a028..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TelnetInputStream.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TelnetNotificationHandler.class b/src/main/resources/org/apache/commons/net/telnet/TelnetNotificationHandler.class deleted file mode 100644 index a7451a4..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TelnetNotificationHandler.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TelnetOption.class b/src/main/resources/org/apache/commons/net/telnet/TelnetOption.class deleted file mode 100644 index 5943753..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TelnetOption.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TelnetOptionHandler.class b/src/main/resources/org/apache/commons/net/telnet/TelnetOptionHandler.class deleted file mode 100644 index 5473a14..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TelnetOptionHandler.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TelnetOutputStream.class b/src/main/resources/org/apache/commons/net/telnet/TelnetOutputStream.class deleted file mode 100644 index fcbd754..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TelnetOutputStream.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/TerminalTypeOptionHandler.class b/src/main/resources/org/apache/commons/net/telnet/TerminalTypeOptionHandler.class deleted file mode 100644 index 29f2306..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/TerminalTypeOptionHandler.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/telnet/WindowSizeOptionHandler.class b/src/main/resources/org/apache/commons/net/telnet/WindowSizeOptionHandler.class deleted file mode 100644 index c47d965..0000000 Binary files a/src/main/resources/org/apache/commons/net/telnet/WindowSizeOptionHandler.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTP.class b/src/main/resources/org/apache/commons/net/tftp/TFTP.class deleted file mode 100644 index ca432c1..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTP.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPAckPacket.class b/src/main/resources/org/apache/commons/net/tftp/TFTPAckPacket.class deleted file mode 100644 index 3f940b2..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPAckPacket.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPClient.class b/src/main/resources/org/apache/commons/net/tftp/TFTPClient.class deleted file mode 100644 index 3dc1634..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPDataPacket.class b/src/main/resources/org/apache/commons/net/tftp/TFTPDataPacket.class deleted file mode 100644 index 75e0f41..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPDataPacket.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPErrorPacket.class b/src/main/resources/org/apache/commons/net/tftp/TFTPErrorPacket.class deleted file mode 100644 index d5c2d38..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPErrorPacket.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPPacket.class b/src/main/resources/org/apache/commons/net/tftp/TFTPPacket.class deleted file mode 100644 index 79f30be..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPPacket.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPPacketException.class b/src/main/resources/org/apache/commons/net/tftp/TFTPPacketException.class deleted file mode 100644 index a17fd6d..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPPacketException.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPReadRequestPacket.class b/src/main/resources/org/apache/commons/net/tftp/TFTPReadRequestPacket.class deleted file mode 100644 index 7607f5c..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPReadRequestPacket.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPRequestPacket.class b/src/main/resources/org/apache/commons/net/tftp/TFTPRequestPacket.class deleted file mode 100644 index 89b7db1..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPRequestPacket.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/tftp/TFTPWriteRequestPacket.class b/src/main/resources/org/apache/commons/net/tftp/TFTPWriteRequestPacket.class deleted file mode 100644 index c87052f..0000000 Binary files a/src/main/resources/org/apache/commons/net/tftp/TFTPWriteRequestPacket.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/time/TimeTCPClient.class b/src/main/resources/org/apache/commons/net/time/TimeTCPClient.class deleted file mode 100644 index 275ea57..0000000 Binary files a/src/main/resources/org/apache/commons/net/time/TimeTCPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/time/TimeUDPClient.class b/src/main/resources/org/apache/commons/net/time/TimeUDPClient.class deleted file mode 100644 index a7ebdab..0000000 Binary files a/src/main/resources/org/apache/commons/net/time/TimeUDPClient.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/Base64.class b/src/main/resources/org/apache/commons/net/util/Base64.class deleted file mode 100644 index 9280537..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/Base64.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/Charsets.class b/src/main/resources/org/apache/commons/net/util/Charsets.class deleted file mode 100644 index b1c1a48..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/Charsets.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/KeyManagerUtils$ClientKeyStore.class b/src/main/resources/org/apache/commons/net/util/KeyManagerUtils$ClientKeyStore.class deleted file mode 100644 index 915ce21..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/KeyManagerUtils$ClientKeyStore.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/KeyManagerUtils$X509KeyManager.class b/src/main/resources/org/apache/commons/net/util/KeyManagerUtils$X509KeyManager.class deleted file mode 100644 index 110c5f9..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/KeyManagerUtils$X509KeyManager.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/KeyManagerUtils.class b/src/main/resources/org/apache/commons/net/util/KeyManagerUtils.class deleted file mode 100644 index 722846c..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/KeyManagerUtils.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/ListenerList.class b/src/main/resources/org/apache/commons/net/util/ListenerList.class deleted file mode 100644 index 1dd5fe2..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/ListenerList.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/SSLContextUtils.class b/src/main/resources/org/apache/commons/net/util/SSLContextUtils.class deleted file mode 100644 index 6f52bd8..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/SSLContextUtils.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/SSLSocketUtils.class b/src/main/resources/org/apache/commons/net/util/SSLSocketUtils.class deleted file mode 100644 index 92f06d5..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/SSLSocketUtils.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/SubnetUtils$1.class b/src/main/resources/org/apache/commons/net/util/SubnetUtils$1.class deleted file mode 100644 index 4047f3f..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/SubnetUtils$1.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/SubnetUtils$SubnetInfo.class b/src/main/resources/org/apache/commons/net/util/SubnetUtils$SubnetInfo.class deleted file mode 100644 index 06bdddd..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/SubnetUtils$SubnetInfo.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/SubnetUtils.class b/src/main/resources/org/apache/commons/net/util/SubnetUtils.class deleted file mode 100644 index c4f938b..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/SubnetUtils.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/TrustManagerUtils$TrustManager.class b/src/main/resources/org/apache/commons/net/util/TrustManagerUtils$TrustManager.class deleted file mode 100644 index 9986a14..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/TrustManagerUtils$TrustManager.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/util/TrustManagerUtils.class b/src/main/resources/org/apache/commons/net/util/TrustManagerUtils.class deleted file mode 100644 index 96425eb..0000000 Binary files a/src/main/resources/org/apache/commons/net/util/TrustManagerUtils.class and /dev/null differ diff --git a/src/main/resources/org/apache/commons/net/whois/WhoisClient.class b/src/main/resources/org/apache/commons/net/whois/WhoisClient.class deleted file mode 100644 index 91d3b03..0000000 Binary files a/src/main/resources/org/apache/commons/net/whois/WhoisClient.class and /dev/null differ diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5d138b8..544ad53 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,17 +1,19 @@ -main: me.zombie_striker.sr.Main -version: ${project.version} -name: ServerRestorer-Reborn -api-version: 1.13 +name: AutoWorldReset +version: 1.2 +main: de.viper.autoworldreset.AutoWorldReset +api-version: 1.21 +description: Automatisches Welt-Reset Plugin mit Backup-System & Quartz Cron-Scheduler +author: M_Viper + commands: - ServerRestorer: - description: Speichert den Server - aliases: [sr] + autoworldreset: + description: Hauptbefehl für AutoWorldReset + # BUG FIX: "status" zum usage-String ergänzt (Befehl existiert im Code, fehlte hier) + usage: / + permission: autoworldreset.use + aliases: [awr] + permissions: - serverrestorer.*: - description: Gibt Zugriff auf alle ServerRestorer-Befehle - children: - serverrestorer.save: true - serverrestorer.command: true - serverrestorer.restore: true -author: - M_Viper \ No newline at end of file + autoworldreset.use: + description: Erlaubt die Nutzung der AutoWorldReset Befehle + default: op \ No newline at end of file