Example #1
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(EntityId);
     stream.Write(Type);
     stream.Write((int)(X * 32));
     stream.Write((int)(Y * 32));
     stream.Write((int)(Z * 32));
 }
Example #2
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     Type = stream.ReadSByte();
     X = (double)stream.ReadInt() / 32.0d;
     Y = (double)stream.ReadInt() / 32.0d;
     Z = (double)stream.ReadInt() / 32.0d;
 }
Example #3
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     Type = (ObjectType)stream.ReadSByte();
     X = (double)stream.ReadInt() / 32.0d; // ((double)intX / 32.0d) => representation of X as double
     Y = (double)stream.ReadInt() / 32.0d;
     Z = (double)stream.ReadInt() / 32.0d;
     UnknownFlag = stream.ReadInt();
     UnknownA = stream.ReadShort();
     UnknownB = stream.ReadShort();
     UnknownC = stream.ReadShort();
 }
Example #4
0
        public override void Write(BigEndianStream stream)
        {
            stream.Write(X);
            stream.Write(Y);
            stream.Write(Z);
            stream.Write(SizeX);
            stream.Write(SizeY);
            stream.Write(SizeZ);

            int o = 16 * 16 * 128;
            byte[] data = new byte[o * 5 / 2];

            int i = 0;
            for (int x = 0; x < 16; x++)
            {
                for (int z = 0; z < 16; z++)
                {
                    for (int y = 0; y < 128; y++)
                    {
                        int s = ((i + 1) & 1) * 4;
                        int ofst = i;
                        data[ofst] = Chunk[x, y, z];
                        ofst = i / 2 + o * 2 / 2;
                        data[ofst] = unchecked((byte)(data[ofst] | (Chunk.GetData(x, y, z) << s)));
                        ofst = i / 2 + o * 3 / 2;
                        data[ofst] = unchecked((byte)(data[ofst] | (Chunk.GetBlockLight(x, y, z) << s)));
                        ofst = i / 2 + o * 4 / 2;
                        data[ofst] = unchecked((byte)(data[ofst] | (Chunk.GetSkyLight(x, y, z) << s)));
                        i++;
                    }
                }
            }

            byte[] comp = new byte[o * 5];
            int len;

            Deflater deflater = new Deflater(0);
            try
            {
                deflater.setInput(data);
                deflater.finish();
                len = deflater.deflate(comp);
            }
            finally
            {
                deflater.end();
            }

            stream.Write(len);
            stream.Write(comp, 0, len);
        }
Example #5
0
        public override void Read(BigEndianStream stream)
        {
            int posX = stream.ReadInt();
            short posY = stream.ReadShort();
            int posZ = stream.ReadInt();
            byte sizeX = (byte)(stream.ReadByte() + 1);
            byte sizeY = (byte)(stream.ReadByte() + 1);
            byte sizeZ = (byte)(stream.ReadByte() + 1);

            int o = sizeX * sizeY * sizeZ;
            Chunk = new Chunk(null, posX, posZ);

            int len = stream.ReadInt();
            byte[] comp = new byte[len];
            byte[] data = new byte[o * 5 / 2];
            len = stream.Read(comp, 0, len);
        }
Example #6
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(EntityId);
     stream.Write(DeltaX);
     stream.Write(DeltaY);
     stream.Write(DeltaZ);
 }
Example #7
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(EntityId);
     stream.Write(Title);
     stream.Write(X);
     stream.Write(Y);
     stream.Write(Z);
     stream.Write(GraphicId);
 }
Example #8
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(EntityId);
     stream.Write(Data);
 }
Example #9
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(EntityId);
     stream.Write(Yaw);
     stream.Write(Pitch);
 }
Example #10
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(EntityId);
     stream.Write(Slot);
     stream.Write(ItemId);
     stream.Write(Durability);
 }
Example #11
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(EntityId);
     stream.Write((byte)Effect);
     stream.Write(Amplifier);
     stream.Write(Duration);
 }
Example #12
0
 public override void Read(BigEndianStream stream)
 {
     WindowId = stream.ReadSByte();
 }
Example #13
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(Message);
 }
Example #14
0
 public override void Read(BigEndianStream stream)
 {
     Message = stream.ReadString16(100);
 }
Example #15
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(X);
     stream.Write(Y);
     stream.Write(Z);
     stream.Write(Type);
     stream.Write(Data);
 }
Example #16
0
 internal void ReadEnchantmentsFromNBT(BigEndianStream stream)
 {
     // TODO: Implement this and choose return value
 }
Example #17
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     Effect = (EntityEffects)stream.ReadByte();
     Amplifier = stream.ReadByte();
     Duration = stream.ReadShort();
 }
Example #18
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(WindowId);
 }
Example #19
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     Slot = stream.ReadShort();
     ItemId = stream.ReadShort();
     Durability = stream.ReadShort();
 }
Example #20
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     PlayerId = stream.ReadInt();
 }
Example #21
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     Yaw = stream.ReadSByte();
     Pitch = stream.ReadSByte();
 }
Example #22
0
 public override void Read(BigEndianStream stream)
 {
     Slot = stream.ReadShort();
     ItemID = stream.ReadShort();
     Quantity = stream.ReadShort();
     Damage = stream.ReadShort();
 }
Example #23
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     Data = stream.ReadMetaData();
 }
Example #24
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(Slot);
     stream.Write(ItemID);
     stream.Write(Quantity);
     stream.Write(Damage);
 }
Example #25
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     Title = stream.ReadString16(13);
     X = stream.ReadInt();
     Y = stream.ReadInt();
     Z = stream.ReadInt();
     GraphicId = stream.ReadInt();
 }
Example #26
0
 public override void Read(BigEndianStream stream)
 {
     Reason = stream.ReadString16(100);
 }
Example #27
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     DeltaX = stream.ReadSByte();
     DeltaY = stream.ReadSByte();
     DeltaZ = stream.ReadSByte();
 }
Example #28
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(Reason);
 }
Example #29
0
 public override void Read(BigEndianStream stream)
 {
     EntityId = stream.ReadInt();
     EntityStatus = stream.ReadSByte();
 }
Example #30
0
 public override void Read(BigEndianStream stream)
 {
     PlayerId = stream.ReadInt();
     Action = (ActionType)stream.ReadSByte();
 }
Example #31
0
 public override void Write(BigEndianStream stream)
 {
     stream.Write(PlayerId);
     stream.Write((sbyte)Action);
 }
        private NbtNode ReadNode(BigEndianStream zipped)
        {
            byte    type = (byte)zipped.ReadByte();
            NbtNode node = null;

            switch (type)
            {
            case 0:
                return(new NbtStop());

            case 1:
                node = new NbtByte
                {
                    Name  = zipped.ReadString8(),
                    Value = zipped.ReadByte()
                };
                break;

            case 2:
                node = new NbtShort
                {
                    Name  = zipped.ReadString8(),
                    Value = zipped.ReadInt16()
                };
                break;

            case 3:
                node = new NbtInt
                {
                    Name  = zipped.ReadString8(),
                    Value = zipped.ReadInt32()
                };
                break;

            case 4:
                node = new NbtLong
                {
                    Name  = zipped.ReadString8(),
                    Value = zipped.ReadInt64()
                };
                break;

            case 5:
                node = new NbtFloat
                {
                    Name  = zipped.ReadString8(),
                    Value = zipped.ReadSingle()
                };
                break;

            case 6:
                node = new NbtDouble
                {
                    Name  = zipped.ReadString8(),
                    Value = zipped.ReadDouble()
                };
                break;

            case 7:
                node = new NbtBytes
                {
                    Name  = zipped.ReadString8(),
                    Value = zipped.ReadBytes(zipped.ReadInt32())
                };
                break;

            case 8:
                node = new NbtString
                {
                    Name  = zipped.ReadString8(),
                    Value = zipped.ReadString8()
                };
                break;

            case 9:
                node = new NbtList();
                ((NbtList)node).Name   = zipped.ReadString8();
                ((NbtList)node).Childs = new List <object>();
                byte tagId = zipped.ReadByte();
                ((NbtList)node).TagId = tagId;
                int length = zipped.ReadInt32();

                for (int i = 0; i < length; i++)
                {
                    ((NbtList)node).Childs.Add(ReadRaw(zipped, tagId));
                }
                break;

            case 10:
                node = new NbtCompound();
                ((NbtCompound)node).Name   = zipped.ReadString8();
                ((NbtCompound)node).Childs = new List <NbtNode>();
                NbtNode subNode;
                while ((subNode = ReadNode(zipped)).Type != 0)
                {
                    ((NbtCompound)node).Childs.Add(subNode);
                }
                break;

            case 11:
                node = new NbtInts
                {
                    Name  = zipped.ReadString8(),
                    Value = ByteToIntArray(zipped.ReadBytes(zipped.ReadInt32() * sizeof(int)))
                };
                break;
            }
            //string str = zipped.ReadString8(100);
            if (node == null)
            {
                throw new Exception();
            }
            return(node);
        }