Welt-Ordner löschen (Minecraft plugin bukkit)?
Hallo, die Frage ist eigentlich ziemlich simpel.
Wie kriege ich es hin dass wenn ich ein cmd eingebe und dann als args der name des welt ordners eingebe, dass die Welt bzw der Ordner gelöscht wird?
Also ich hab schon paar Sachen ausprobiert haben aber alle nicht funktioniert.
Danke im Vorraus!
2 Antworten
Hey,
zuerst musst du die Welt unloaden, danach kannst du den Welten-Ordner einfach löschen. Hier ein Beispiel:
public class DeleteWorldCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (args.length != 1) {
// falsche Syntax
return true;
}
World world = Bukkit.getWorld(args[0]);
if (world == null) {
// welt existiert nicht
return true;
}
Bukkit.unloadWorld(world, true);
deleteFolder(world.getWorldFolder().toPath());
Bukkit.getConsoleSender().sendMessage("Deleted world " + world.getName());
return true;
}
private void deleteFolder(Path path) {
try {
Files.walk(path)
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Mfg Jannick (L1nd)
Eine geladene Welt kann nicht gelöscht werden.
Die drei Standardwelten (world, world_nether, world_the_end) können (soweit ich weiß) nicht entladen werden.
Zum Rest:
World world = Bukkit.getWorld("IrgendeineWelt"); //Welche Welt soll entladen werden?
boolean save = true; //Soll die Welt beim Entladen gespeichert werden?
Bukkit.getServer().unloadWorld(world, save); //Entlade eine Welt
Danach benötigst du eine Methode, um einen vollen Ordner rekursiv zu löschen.
Leider bin ich gerade am Handy und habe keine Lust so eine Methode am Handy zu schreiben.
Werde sie dir also gerne morgen schreiben sobald ich am PC bin
Okay, das hatte ich bis jetzt auch aber wenn du mir des dann morgen schreiben könntest währe es sehr nett dankeschön^^