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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем markfokin, 11 май 2020.

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

    markfokin Новичок

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

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

    Код:
    [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 прописан сам метод -
    Код:
    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 -
    Код:
    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
    <

Поделиться этой страницей