コード例 #1
0
        /// <summary>
        /// Loads the specified(XZ) chunk into the specified world.
        /// </summary>
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: public Chunk loadChunk(World par1World, int par2, int par3) throws IOException
        public virtual Chunk LoadChunk(World par1World, int par2, int par3)
        {
            NBTTagCompound    nbttagcompound    = null;
            ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(par2, par3);

            lock (Field_48450_c)
            {
                if (Field_48449_b.Contains(chunkcoordintpair))
                {
                    int i = 0;

                    do
                    {
                        if (i >= Field_48451_a.Count)
                        {
                            break;
                        }

                        if (Field_48451_a[i].Field_48427_a.Equals(chunkcoordintpair))
                        {
                            nbttagcompound = Field_48451_a[i].Field_48426_b;
                            break;
                        }

                        i++;
                    }while (true);
                }
            }

            if (nbttagcompound == null)
            {
                Stream datainputstream = RegionFileCache.GetChunkFileStream(ChunkSaveLocation, par2, par3);

                if (datainputstream != null)
                {
                    nbttagcompound = CompressedStreamTools.Read(new BinaryReader(datainputstream));
                }
                else
                {
                    return(null);
                }
            }

            return(Func_48443_a(par1World, par2, par3, nbttagcompound));
        }
コード例 #2
0
        /// <summary>
        /// Load the server list from servers.dat
        /// </summary>
        private void LoadServerList()
        {
            try
            {
                NBTTagCompound nbttagcompound = CompressedStreamTools.Read(System.IO.Path.Combine(Mc.McDataDir, "servers.dat"));
                NBTTagList     nbttaglist     = nbttagcompound.GetTagList("servers");
                ServerList.Clear();

                for (int i = 0; i < nbttaglist.TagCount(); i++)
                {
                    ServerList.Add(ServerNBTStorage.CreateServerNBTStorage((NBTTagCompound)nbttaglist.TagAt(i)));
                }
            }
            catch (Exception exception)
            {
                Utilities.LogException(exception);
            }
        }
コード例 #3
0
        /// <summary>
        /// Loads the idCounts Map from the 'idcounts' file.
        /// </summary>
        private void LoadIdCounts()
        {
            try
            {
                IdCounts.Clear();

                if (SaveHandler == null)
                {
                    return;
                }

                string file = SaveHandler.GetMapFileFromName("idcounts");

                if (file != null && File.Exists(file))
                {
                    BinaryReader   datainputstream = new BinaryReader(new FileStream(file, FileMode.Open));
                    NBTTagCompound nbttagcompound  = CompressedStreamTools.Read(datainputstream);
                    datainputstream.Close();
                    IEnumerator <NBTBase> iterator = nbttagcompound.GetTags().GetEnumerator();

                    do
                    {
                        if (!iterator.MoveNext())
                        {
                            break;
                        }

                        NBTBase nbtbase = iterator.Current;

                        if (nbtbase is NBTTagShort)
                        {
                            NBTTagShort nbttagshort = (NBTTagShort)nbtbase;
                            string      s           = nbttagshort.GetName();
                            short       word0       = nbttagshort.Data;
                            IdCounts[s] = word0;
                        }
                    }while (true);
                }
            }
            catch (Exception exception)
            {
                Utilities.LogException(exception);
            }
        }
コード例 #4
0
        private void Func_48430_a(string par1File, string par2File, WorldChunkManager par3WorldChunkManager, int par4, int par5, IProgressUpdate par6IProgressUpdate)
        {
            try
            {
                FileInfo   file        = new FileInfo(par2File);
                string     s           = file.Name;
                RegionFile regionfile  = new RegionFile(par2File);
                RegionFile regionfile1 = new RegionFile(IOPath.Combine(par1File, (new StringBuilder()).Append(s.Substring(0, s.Length - ".mcr".Length)).Append(".mca").ToString()));

                for (int i = 0; i < 32; i++)
                {
                    for (int j = 0; j < 32; j++)
                    {
                        if (!regionfile.IsChunkSaved(i, j) || regionfile1.IsChunkSaved(i, j))
                        {
                            continue;
                        }

                        Stream datainputstream = regionfile.GetChunkFileStream(i, j);

                        if (datainputstream == null)
                        {
                            Console.WriteLine("Failed to fetch input stream");
                        }
                        else
                        {
                            NBTTagCompound nbttagcompound = CompressedStreamTools.Read(new BinaryReader(datainputstream));
                            datainputstream.Close();

                            NBTTagCompound nbttagcompound1 = nbttagcompound.GetCompoundTag("Level");

                            AnvilConverterData anvilconverterdata = ChunkLoader.Load(nbttagcompound1);
                            NBTTagCompound     nbttagcompound2    = new NBTTagCompound();
                            NBTTagCompound     nbttagcompound3    = new NBTTagCompound();
                            nbttagcompound2.SetTag("Level", nbttagcompound3);

                            ChunkLoader.ConvertToAnvilFormat(anvilconverterdata, nbttagcompound3, par3WorldChunkManager);

                            Stream dataoutputstream = regionfile1.GetChunkDataOutputStream(i, j);
                            CompressedStreamTools.Write(nbttagcompound2, new BinaryWriter(dataoutputstream));
                            dataoutputstream.Close();
                        }
                    }

                    int k = (int)Math.Round((100D * (double)(par4 * 1024)) / (double)(par5 * 1024));
                    int l = (int)Math.Round((100D * (double)((i + 1) * 32 + par4 * 1024)) / (double)(par5 * 1024));

                    if (l > k)
                    {
                        par6IProgressUpdate.SetLoadingProgress(l);
                    }
                }

                regionfile.Close();
                regionfile1.Close();
            }
            catch (IOException ioexception)
            {
                Utilities.LogException(ioexception);
            }
        }