How to fully delete world!

Discussion in 'Plugin Development' started by gamer1097, May 12, 2013.

Thread Status:
Not open for further replies.
  1. Offline

    gamer1097

    Hello i'm currently developing a plugin for a server. And after each match the players are all teleported out of the world to the main world and the world attempts to delete itself and the regenerate. But I Can Get All The Region Files To Be Unloaded And It Fails To Delete The World.
    Here is My Current Code!

    Code:
    package me.GamersMods.MobAPA;
     
    import java.io.File;
    import java.util.Map;
     
    import net.minecraft.server.v1_5_R3.MinecraftServer;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Chunk;
    import org.bukkit.World;
    import org.bukkit.World.Environment;
    import org.bukkit.WorldCreator;
    import org.bukkit.craftbukkit.v1_5_R3.CraftServer;
    import org.bukkit.craftbukkit.v1_5_R3.CraftWorld;
    import org.bukkit.entity.Player;
     
    import com.mysql.jdbc.Field;
     
    public class WorldGenerator
    {
        public static boolean WorldCreated = true;
       
     
        static File directory = new File("MobAPA");
       
       
        public static void DeleteWorld(World world)
        {
            if(Bukkit.getWorld("MobAPA").getLoadedChunks() != null && Bukkit.getWorld("MobAPA").getLoadedChunks().length > 0){
                for(Chunk c : Bukkit.getWorld("MobAPA").getLoadedChunks()){
                    c.unload(false, true);
                }   
                Bukkit.unloadWorld("MobAPA", false);
                System.out.println("Deleting World");
     
                File[] files = directory.listFiles();
               
                for (File file : files)
                {
                    file.delete();
                   
                    if (!file.delete())
                    {
                        System.out.println("Failed to delete "+file);
                    }
                }
            //    Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv delete MobAPA");
            //    Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mvconfirm");
                System.out.println("Deleted World");
                WorldCreated = false;
        }
        }
        public static void CreateWorld()
        {
                System.out.println("Creating New World!");
                Bukkit.createWorld(new WorldCreator("MobAPA").environment(Environment.NORMAL));
                //Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create MobAPA Normal");
                System.out.println("World Created!");
                WorldCreated = true;
                Bukkit.broadcastMessage(ChatColor.LIGHT_PURPLE + "[MobAPA] " + ChatColor.RED + ChatColor.BOLD +  "World Generated. You May Now Join With" + ChatColor.DARK_AQUA + ChatColor.ITALIC + " /mobjoin");       
        }
       
    }
    

    I have been trying multiple things to get this to work please any help will be appreciated or ideas to get around this.
     
  2. Offline

    caseif

    I've learned from past mistakes that you need a delay between unloading and deleting a world. Try putting the code which deletes the world in a sync delayed task with a delay of 60 ticks. If that doesn't help, you may find this method enlightening.
     
Thread Status:
Not open for further replies.

Share This Page