Exemplo n.º 1
0
        /// <summary>
        /// Executes the enchantment modifier on the ItemStack passed.
        /// </summary>
        private static void ApplyEnchantmentModifier(IEnchantmentModifier par0IEnchantmentModifier, ItemStack par1ItemStack)
        {
            if (par1ItemStack == null)
            {
                return;
            }

            NBTTagList nbttaglist = par1ItemStack.GetEnchantmentTagList();

            if (nbttaglist == null)
            {
                return;
            }

            for (int i = 0; i < nbttaglist.TagCount(); i++)
            {
                short word0 = ((NBTTagCompound)nbttaglist.TagAt(i)).GetShort("id");
                short word1 = ((NBTTagCompound)nbttaglist.TagAt(i)).GetShort("lvl");

                if (Enchantment.EnchantmentsList[word0] != null)
                {
                    par0IEnchantmentModifier.CalculateModifier(Enchantment.EnchantmentsList[word0], word1);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// (abstract) Protected helper method to read subclass entity data from NBT.
        /// </summary>
        public override void ReadEntityFromNBT(NBTTagCompound par1NBTTagCompound)
        {
            MinecartType = par1NBTTagCompound.GetInteger("Type");

            if (MinecartType == 2)
            {
                PushX = (float)par1NBTTagCompound.GetDouble("PushX");
                PushZ = (float)par1NBTTagCompound.GetDouble("PushZ");
                Fuel  = par1NBTTagCompound.GetShort("Fuel");
            }
            else if (MinecartType == 1)
            {
                NBTTagList nbttaglist = par1NBTTagCompound.GetTagList("Items");
                CargoItems = new ItemStack[GetSizeInventory()];

                for (int i = 0; i < nbttaglist.TagCount(); i++)
                {
                    NBTTagCompound nbttagcompound = (NBTTagCompound)nbttaglist.TagAt(i);
                    int            j = nbttagcompound.GetByte("Slot") & 0xff;

                    if (j >= 0 && j < CargoItems.Length)
                    {
                        CargoItems[j] = ItemStack.LoadItemStackFromNBT(nbttagcompound);
                    }
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Returns the level of enchantment on the ItemStack passed.
        /// </summary>
        public static int GetEnchantmentLevel(int par0, ItemStack par1ItemStack)
        {
            if (par1ItemStack == null)
            {
                return(0);
            }

            NBTTagList nbttaglist = par1ItemStack.GetEnchantmentTagList();

            if (nbttaglist == null)
            {
                return(0);
            }

            for (int i = 0; i < nbttaglist.TagCount(); i++)
            {
                short word0 = ((NBTTagCompound)nbttaglist.TagAt(i)).GetShort("id");
                short word1 = ((NBTTagCompound)nbttaglist.TagAt(i)).GetShort("lvl");

                if (word0 == par0)
                {
                    return(word1);
                }
            }

            return(0);
        }
Exemplo n.º 4
0
        /// <summary>
        /// gets a list of strings representing the item name and successive extra data, eg Enchantments and potion effects
        /// </summary>
        public List <string> GetItemNameandInformation()
        {
            List <string> arraylist = new List <string>();
            Item          item      = Item.ItemsList[ItemID];

            arraylist.Add(item.GetItemDisplayName(this));
            item.AddInformation(this, arraylist);

            if (HasTagCompound())
            {
                NBTTagList nbttaglist = GetEnchantmentTagList();

                if (nbttaglist != null)
                {
                    for (int i = 0; i < nbttaglist.TagCount(); i++)
                    {
                        short word0 = ((NBTTagCompound)nbttaglist.TagAt(i)).GetShort("id");
                        short word1 = ((NBTTagCompound)nbttaglist.TagAt(i)).GetShort("lvl");

                        if (Enchantment.EnchantmentsList[word0] != null)
                        {
                            arraylist.Add(Enchantment.EnchantmentsList[word0].GetTranslatedName(word1));
                        }
                    }
                }
            }

            return(arraylist);
        }
Exemplo n.º 5
0
        /// <summary>
        /// (abstract) Protected helper method to write subclass entity data to NBT.
        /// </summary>
        public override void WriteEntityToNBT(NBTTagCompound par1NBTTagCompound)
        {
            par1NBTTagCompound.SetInteger("Type", MinecartType);

            if (MinecartType == 2)
            {
                par1NBTTagCompound.SetDouble("PushX", PushX);
                par1NBTTagCompound.SetDouble("PushZ", PushZ);
                par1NBTTagCompound.SetShort("Fuel", (short)Fuel);
            }
            else if (MinecartType == 1)
            {
                NBTTagList nbttaglist = new NBTTagList();

                for (int i = 0; i < CargoItems.Length; i++)
                {
                    if (CargoItems[i] != null)
                    {
                        NBTTagCompound nbttagcompound = new NBTTagCompound();
                        nbttagcompound.SetByte("Slot", (byte)i);
                        CargoItems[i].WriteToNBT(nbttagcompound);
                        nbttaglist.AppendTag(nbttagcompound);
                    }
                }

                par1NBTTagCompound.SetTag("Items", nbttaglist);
            }
        }
        public override bool Equals(object par1Obj)
        {
            if (base.Equals(par1Obj))
            {
                NBTTagList nbttaglist = (NBTTagList)par1Obj;

                if (TagType == nbttaglist.TagType)
                {
                    return(TagList.Equals(nbttaglist.TagList));
                }
            }

            return(false);
        }
        /// <summary>
        /// Creates a clone of the tag.
        /// </summary>
        public override NBTBase Copy()
        {
            NBTTagList nbttaglist = new NBTTagList(GetName());

            nbttaglist.TagType = TagType;
            NBTBase nbtbase1;

            for (IEnumerator <NBTBase> iterator = TagList.GetEnumerator(); iterator.MoveNext(); nbttaglist.TagList.Add(nbtbase1))
            {
                NBTBase nbtbase = iterator.Current;
                nbtbase1 = nbtbase.Copy();
            }

            return(nbttaglist);
        }
        /// <summary>
        /// Writes a tile entity to NBT.
        /// </summary>
        public override void WriteToNBT(NBTTagCompound par1NBTTagCompound)
        {
            base.WriteToNBT(par1NBTTagCompound);
            NBTTagList nbttaglist = new NBTTagList();

            for (int i = 0; i < DispenserContents.Length; i++)
            {
                if (DispenserContents[i] != null)
                {
                    NBTTagCompound nbttagcompound = new NBTTagCompound();
                    nbttagcompound.SetByte("Slot", (byte)i);
                    DispenserContents[i].WriteToNBT(nbttagcompound);
                    nbttaglist.AppendTag(nbttagcompound);
                }
            }

            par1NBTTagCompound.SetTag("Items", nbttaglist);
        }
        /// <summary>
        /// Reads a tile entity from NBT.
        /// </summary>
        public override void ReadFromNBT(NBTTagCompound par1NBTTagCompound)
        {
            base.ReadFromNBT(par1NBTTagCompound);
            NBTTagList nbttaglist = par1NBTTagCompound.GetTagList("Items");

            DispenserContents = new ItemStack[GetSizeInventory()];

            for (int i = 0; i < nbttaglist.TagCount(); i++)
            {
                NBTTagCompound nbttagcompound = (NBTTagCompound)nbttaglist.TagAt(i);
                int            j = nbttagcompound.GetByte("Slot") & 0xff;

                if (j >= 0 && j < DispenserContents.Length)
                {
                    DispenserContents[j] = ItemStack.LoadItemStackFromNBT(nbttagcompound);
                }
            }
        }
        /// <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);
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Writes a tile entity to NBT.
        /// </summary>
        public override void WriteToNBT(NBTTagCompound par1NBTTagCompound)
        {
            base.WriteToNBT(par1NBTTagCompound);
            par1NBTTagCompound.SetShort("BrewTime", (short)BrewTime);
            NBTTagList nbttaglist = new NBTTagList();

            for (int i = 0; i < BrewingItemStacks.Length; i++)
            {
                if (BrewingItemStacks[i] != null)
                {
                    NBTTagCompound nbttagcompound = new NBTTagCompound();
                    nbttagcompound.SetByte("Slot", (byte)i);
                    BrewingItemStacks[i].WriteToNBT(nbttagcompound);
                    nbttaglist.AppendTag(nbttagcompound);
                }
            }

            par1NBTTagCompound.SetTag("Items", nbttaglist);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Adds a enchantments with a desired level on the ItemStack.
        /// </summary>
        public void AddEnchantment(Enchantment par1Enchantment, int par2)
        {
            if (StackTagCompound == null)
            {
                SetTagCompound(new NBTTagCompound());
            }

            if (!StackTagCompound.HasKey("ench"))
            {
                StackTagCompound.SetTag("ench", new NBTTagList("ench"));
            }

            NBTTagList     nbttaglist     = (NBTTagList)StackTagCompound.GetTag("ench");
            NBTTagCompound nbttagcompound = new NBTTagCompound();

            nbttagcompound.SetShort("id", (short)par1Enchantment.EffectId);
            nbttagcompound.SetShort("lvl", (sbyte)par2);
            nbttaglist.AppendTag(nbttagcompound);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Reads a tile entity from NBT.
        /// </summary>
        public override void ReadFromNBT(NBTTagCompound par1NBTTagCompound)
        {
            base.ReadFromNBT(par1NBTTagCompound);
            NBTTagList nbttaglist = par1NBTTagCompound.GetTagList("Items");

            BrewingItemStacks = new ItemStack[GetSizeInventory()];

            for (int i = 0; i < nbttaglist.TagCount(); i++)
            {
                NBTTagCompound nbttagcompound = (NBTTagCompound)nbttaglist.TagAt(i);
                byte           byte0          = nbttagcompound.GetByte("Slot");

                if (byte0 >= 0 && byte0 < BrewingItemStacks.Length)
                {
                    BrewingItemStacks[byte0] = ItemStack.LoadItemStackFromNBT(nbttagcompound);
                }
            }

            BrewTime = par1NBTTagCompound.GetShort("BrewTime");
        }
        /// <summary>
        /// Save the server list to servers.dat
        /// </summary>
        private void SaveServerList()
        {
            try
            {
                NBTTagList nbttaglist = new NBTTagList();

                for (int i = 0; i < ServerList.Count; i++)
                {
                    nbttaglist.AppendTag(ServerList[i].GetCompoundTag());
                }

                NBTTagCompound nbttagcompound = new NBTTagCompound();
                nbttagcompound.SetTag("servers", nbttaglist);
                CompressedStreamTools.SafeWrite(nbttagcompound, System.IO.Path.Combine(Mc.McDataDir, "servers.dat"));
            }
            catch (Exception exception)
            {
                Utilities.LogException(exception);
            }
        }
Exemplo n.º 15
0
        private Chunk Func_48444_a(World par1World, NBTTagCompound par2NBTTagCompound)
        {
            int   i     = par2NBTTagCompound.GetInteger("xPos");
            int   j     = par2NBTTagCompound.GetInteger("zPos");
            Chunk chunk = new Chunk(par1World, i, j);

            chunk.HeightMap          = par2NBTTagCompound.Func_48182_l("HeightMap");
            chunk.IsTerrainPopulated = par2NBTTagCompound.Getbool("TerrainPopulated");
            NBTTagList nbttaglist = par2NBTTagCompound.GetTagList("Sections");
            sbyte      byte0      = 16;

            ExtendedBlockStorage[] aextendedblockstorage = new ExtendedBlockStorage[byte0];

            for (int k = 0; k < nbttaglist.TagCount(); k++)
            {
                NBTTagCompound       nbttagcompound       = (NBTTagCompound)nbttaglist.TagAt(k);
                byte                 byte1                = nbttagcompound.GetByte("Y");
                ExtendedBlockStorage extendedblockstorage = new ExtendedBlockStorage(byte1 << 4);
                extendedblockstorage.SetBlockLSBArray(nbttagcompound.GetByteArray("Blocks"));

                if (nbttagcompound.HasKey("Add"))
                {
                    extendedblockstorage.SetBlockMSBArray(new NibbleArray(nbttagcompound.GetByteArray("Add"), 4));
                }

                extendedblockstorage.SetBlockMetadataArray(new NibbleArray(nbttagcompound.GetByteArray("Data"), 4));
                extendedblockstorage.SetSkylightArray(new NibbleArray(nbttagcompound.GetByteArray("SkyLight"), 4));
                extendedblockstorage.SetBlocklightArray(new NibbleArray(nbttagcompound.GetByteArray("BlockLight"), 4));
                extendedblockstorage.Func_48708_d();
                aextendedblockstorage[byte1] = extendedblockstorage;
            }

            chunk.SetStorageArrays(aextendedblockstorage);

            if (par2NBTTagCompound.HasKey("Biomes"))
            {
                chunk.SetBiomeArray(par2NBTTagCompound.GetByteArray("Biomes"));
            }

            NBTTagList nbttaglist1 = par2NBTTagCompound.GetTagList("Entities");

            if (nbttaglist1 != null)
            {
                for (int l = 0; l < nbttaglist1.TagCount(); l++)
                {
                    NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglist1.TagAt(l);
                    Entity         entity          = EntityList.CreateEntityFromNBT(nbttagcompound1, par1World);
                    chunk.HasEntities = true;

                    if (entity != null)
                    {
                        chunk.AddEntity(entity);
                    }
                }
            }

            NBTTagList nbttaglist2 = par2NBTTagCompound.GetTagList("TileEntities");

            if (nbttaglist2 != null)
            {
                for (int i1 = 0; i1 < nbttaglist2.TagCount(); i1++)
                {
                    NBTTagCompound nbttagcompound2 = (NBTTagCompound)nbttaglist2.TagAt(i1);
                    TileEntity     tileentity      = TileEntity.CreateAndLoadEntity(nbttagcompound2);

                    if (tileentity != null)
                    {
                        chunk.AddTileEntity(tileentity);
                    }
                }
            }

            if (par2NBTTagCompound.HasKey("TileTicks"))
            {
                NBTTagList nbttaglist3 = par2NBTTagCompound.GetTagList("TileTicks");

                if (nbttaglist3 != null)
                {
                    for (int j1 = 0; j1 < nbttaglist3.TagCount(); j1++)
                    {
                        NBTTagCompound nbttagcompound3 = (NBTTagCompound)nbttaglist3.TagAt(j1);
                        par1World.ScheduleBlockUpdateFromLoad(nbttagcompound3.GetInteger("x"), nbttagcompound3.GetInteger("y"), nbttagcompound3.GetInteger("z"), nbttagcompound3.GetInteger("i"), nbttagcompound3.GetInteger("t"));
                    }
                }
            }

            return(chunk);
        }
Exemplo n.º 16
0
        private void Func_48445_a(Chunk par1Chunk, World par2World, NBTTagCompound par3NBTTagCompound)
        {
            par2World.CheckSessionLock();
            par3NBTTagCompound.SetInteger("xPos", par1Chunk.XPosition);
            par3NBTTagCompound.SetInteger("zPos", par1Chunk.ZPosition);
            par3NBTTagCompound.SetLong("LastUpdate", par2World.GetWorldTime());
            par3NBTTagCompound.Func_48183_a("HeightMap", par1Chunk.HeightMap);
            par3NBTTagCompound.Setbool("TerrainPopulated", par1Chunk.IsTerrainPopulated);
            ExtendedBlockStorage[] aextendedblockstorage = par1Chunk.GetBlockStorageArray();
            NBTTagList             nbttaglist            = new NBTTagList("Sections");

            ExtendedBlockStorage[] aextendedblockstorage1 = aextendedblockstorage;
            int i = aextendedblockstorage1.Length;

            for (int k = 0; k < i; k++)
            {
                ExtendedBlockStorage extendedblockstorage = aextendedblockstorage1[k];

                if (extendedblockstorage == null || extendedblockstorage.Func_48700_f() == 0)
                {
                    continue;
                }

                NBTTagCompound nbttagcompound = new NBTTagCompound();
                nbttagcompound.SetByte("Y", (byte)(extendedblockstorage.GetYLocation() >> 4 & 0xff));
                nbttagcompound.SetByteArray("Blocks", extendedblockstorage.Func_48692_g());

                if (extendedblockstorage.GetBlockMSBArray() != null)
                {
                    nbttagcompound.SetByteArray("Add", extendedblockstorage.GetBlockMSBArray().Data);
                }

                nbttagcompound.SetByteArray("Data", extendedblockstorage.Func_48697_j().Data);
                nbttagcompound.SetByteArray("SkyLight", extendedblockstorage.GetSkylightArray().Data);
                nbttagcompound.SetByteArray("BlockLight", extendedblockstorage.GetBlocklightArray().Data);
                nbttaglist.AppendTag(nbttagcompound);
            }

            par3NBTTagCompound.SetTag("Sections", nbttaglist);
            par3NBTTagCompound.SetByteArray("Biomes", par1Chunk.GetBiomeArray());
            par1Chunk.HasEntities = false;
            NBTTagList nbttaglist1 = new NBTTagList();

label0:

            for (int j = 0; j < par1Chunk.EntityLists.Length; j++)
            {
                IEnumerator <Entity> iterator = par1Chunk.EntityLists[j].GetEnumerator();

                do
                {
                    if (!iterator.MoveNext())
                    {
                        goto label0;
                    }

                    Entity entity = iterator.Current;
                    par1Chunk.HasEntities = true;
                    NBTTagCompound nbttagcompound1 = new NBTTagCompound();

                    if (entity.AddEntityID(nbttagcompound1))
                    {
                        nbttaglist1.AppendTag(nbttagcompound1);
                    }
                }while (true);
            }

            par3NBTTagCompound.SetTag("Entities", nbttaglist1);
            NBTTagList     nbttaglist2 = new NBTTagList();
            NBTTagCompound nbttagcompound2;

            for (IEnumerator <TileEntity> iterator1 = par1Chunk.ChunkTileEntityMap.Values.GetEnumerator(); iterator1.MoveNext(); nbttaglist2.AppendTag(nbttagcompound2))
            {
                TileEntity tileentity = iterator1.Current;
                nbttagcompound2 = new NBTTagCompound();
                tileentity.WriteToNBT(nbttagcompound2);
            }

            par3NBTTagCompound.SetTag("TileEntities", nbttaglist2);
            List <NextTickListEntry> list = par2World.GetPendingBlockUpdates(par1Chunk, false);

            if (list != null)
            {
                long           l           = par2World.GetWorldTime();
                NBTTagList     nbttaglist3 = new NBTTagList();
                NBTTagCompound nbttagcompound3;

                for (IEnumerator <NextTickListEntry> iterator2 = list.GetEnumerator(); iterator2.MoveNext(); nbttaglist3.AppendTag(nbttagcompound3))
                {
                    NextTickListEntry nextticklistentry = iterator2.Current;
                    nbttagcompound3 = new NBTTagCompound();
                    nbttagcompound3.SetInteger("i", nextticklistentry.BlockID);
                    nbttagcompound3.SetInteger("x", nextticklistentry.XCoord);
                    nbttagcompound3.SetInteger("y", nextticklistentry.YCoord);
                    nbttagcompound3.SetInteger("z", nextticklistentry.ZCoord);
                    nbttagcompound3.SetInteger("t", (int)(nextticklistentry.ScheduledTime - l));
                }

                par3NBTTagCompound.SetTag("TileTicks", nbttaglist3);
            }
        }