package de.janst.reset;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Reset extends JavaPlugin {
public static final String name = "ResetWorld";
public static Logger log;
public void onEnable() {
log = this.getLogger();
if(!new File(name).exists()) {
reset();
}
Bukkit.createWorld(new WorldCreator(name));
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(!(sender instanceof Player)) {
sender.sendMessage("Sorry, just for players ;/");
return true;
}
Player player = (Player) sender;
if(label.equalsIgnoreCase("tpw")) {
World resetworld = Bukkit.getWorld(name);
if(resetworld != null) {
player.teleport(resetworld.getSpawnLocation());
player.sendMessage("You were teleported");
return true;
}
else {
player.sendMessage("World does not exist");
return true;
}
}
else if(label.equalsIgnoreCase("reset")) {
reset();
player.sendMessage("World reset complete");
}
return false;
}
public void reset() {
log.info("World reset started");
World resetworld = Bukkit.getWorld(name);
if(resetworld != null) {
for(Player player : resetworld.getPlayers())
player.teleport(Bukkit.getWorlds().get(0).getSpawnLocation());
Bukkit.unloadWorld(name, false);
}
File file = new File(this.getDataFolder() + System.getProperty("file.separator") + name);
if(file != null) {
try {
copyDir(file, new File(name));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Bukkit.createWorld(new WorldCreator(name));
log.info("World reset successfully finished");
}
//http://www.java-forum.org/allgemeines/33129-verzeichnisse-durchsuchen-bearbeiten-auslesen.html
public void copyDir(File quelle, File ziel) throws FileNotFoundException, IOException {
File[] files = quelle.listFiles();
File newFile = null; // in diesem Objekt wird für jedes File der Zielpfad gespeichert.
// 1. Der alte Zielpfad
// 2. Das systemspezifische Pfadtrennungszeichen
// 3. Der Name des aktuellen Ordners/der aktuellen Datei
ziel.mkdirs(); // erstellt alle benötigten Ordner
if (files != null) {
for (int i = 0; i < files.length; i++) {
newFile = new File(ziel.getAbsolutePath() + System.getProperty("file.separator") + files[i].getName());
if (files[i].isDirectory()) {
copyDir(files[i], newFile);
}
else {
copyFile(files[i], newFile);
}
}
}
}
//http://www.java-forum.org/allgemeines/33129-verzeichnisse-durchsuchen-bearbeiten-auslesen.html
public void copyFile(File file, File ziel) throws FileNotFoundException, IOException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(ziel, true));
int bytes = 0;
while ((bytes = in.read()) != -1) { // Datei einlesen
out.write(bytes); // Datei schreiben
}
in.close();
out.close();
}
}