示例#1
0
        public static void storeChunkInCompound(Chunk chunk, World world, NBTTagCompound nbttagcompound)
        {
            world.checkSessionLock();
            nbttagcompound.setInteger("xPos", chunk.xPosition);
            nbttagcompound.setInteger("zPos", chunk.zPosition);
            nbttagcompound.setLong("LastUpdate", world.getWorldTime());
            nbttagcompound.setByteArray("Blocks", chunk.blocks);
            nbttagcompound.setByteArray("Data", chunk.data.data);
            nbttagcompound.setByteArray("SkyLight", chunk.skylightMap.data);
            nbttagcompound.setByteArray("BlockLight", chunk.blocklightMap.data);
            nbttagcompound.setByteArray("HeightMap", chunk.heightMap);
            nbttagcompound.setBoolean("TerrainPopulated", chunk.isTerrainPopulated);
            chunk.hasEntities = false;
            var nbttaglist = new NBTTagList();

            for (int i = 0; i < chunk.entities.Length; i++)
            {
                Iterator iterator = chunk.entities[i].iterator();
                do
                {
                    if (!iterator.hasNext())
                    {
                        goto label0;
                    }
                    var entity = (Entity)iterator.next();
                    chunk.hasEntities = true;
                    var nbttagcompound1 = new NBTTagCompound();
                    if (entity.addEntityID(nbttagcompound1))
                    {
                        nbttaglist.setTag(nbttagcompound1);
                    }
                } while (true);
            }
label0:

            nbttagcompound.setTag("Entities", nbttaglist);
            var            nbttaglist1 = new NBTTagList();
            NBTTagCompound nbttagcompound2;

            for (Iterator iterator1 = chunk.chunkTileEntityMap.values().iterator();
                 iterator1.hasNext();
                 nbttaglist1.setTag(nbttagcompound2))
            {
                var tileentity = (TileEntity)iterator1.next();
                nbttagcompound2 = new NBTTagCompound();
                tileentity.writeToNBT(nbttagcompound2);
            }

            nbttagcompound.setTag("TileEntities", nbttaglist1);
        }
示例#2
0
        public void saveChunk(World world, Chunk chunk)
        {
            world.checkSessionLock();
            File file = chunkFileForXZ(chunk.xPosition, chunk.zPosition);

            if (file.exists())
            {
                WorldInfo worldinfo = world.getWorldInfo();
                worldinfo.func_22177_b(worldinfo.func_22182_g() - file.length());
            }
            try
            {
                var file1            = new File(saveDir, "tmp_chunk.dat");
                var fileoutputstream = new FileOutputStream(file1);
                var nbttagcompound   = new NBTTagCompound();
                var nbttagcompound1  = new NBTTagCompound();
                nbttagcompound.setTag("Level", nbttagcompound1);
                storeChunkInCompound(chunk, world, nbttagcompound1);
                CompressedStreamTools.writeGzippedCompoundToOutputStream(nbttagcompound, fileoutputstream);
                fileoutputstream.close();
                if (file.exists())
                {
                    file.delete();
                }
                file1.renameTo(file);
                WorldInfo worldinfo1 = world.getWorldInfo();
                worldinfo1.func_22177_b(worldinfo1.func_22182_g() + file.length());
            }
            catch (Exception exception)
            {
                exception.printStackTrace();
            }
        }
示例#3
0
        public virtual void func_22094_a(WorldInfo worldinfo)
        {
            NBTTagCompound nbttagcompound  = worldinfo.func_22185_a();
            var            nbttagcompound1 = new NBTTagCompound();

            nbttagcompound1.setTag("Data", nbttagcompound);
            try
            {
                var file  = new File(field_22099_b, "level.dat_new");
                var file1 = new File(field_22099_b, "level.dat_old");
                var file2 = new File(field_22099_b, "level.dat");
                CompressedStreamTools.writeGzippedCompoundToOutputStream(nbttagcompound1, new FileOutputStream(file));
                if (file1.exists())
                {
                    file1.delete();
                }
                file2.renameTo(file1);
                if (file2.exists())
                {
                    file2.delete();
                }
                file.renameTo(file2);
                if (file.exists())
                {
                    file.delete();
                }
            }
            catch (Exception exception)
            {
                exception.printStackTrace();
            }
        }
示例#4
0
        public override void writeEntityToNBT(NBTTagCompound nbttagcompound)
        {
            nbttagcompound.setInteger("Type", minecartType);
            if (minecartType == 2)
            {
                nbttagcompound.setDouble("PushX", pushX);
                nbttagcompound.setDouble("PushZ", pushZ);
                nbttagcompound.setShort("Fuel", (short)fuel);
            }
            else if (minecartType == 1)
            {
                var nbttaglist = new NBTTagList();
                for (int i = 0; i < cargoItems.Length; i++)
                {
                    if (cargoItems[i] != null)
                    {
                        var nbttagcompound1 = new NBTTagCompound();
                        nbttagcompound1.setByte("Slot", (byte)i);
                        cargoItems[i].writeToNBT(nbttagcompound1);
                        nbttaglist.setTag(nbttagcompound1);
                    }
                }

                nbttagcompound.setTag("Items", nbttaglist);
            }
        }
示例#5
0
 public override void writeEntityToNBT(NBTTagCompound nbttagcompound)
 {
     base.writeEntityToNBT(nbttagcompound);
     nbttagcompound.setTag("Inventory", inventory.writeToNBT(new NBTTagList()));
     nbttagcompound.setInteger("Dimension", dimension);
     nbttagcompound.setBoolean("Sleeping", sleeping);
     nbttagcompound.setShort("SleepTimer", (short)sleepTimer);
 }
示例#6
0
 public virtual void writeToNBT(NBTTagCompound nbttagcompound)
 {
     nbttagcompound.setTag("Pos", newDoubleNBTList(new[]
     {
         posX, posY, posZ
     }));
     nbttagcompound.setTag("Motion", newDoubleNBTList(new[]
     {
         motionX, motionY, motionZ
     }));
     nbttagcompound.setTag("Rotation", newFloatNBTList(new[]
     {
         rotationYaw, rotationPitch
     }));
     nbttagcompound.setFloat("FallDistance", fallDistance);
     nbttagcompound.setShort("Fire", (short)fire);
     nbttagcompound.setShort("Air", (short)air);
     nbttagcompound.setBoolean("OnGround", onGround);
     writeEntityToNBT(nbttagcompound);
 }
示例#7
0
        public override void writeToNBT(NBTTagCompound nbttagcompound)
        {
            base.writeToNBT(nbttagcompound);
            var nbttaglist = new NBTTagList();

            for (int i = 0; i < dispenserContents.Length; i++)
            {
                if (dispenserContents[i] != null)
                {
                    var nbttagcompound1 = new NBTTagCompound();
                    nbttagcompound1.setByte("Slot", (byte)i);
                    dispenserContents[i].writeToNBT(nbttagcompound1);
                    nbttaglist.setTag(nbttagcompound1);
                }
            }

            nbttagcompound.setTag("Items", nbttaglist);
        }
示例#8
0
 public void saveChunk(World world, Chunk chunk)
 {
     world.checkSessionLock();
     try
     {
         DataOutputStream dataoutputstream = RegionFileCache.func_22120_d(field_22110_a, chunk.xPosition,
                                                                          chunk.zPosition);
         var nbttagcompound = new NBTTagCompound();
         var nbttagcompound1 = new NBTTagCompound();
         nbttagcompound.setTag("Level", nbttagcompound1);
         ChunkLoader.storeChunkInCompound(chunk, world, nbttagcompound1);
         CompressedStreamTools.func_771_a(nbttagcompound, dataoutputstream);
         dataoutputstream.close();
         WorldInfo worldinfo = world.getWorldInfo();
         worldinfo.func_22177_b(worldinfo.func_22182_g() +
                                RegionFileCache.func_22121_b(field_22110_a, chunk.xPosition, chunk.zPosition));
     }
     catch (Exception exception)
     {
         exception.printStackTrace();
     }
 }
示例#9
0
 public void saveChunk(World world, Chunk chunk)
 {
     world.checkSessionLock();
     try
     {
         DataOutputStream dataoutputstream = RegionFileCache.func_22120_d(field_22110_a, chunk.xPosition,
                                                                          chunk.zPosition);
         var nbttagcompound  = new NBTTagCompound();
         var nbttagcompound1 = new NBTTagCompound();
         nbttagcompound.setTag("Level", nbttagcompound1);
         ChunkLoader.storeChunkInCompound(chunk, world, nbttagcompound1);
         CompressedStreamTools.func_771_a(nbttagcompound, dataoutputstream);
         dataoutputstream.close();
         WorldInfo worldinfo = world.getWorldInfo();
         worldinfo.func_22177_b(worldinfo.func_22182_g() +
                                RegionFileCache.func_22121_b(field_22110_a, chunk.xPosition, chunk.zPosition));
     }
     catch (Exception exception)
     {
         exception.printStackTrace();
     }
 }
示例#10
0
 public override void writeEntityToNBT(NBTTagCompound nbttagcompound)
 {
     base.writeEntityToNBT(nbttagcompound);
     nbttagcompound.setTag("Inventory", inventory.writeToNBT(new NBTTagList()));
     nbttagcompound.setInteger("Dimension", dimension);
     nbttagcompound.setBoolean("Sleeping", sleeping);
     nbttagcompound.setShort("SleepTimer", (short) sleepTimer);
 }
示例#11
0
文件: Entity.cs 项目: riverar/Crafty
 public virtual void writeToNBT(NBTTagCompound nbttagcompound)
 {
     nbttagcompound.setTag("Pos", newDoubleNBTList(new[]
                                                   {
                                                       posX, posY, posZ
                                                   }));
     nbttagcompound.setTag("Motion", newDoubleNBTList(new[]
                                                      {
                                                          motionX, motionY, motionZ
                                                      }));
     nbttagcompound.setTag("Rotation", newFloatNBTList(new[]
                                                       {
                                                           rotationYaw, rotationPitch
                                                       }));
     nbttagcompound.setFloat("FallDistance", fallDistance);
     nbttagcompound.setShort("Fire", (short) fire);
     nbttagcompound.setShort("Air", (short) air);
     nbttagcompound.setBoolean("OnGround", onGround);
     writeEntityToNBT(nbttagcompound);
 }
示例#12
0
        public override void writeEntityToNBT(NBTTagCompound nbttagcompound)
        {
            nbttagcompound.setInteger("Type", minecartType);
            if (minecartType == 2)
            {
                nbttagcompound.setDouble("PushX", pushX);
                nbttagcompound.setDouble("PushZ", pushZ);
                nbttagcompound.setShort("Fuel", (short) fuel);
            }
            else if (minecartType == 1)
            {
                var nbttaglist = new NBTTagList();
                for (int i = 0; i < cargoItems.Length; i++)
                {
                    if (cargoItems[i] != null)
                    {
                        var nbttagcompound1 = new NBTTagCompound();
                        nbttagcompound1.setByte("Slot", (byte) i);
                        cargoItems[i].writeToNBT(nbttagcompound1);
                        nbttaglist.setTag(nbttagcompound1);
                    }
                }

                nbttagcompound.setTag("Items", nbttaglist);
            }
        }
示例#13
0
 public virtual void func_22094_a(WorldInfo worldinfo)
 {
     NBTTagCompound nbttagcompound = worldinfo.func_22185_a();
     var nbttagcompound1 = new NBTTagCompound();
     nbttagcompound1.setTag("Data", nbttagcompound);
     try
     {
         var file = new File(field_22099_b, "level.dat_new");
         var file1 = new File(field_22099_b, "level.dat_old");
         var file2 = new File(field_22099_b, "level.dat");
         CompressedStreamTools.writeGzippedCompoundToOutputStream(nbttagcompound1, new FileOutputStream(file));
         if (file1.exists())
         {
             file1.delete();
         }
         file2.renameTo(file1);
         if (file2.exists())
         {
             file2.delete();
         }
         file.renameTo(file2);
         if (file.exists())
         {
             file.delete();
         }
     }
     catch (Exception exception)
     {
         exception.printStackTrace();
     }
 }
示例#14
0
        public static void storeChunkInCompound(Chunk chunk, World world, NBTTagCompound nbttagcompound)
        {
            world.checkSessionLock();
            nbttagcompound.setInteger("xPos", chunk.xPosition);
            nbttagcompound.setInteger("zPos", chunk.zPosition);
            nbttagcompound.setLong("LastUpdate", world.getWorldTime());
            nbttagcompound.setByteArray("Blocks", chunk.blocks);
            nbttagcompound.setByteArray("Data", chunk.data.data);
            nbttagcompound.setByteArray("SkyLight", chunk.skylightMap.data);
            nbttagcompound.setByteArray("BlockLight", chunk.blocklightMap.data);
            nbttagcompound.setByteArray("HeightMap", chunk.heightMap);
            nbttagcompound.setBoolean("TerrainPopulated", chunk.isTerrainPopulated);
            chunk.hasEntities = false;
            var nbttaglist = new NBTTagList();

            for (int i = 0; i < chunk.entities.Length; i++)
            {
                Iterator iterator = chunk.entities[i].iterator();
                do
                {
                    if (!iterator.hasNext())
                    {
                        goto label0;
                    }
                    var entity = (Entity) iterator.next();
                    chunk.hasEntities = true;
                    var nbttagcompound1 = new NBTTagCompound();
                    if (entity.addEntityID(nbttagcompound1))
                    {
                        nbttaglist.setTag(nbttagcompound1);
                    }
                } while (true);
            }
            label0:

            nbttagcompound.setTag("Entities", nbttaglist);
            var nbttaglist1 = new NBTTagList();
            NBTTagCompound nbttagcompound2;
            for (Iterator iterator1 = chunk.chunkTileEntityMap.values().iterator();
                 iterator1.hasNext();
                 nbttaglist1.setTag(nbttagcompound2))
            {
                var tileentity = (TileEntity) iterator1.next();
                nbttagcompound2 = new NBTTagCompound();
                tileentity.writeToNBT(nbttagcompound2);
            }

            nbttagcompound.setTag("TileEntities", nbttaglist1);
        }
示例#15
0
 public void saveChunk(World world, Chunk chunk)
 {
     world.checkSessionLock();
     File file = chunkFileForXZ(chunk.xPosition, chunk.zPosition);
     if (file.exists())
     {
         WorldInfo worldinfo = world.getWorldInfo();
         worldinfo.func_22177_b(worldinfo.func_22182_g() - file.length());
     }
     try
     {
         var file1 = new File(saveDir, "tmp_chunk.dat");
         var fileoutputstream = new FileOutputStream(file1);
         var nbttagcompound = new NBTTagCompound();
         var nbttagcompound1 = new NBTTagCompound();
         nbttagcompound.setTag("Level", nbttagcompound1);
         storeChunkInCompound(chunk, world, nbttagcompound1);
         CompressedStreamTools.writeGzippedCompoundToOutputStream(nbttagcompound, fileoutputstream);
         fileoutputstream.close();
         if (file.exists())
         {
             file.delete();
         }
         file1.renameTo(file);
         WorldInfo worldinfo1 = world.getWorldInfo();
         worldinfo1.func_22177_b(worldinfo1.func_22182_g() + file.length());
     }
     catch (Exception exception)
     {
         exception.printStackTrace();
     }
 }
示例#16
0
        public override void writeToNBT(NBTTagCompound nbttagcompound)
        {
            base.writeToNBT(nbttagcompound);
            var nbttaglist = new NBTTagList();
            for (int i = 0; i < dispenserContents.Length; i++)
            {
                if (dispenserContents[i] != null)
                {
                    var nbttagcompound1 = new NBTTagCompound();
                    nbttagcompound1.setByte("Slot", (byte) i);
                    dispenserContents[i].writeToNBT(nbttagcompound1);
                    nbttaglist.setTag(nbttagcompound1);
                }
            }

            nbttagcompound.setTag("Items", nbttaglist);
        }