Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Восстановление краты скай варс

Discussion in 'Разработка плагинов для новичков' started by markfokin, May 11, 2020.

  1. Автор темы
    markfokin

    markfokin Новичок

    Trophy Points:
    16
    Привет, пытаюсь создать восстановление мира через замену файла ворлд, на резервную копию воралда, но почему то не работает. Должно было быть так.. после рестарта сервера удаляется основной мир с названием "world", после чего загружается и переименовывается новый мир с названием "worldcopy", но он этого не делает. Чего я только не пытался делать. Помогите пожалуйста решить эту проблему ибо вообще не понимаю в чём дело..

    Самое интересное ошибок в консоли, либо нет либо вот эта -

    Code:
    [13:46:41 ERROR]: Error occurred while disabling SkyWars v1.8 (Is it up to date?)
    java.lang.NullPointerException
            at net.gravenilvec.SkyWars.onDisable(SkyWars.java:45) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:323) ~[core.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:364) [core.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:424) [core.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:417) [core.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.craftbukkit.v1_8_R3.CraftServer.disablePlugins(CraftServer.java:336) [core.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.stop(MinecraftServer.java:460) [core.jar:git-Spigot-db6de12-18fbb24]
            at org.spigotmc.RestartCommand.restart(RestartCommand.java:81) [core.jar:git-Spigot-db6de12-18fbb24]
            at org.spigotmc.RestartCommand.restart(RestartCommand.java:40) [core.jar:git-Spigot-db6de12-18fbb24]
            at org.spigotmc.RestartCommand$1.run(RestartCommand.java:31) [core.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:729) [core.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [core.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [core.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [core.jar:git-Spigot-db6de12-18fbb24]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_45]
    А так же код главного класса, в onDisable прописан сам метод -
    Code:
    package net.gravenilvec;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    
    import net.gravenilvec.events.EventsManager;
    import net.gravenilvec.events.util.Locations;
    import net.gravenilvec.events.util.*;
    import net.gravenilvec.game.GameState;
    
    import org.bukkit.Bukkit;
    import org.bukkit.World;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class SkyWars extends JavaPlugin{
       
        public ArrayList<Player> playersList = new ArrayList<>();
        public static SkyWars instance;
        public WorldUtils worldUtils = new WorldUtils();
       
        public static SkyWars getInstance(){
            return instance;
        }
    
        @Override
        public void onEnable(){
            super.onEnable();
            instance = this;
            GameState.setState(GameState.LOBBY);
            new Locations();
            new EventsManager(this).registerEvents();
        }
    
        @Override
        public void onDisable(){
            if(GameState.isState(GameState.GAME)) {
            World world = Bukkit.getWorld("world");
            World copy = Bukkit.getWorld("worldcopy");
            Bukkit.unloadWorld(world, false);
           
            File worldfile = new File(world.getName());
            File worldcopyfile = new File (copy.getName());
            worldUtils.deleteWorld(worldfile);
           
            //copy
            try {
                worldUtils.copyFolder(worldcopyfile, worldfile);
            } catch (IOException e) {
                e.printStackTrace();
            }
            }
             super.onDisable();
           
        }
    }
    
    Так же есть вот этот класс WorldUtils -
    Code:
    package net.gravenilvec.events.util;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
     
    public class WorldUtils {
     
      
         public void copyFolder(File src, File dest) throws IOException{
              
                if(src.isDirectory()){
                  
                    if(!dest.exists()){
                        dest.mkdir();
                    }
                  
                    String files[] = src.list(); //3 fichiers
                    for(String file : files){
                        File srcFile = new File(src, file);
                        File destFile = new File(dest, file);
                        copyFolder(srcFile, destFile);
                    }
                  
                }else{
        
                    InputStream in = new FileInputStream(src);
                    OutputStream out = new FileOutputStream(dest);   
                  
                    byte[] b = new byte[1204];
                    int length;
                  
                    while((length = in.read()) > 0){
                        out.write(b, 0, length);
                    }
                  
                    in.close();
                    out.close();
                  
        
                }
         }
      
        public void deleteWorld(File fichier){
            if(fichier.exists()){
                File files[] = fichier.listFiles();
                for(int i = 0; i < files.length; i++){
                      if(files[i].isDirectory()){
                            deleteWorld(files[i]);
                        }else{
                            files[i].delete();
                        }
                }
            }
      
    }
    }
     
  2. Хостинг MineCraft
    <

Share This Page