Exemplo n.º 1
0
        public async Task <bool> DeleteDimensionAsync(MinecraftDimension dimension, Server server)
        {
            Task <bool> t = new Task <bool>(() => DeleteDimension(dimension, server));

            t.Start();
            bool result = await t;

            return(result);
        }
Exemplo n.º 2
0
        private bool DeleteDimension(MinecraftDimension dimension, Server server)
        {
            DirectoryInfo dimensionDir = GetDimensionFolder(dimension, server);

            if (!dimensionDir.Exists)
            {
                return(true);
            }

            DirectoryInfo dimBackups =
                Directory.CreateDirectory(Path.Combine(App.ServerPath, server.Name, "DimensionBackups"));
            string timeStamp = DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + "_" +
                               DateTime.Now.Hour + "-" + DateTime.Now.Minute;

            ZipFile.CreateFromDirectory(dimensionDir.FullName,
                                        Path.Combine(dimBackups.FullName, dimension + "_" + timeStamp + ".zip"));
            dimensionDir.Delete(true);
            return(!dimensionDir.Exists);
        }
Exemplo n.º 3
0
        private DirectoryInfo GetDimensionFolder(MinecraftDimension dimension, Server server)
        {
            //TODO Select folder of current world...
            switch (server.Version.Type)
            {
            case ServerVersion.VersionType.Vanilla:
                switch (dimension)
                {
                case MinecraftDimension.Nether:
                    return(new DirectoryInfo(Path.Combine(App.ServerPath, server.Name, server.Name,
                                                          "DIM-1")));

                case MinecraftDimension.End:
                    return(new DirectoryInfo(
                               Path.Combine(App.ServerPath, server.Name, server.Name, "DIM1")));

                default:
                    throw new ArgumentException("No implementation for deletion of dimension " + dimension +
                                                " on Vanilla servers");
                }

            case ServerVersion.VersionType.Paper:
                switch (dimension)
                {
                case MinecraftDimension.Nether:
                    return(new DirectoryInfo(Path.Combine(App.ServerPath, server.Name,
                                                          server.Name + "_nether")));

                case MinecraftDimension.End:
                    return(new DirectoryInfo(Path.Combine(App.ServerPath, server.Name,
                                                          server.Name + "_the_end")));

                default:
                    throw new ArgumentException("No implementation for deletion of dimension " + dimension +
                                                " on Paper servers");
                }

            default:
                throw new ArgumentException("No implementation for deletion of " + server.Version.Type +
                                            " dimensions");
            }
        }
Exemplo n.º 4
0
        private DirectoryInfo GetDimensionFolder(MinecraftDimension dimension, Server server)
        {
            string worldFolder = Path.Combine(App.ServerPath, server.Name, server.ServerSettings.LevelName);

            switch (server.Version.Type)
            {
            case ServerVersion.VersionType.Vanilla:
                switch (dimension)
                {
                case MinecraftDimension.Nether:
                    return(new DirectoryInfo(Path.Combine(worldFolder, "DIM-1")));

                case MinecraftDimension.End:
                    return(new DirectoryInfo(
                               Path.Combine(worldFolder, "DIM1")));

                default:
                    throw new ArgumentException("No implementation for deletion of dimension " + dimension +
                                                " on Vanilla servers");
                }

            case ServerVersion.VersionType.Paper:
            case ServerVersion.VersionType.Spigot:
                switch (dimension)
                {
                case MinecraftDimension.Nether:
                    return(new DirectoryInfo(worldFolder + "_nether"));

                case MinecraftDimension.End:
                    return(new DirectoryInfo(worldFolder + "_the_end"));

                default:
                    throw new ArgumentException("No implementation for deletion of dimension " + dimension +
                                                " on Paper servers");
                }

            default:
                throw new ArgumentException("No implementation for deletion of " + server.Version.Type +
                                            " dimensions");
            }
        }