public byte[] ToBytes() { DataStream ds = new DataStream(1000); DataWriter dw = new DataWriter(ds); WriteBasicBytes(dw); dw.WriteInt(Components.Count); foreach (ItemStackBase itb in Components) { dw.WriteFullBytes(itb.ToBytes()); } dw.Flush(); return ds.ToArray(); }
public byte[] ServerBytes() { DataStream data = new DataStream(1000); DataWriter dw = new DataWriter(data); dw.WriteInt(Attributes.Count); foreach (KeyValuePair<string, TemplateObject> entry in Attributes) { dw.WriteFullString(entry.Key); if (entry.Value is IntegerTag) { dw.WriteByte(0); dw.WriteLong(((IntegerTag)entry.Value).Internal); } else if (entry.Value is NumberTag) { dw.WriteByte(1); dw.WriteDouble(((NumberTag)entry.Value).Internal); } else if (entry.Value is BooleanTag) { dw.WriteByte(2); dw.WriteByte((byte)(((BooleanTag)entry.Value).Internal ? 1 : 0)); } // TODO: shared BaseItemTag? else { dw.WriteByte(3); dw.WriteFullString(entry.Value.ToString()); } } WriteBasicBytes(dw); dw.WriteInt(Components.Count); foreach (ItemStack itb in Components) { dw.WriteFullBytes(itb.ServerBytes()); } dw.Flush(); return data.ToArray(); }