/// <summary> /// Reads from the given tag list and fills the slots in the inventory with the correct items. /// </summary> public virtual void ReadFromNBT(NBTTagList par1NBTTagList) { MainInventory = new ItemStack[36]; ArmorInventory = new ItemStack[4]; for (int i = 0; i < par1NBTTagList.TagCount(); i++) { NBTTagCompound nbttagcompound = (NBTTagCompound)par1NBTTagList.TagAt(i); int j = nbttagcompound.GetByte("Slot") & 0xff; ItemStack itemstack = ItemStack.LoadItemStackFromNBT(nbttagcompound); if (itemstack == null) { continue; } if (j >= 0 && j < MainInventory.Length) { MainInventory[j] = itemstack; } if (j >= 100 && j < ArmorInventory.Length + 100) { ArmorInventory[j - 100] = itemstack; } } }
/// <summary> /// Writes the inventory out as a list of compound tags. This is where the slot indices are used (+100 for armor, +80 /// for crafting). /// </summary> public virtual NBTTagList WriteToNBT(NBTTagList par1NBTTagList) { for (int i = 0; i < MainInventory.Length; i++) { if (MainInventory[i] != null) { NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.SetByte("Slot", (byte)i); MainInventory[i].WriteToNBT(nbttagcompound); par1NBTTagList.AppendTag(nbttagcompound); } } for (int j = 0; j < ArmorInventory.Length; j++) { if (ArmorInventory[j] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.SetByte("Slot", (byte)(j + 100)); ArmorInventory[j].WriteToNBT(nbttagcompound1); par1NBTTagList.AppendTag(nbttagcompound1); } } return(par1NBTTagList); }
public NBTTagList writeToNBT(NBTTagList nbttaglist) { for (int i = 0; i < mainInventory.Length; i++) { if (mainInventory[i] != null) { var nbttagcompound = new NBTTagCompound(); nbttagcompound.setByte("Slot", (byte)i); mainInventory[i].writeToNBT(nbttagcompound); nbttaglist.setTag(nbttagcompound); } } for (int j = 0; j < armorInventory.Length; j++) { if (armorInventory[j] != null) { var nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte)(j + 100)); armorInventory[j].writeToNBT(nbttagcompound1); nbttaglist.setTag(nbttagcompound1); } } return(nbttaglist); }
/// <summary>Writes the nbt's content to the <see cref="Stream"/></summary> /// <param name="tag">The tag to write to the <see cref="Stream"/></param> /// <param name="Context">The context to write to</param> public void WriteContent(NBTTagList tag, SerializationContext Context) { NBTTagType SubTagType = tag.SubType; ITagWriter Writer = NBTWriter.GetWriter(SubTagType); if (Writer == null) { throw new Exception($"Cannot find writer for {SubTagType}"); } Int32 Count = tag.Count; if (SubTagType == NBTTagType.List) { /*SubTag = new NBTTagList(SubTagType); * SubTag.SetInformation(NBTTagInformation.ListSubtype, (NBTTagType)Context.Stream.ReadByte()); * SubTag.SetInformation(NBTTagInformation.ListSize, Context.ReadInt32()); * Reader.ReadContent(SubTag, Context); * tag[I] = SubTag;*/ Context.Stream.WriteByte((Byte)tag.GetInformation(NBTTagInformation.ListSubtype)); Context.WriteInt32((Int32)tag.GetInformation(NBTTagInformation.ListSize)); } else { for (Int32 I = 0; I < Count; I++) { Writer.WriteContent(tag[I], Context); } } }
/// <summary>Adds a new sub <see cref="NBTTagList"/> to the collection</summary> /// <param name="Name">The name of the tag to add to the collection</param> /// <param name="SubType">The subtype of the tags inside the list</param> /// <param name="Capacity">The capacity to start the list with</param> /// <returns>Adds a new sub <see cref="NBTTagList"/> to the collection</returns> public ListBuilder AddSubList(String Name, NBTTagType SubType, Int32 Capacity = 10) { var Tag = new NBTTagList(Name, SubType, Capacity); var Builder = new ListBuilder(Tag); this._Tag.Add(Tag); return(Builder); }
/// <summary>Writes the nbt's header to the <see cref="Stream"/></summary> /// <param name="tag">The tag to write to the <see cref="Stream"/></param> /// <param name="Context">The context to write to</param> public void WriteHeader(NBTTagList tag, SerializationContext Context) { Context.Stream.WriteByte((Byte)tag.Type); NBTWriter.WriteString(Context, tag.Name); Context.Stream.WriteByte((Byte)tag.SubType); Context.WriteInt32((Int32)tag.Count); }
/// <summary> /// /// </summary> /// <param name="Tags"></param> /// <returns></returns> public static NBTTagList ToNBT(this ITag[] Tags) { Int32 Count = Tags.Length; var Out = new NBTTagList(NBTTagType.Compound, Count); for (Int32 I = 0; I < Count; I++) { Out.Add(Tags[I]); } return(Out); }
/// <summary> /// /// </summary> /// <param name="Tags"></param> /// <returns></returns> public static NBTTagList ToNBT <T>(this List <T> Tags, String Name) where T : ITag { Int32 Count = Tags.Count; var Out = new NBTTagList(Name, NBTTagType.Compound, Count); for (Int32 I = 0; I < Count; I++) { Out.Add(Tags[I]); } return(Out); }
public override void readFromNBT(NBTTagCompound nbttagcompound) { base.readFromNBT(nbttagcompound); NBTTagList nbttaglist = nbttagcompound.getTagList("Items"); chestContents = new ItemStack[getSizeInventory()]; for (int i = 0; i < nbttaglist.tagCount(); i++) { var nbttagcompound1 = (NBTTagCompound)nbttaglist.tagAt(i); int j = nbttagcompound1.getByte("Slot") & 0xff; if (j >= 0 && j < chestContents.Length) { chestContents[j] = new ItemStack(nbttagcompound1); } } }
/// <summary> /// Reads a tile entity from NBT. /// </summary> public override void ReadFromNBT(NBTTagCompound par1NBTTagCompound) { base.ReadFromNBT(par1NBTTagCompound); NBTTagList nbttaglist = par1NBTTagCompound.GetTagList("Items"); ChestContents = 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 < ChestContents.Length) { ChestContents[j] = ItemStack.LoadItemStackFromNBT(nbttagcompound); } } }
public override void writeToNBT(NBTTagCompound nbttagcompound) { base.writeToNBT(nbttagcompound); var nbttaglist = new NBTTagList(); for (int i = 0; i < chestContents.Length; i++) { if (chestContents[i] != null) { var nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte)i); chestContents[i].writeToNBT(nbttagcompound1); nbttaglist.setTag(nbttagcompound1); } } nbttagcompound.setTag("Items", 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 < ChestContents.Length; i++) { if (ChestContents[i] != null) { NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.SetByte("Slot", (byte)i); ChestContents[i].WriteToNBT(nbttagcompound); nbttaglist.AppendTag(nbttagcompound); } } par1NBTTagCompound.SetTag("Items", nbttaglist); }
/// <summary> /// Writes a tile entity to NBT. /// </summary> public override void WriteToNBT(NBTTagCompound par1NBTTagCompound) { base.WriteToNBT(par1NBTTagCompound); par1NBTTagCompound.SetShort("BurnTime", (short)FurnaceBurnTime); par1NBTTagCompound.SetShort("CookTime", (short)FurnaceCookTime); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i < FurnaceItemStacks.Length; i++) { if (FurnaceItemStacks[i] != null) { NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.SetByte("Slot", (byte)i); FurnaceItemStacks[i].WriteToNBT(nbttagcompound); nbttaglist.AppendTag(nbttagcompound); } } par1NBTTagCompound.SetTag("Items", nbttaglist); }
public override void readFromNBT(NBTTagCompound nbttagcompound) { base.readFromNBT(nbttagcompound); NBTTagList nbttaglist = nbttagcompound.getTagList("Items"); furnaceItemStacks = new ItemStack[getSizeInventory()]; for (int i = 0; i < nbttaglist.tagCount(); i++) { var nbttagcompound1 = (NBTTagCompound)nbttaglist.tagAt(i); byte byte0 = nbttagcompound1.getByte("Slot"); if (byte0 >= 0 && byte0 < furnaceItemStacks.Length) { furnaceItemStacks[byte0] = new ItemStack(nbttagcompound1); } } furnaceBurnTime = nbttagcompound.getShort("BurnTime"); furnaceCookTime = nbttagcompound.getShort("CookTime"); currentItemBurnTime = getItemBurnTime(furnaceItemStacks[1]); }
public override void writeToNBT(NBTTagCompound nbttagcompound) { base.writeToNBT(nbttagcompound); nbttagcompound.setShort("BurnTime", (short)furnaceBurnTime); nbttagcompound.setShort("CookTime", (short)furnaceCookTime); var nbttaglist = new NBTTagList(); for (int i = 0; i < furnaceItemStacks.Length; i++) { if (furnaceItemStacks[i] != null) { var nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte)i); furnaceItemStacks[i].writeToNBT(nbttagcompound1); nbttaglist.setTag(nbttagcompound1); } } nbttagcompound.setTag("Items", nbttaglist); }
/// <summary>Reads the nbt's content from the <see cref="Stream"/></summary> /// <param name="tag">The tag to read from the <see cref="Stream"/></param> /// <param name="Context">The context to read from</param> public void ReadContent(ITag tag, SerializationContext Context) { ITag SubTag; Object O = tag.GetInformation(NBTTagInformation.ListSubtype); if (O == null) { throw new Exception("List returned no subtype"); } var SubTagType = (NBTTagType)O; ITagReader Reader = NBTReader.GetReader(SubTagType); if (Reader == null) { throw new Exception($"No reader for type: {SubTagType}"); } if (SubTagType == NBTTagType.List) { for (Int32 I = 0; I < tag.Count; I++) { SubTag = new NBTTagList(SubTagType); SubTag.SetInformation(NBTTagInformation.ListSubtype, (NBTTagType)Context.Stream.ReadByte()); SubTag.SetInformation(NBTTagInformation.ListSize, Context.ReadInt32()); Reader.ReadContent(SubTag, Context); tag[I] = SubTag; } } else { for (Int32 I = 0; I < tag.Count; I++) { SubTag = NBTTagFactory.Create(SubTagType); tag[I] = SubTag; Reader.ReadContent(SubTag, Context); } } }
/// <summary> /// Reads a tile entity from NBT. /// </summary> public override void ReadFromNBT(NBTTagCompound par1NBTTagCompound) { base.ReadFromNBT(par1NBTTagCompound); NBTTagList nbttaglist = par1NBTTagCompound.GetTagList("Items"); FurnaceItemStacks = 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 < FurnaceItemStacks.Length) { FurnaceItemStacks[byte0] = ItemStack.LoadItemStackFromNBT(nbttagcompound); } } FurnaceBurnTime = par1NBTTagCompound.GetShort("BurnTime"); FurnaceCookTime = par1NBTTagCompound.GetShort("CookTime"); CurrentItemBurnTime = GetItemBurnTime(FurnaceItemStacks[1]); }
public void readFromNBT(NBTTagList nbttaglist) { mainInventory = new ItemStack[36]; armorInventory = new ItemStack[4]; for (int i = 0; i < nbttaglist.tagCount(); i++) { var nbttagcompound = (NBTTagCompound)nbttaglist.tagAt(i); int j = nbttagcompound.getByte("Slot") & 0xff; var itemstack = new ItemStack(nbttagcompound); if (itemstack.getItem() == null) { continue; } if (j >= 0 && j < mainInventory.Length) { mainInventory[j] = itemstack; } if (j >= 100 && j < armorInventory.Length + 100) { armorInventory[j - 100] = itemstack; } } }
public static void ConvertToAnvilFormat(AnvilConverterData par0AnvilConverterData, NBTTagCompound par1NBTTagCompound, WorldChunkManager par2WorldChunkManager) { par1NBTTagCompound.SetInteger("xPos", par0AnvilConverterData.x); par1NBTTagCompound.SetInteger("zPos", par0AnvilConverterData.z); par1NBTTagCompound.SetLong("LastUpdate", par0AnvilConverterData.LastUpdated); int[] ai = new int[par0AnvilConverterData.Heightmap.Length]; for (int i = 0; i < par0AnvilConverterData.Heightmap.Length; i++) { ai[i] = par0AnvilConverterData.Heightmap[i]; } par1NBTTagCompound.Func_48183_a("HeightMap", ai); par1NBTTagCompound.Setbool("TerrainPopulated", par0AnvilConverterData.TerrainPopulated); NBTTagList nbttaglist = new NBTTagList("Sections"); for (int j = 0; j < 8; j++) { bool flag = true; for (int l = 0; l < 16 && flag; l++) { label0: for (int j1 = 0; j1 < 16 && flag; j1++) { int k1 = 0; do { if (k1 >= 16) { goto label0; } int l1 = l << 11 | k1 << 7 | j1 + (j << 4); byte byte0 = par0AnvilConverterData.Blocks[l1]; if (byte0 != 0) { flag = false; goto label0; } k1++; }while (true); } } if (flag) { continue; } byte[] abyte1 = new byte[4096]; NibbleArray nibblearray = new NibbleArray(abyte1.Length, 4); NibbleArray nibblearray1 = new NibbleArray(abyte1.Length, 4); NibbleArray nibblearray2 = new NibbleArray(abyte1.Length, 4); for (int i2 = 0; i2 < 16; i2++) { for (int j2 = 0; j2 < 16; j2++) { for (int k2 = 0; k2 < 16; k2++) { int l2 = i2 << 11 | k2 << 7 | j2 + (j << 4); byte byte1 = par0AnvilConverterData.Blocks[l2]; abyte1[j2 << 8 | k2 << 4 | i2] = (byte)(byte1 & 0xff); nibblearray.Set(i2, j2, k2, par0AnvilConverterData.Data.Get(i2, j2 + (j << 4), k2)); nibblearray1.Set(i2, j2, k2, par0AnvilConverterData.SkyLight.Get(i2, j2 + (j << 4), k2)); nibblearray2.Set(i2, j2, k2, par0AnvilConverterData.BlockLight.Get(i2, j2 + (j << 4), k2)); } } } NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.SetByte("Y", (byte)(j & 0xff)); nbttagcompound.SetByteArray("Blocks", abyte1); nbttagcompound.SetByteArray("Data", nibblearray.Data); nbttagcompound.SetByteArray("SkyLight", nibblearray1.Data); nbttagcompound.SetByteArray("BlockLight", nibblearray2.Data); nbttaglist.AppendTag(nbttagcompound); } par1NBTTagCompound.SetTag("Sections", nbttaglist); byte[] abyte0 = new byte[256]; for (int k = 0; k < 16; k++) { for (int i1 = 0; i1 < 16; i1++) { abyte0[i1 << 4 | k] = (byte)(par2WorldChunkManager.GetBiomeGenAt(par0AnvilConverterData.x << 4 | k, par0AnvilConverterData.z << 4 | i1).BiomeID & 0xff); } } par1NBTTagCompound.SetByteArray("Biomes", abyte0); par1NBTTagCompound.SetTag("Entities", par0AnvilConverterData.Entities); par1NBTTagCompound.SetTag("TileEntities", par0AnvilConverterData.TileEntities); if (par0AnvilConverterData.TileTicks != null) { par1NBTTagCompound.SetTag("TileTicks", par0AnvilConverterData.TileTicks); } }
/// <summary>Creates a new instance of <see cref="ListBuilder"/></summary> /// <param name="Base">FILL IN</param> public ListBuilder(NBTTagList Base) { this._Tag = Base; }
public override void writeToNBT(NBTTagCompound nbttagcompound) { base.writeToNBT(nbttagcompound); var nbttaglist = new NBTTagList(); for (int i = 0; i < chestContents.Length; i++) { if (chestContents[i] != null) { var nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte) i); chestContents[i].writeToNBT(nbttagcompound1); nbttaglist.setTag(nbttagcompound1); } } nbttagcompound.setTag("Items", nbttaglist); }
public override void writeToNBT(NBTTagCompound nbttagcompound) { base.writeToNBT(nbttagcompound); nbttagcompound.setShort("BurnTime", (short) furnaceBurnTime); nbttagcompound.setShort("CookTime", (short) furnaceCookTime); var nbttaglist = new NBTTagList(); for (int i = 0; i < furnaceItemStacks.Length; i++) { if (furnaceItemStacks[i] != null) { var nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte) i); furnaceItemStacks[i].writeToNBT(nbttagcompound1); nbttaglist.setTag(nbttagcompound1); } } nbttagcompound.setTag("Items", nbttaglist); }