コード例 #1
0
ファイル: DataPacket.cs プロジェクト: yts233/Minecraft
        public void WriteToStream(IPacketCodec rawCodec, Func <int> compressThresholdCallback)
        {
            var threshold = compressThresholdCallback();

            if (threshold == 0 || DataLength < threshold)
            {
                PacketLength = (int)BaseStream.Length;
                rawCodec.WriteVarInt(DataLength);
                Content.CopyTo(rawCodec.BaseStream, DataLength);
                return;
            }
            var stream  = new MemoryStream();
            var content = Content.Clone(stream);

            content.WriteVarInt(DataLength);
            var compressedStream = new DeflaterOutputStream(stream);

            Content.CopyTo(compressedStream, DataLength);
            compressedStream.Flush();
            stream.Position = 0;
            PacketLength    = (int)stream.Length;
            rawCodec.WriteVarInt(PacketLength);
            content.CopyTo(rawCodec.BaseStream, PacketLength);
            compressedStream.Dispose();
            stream.Dispose();
        }
コード例 #2
0
ファイル: SpawnPlayerPacket.cs プロジェクト: yts233/Minecraft
 public void WriteToStream(IPacketCodec content)
 {
     content.WriteVarInt(EntityId);
     content.Write(PlayerUuid);
     content.Write(Position);
     content.WriteAngleRotation(Rotation);
 }
コード例 #3
0
 public void WriteToStream(IPacketCodec content)
 {
     content.WriteVarInt(ProtocolVersion);
     content.Write(ServerAddress);
     content.Write(ServerPort);
     content.WriteVarIntEnum(NextState);
 }
コード例 #4
0
 public void WriteToStream(IPacketCodec content)
 {
     content.WriteVarInt(EntityId);
     content.Write((short)(Delta.X * 4096));
     content.Write((short)(Delta.Y * 4096));
     content.Write((short)(Delta.Z * 4096));
     content.Write(OnGround);
 }
コード例 #5
0
 public void WriteToStream(IPacketCodec content)
 {
     content.Write(EntityId);
     content.Write(IsHardcore);
     content.Write(Gamemode);
     content.Write(PreviousGamemode);
     content.WriteVarInt(WorldCount);
     content.Write(WorldNames);
     content.Write(DimensionCodec);
     content.Write(Dimension);
     content.Write(WorldName);
     content.Write(HashedSeed);
     content.WriteVarInt(MaxPlayers);
     content.Write(ViewDistance);
     content.Write(ReducedDebugInfo);
     content.Write(EnableRespawnScreen);
     content.Write(IsDebug);
     content.Write(IsFlat);
 }
コード例 #6
0
 public void WriteToStream(IPacketCodec content)
 {
     content.WriteVarInt(EntityId);
     content.WriteVarIntEnum(Type);
     if (Type == InteractType.InteractAt)
     {
         content.Write(Target);
     }
     if (Type == InteractType.Interact || Type == InteractType.InteractAt)
     {
         content.WriteVarIntEnum(Hand);
     }
     content.Write(Sneaking);
 }
コード例 #7
0
        public void WriteToStream(IPacketCodec content)
        {
            byte flags = 0;

            void PushFlag(CoordKind kind)
            {
                flags |= (byte)(flags << 1 & (byte)kind);
            }

            PushFlag(XKind);
            PushFlag(YKind);
            PushFlag(ZKind);
            PushFlag(YRotKind);
            PushFlag(XRotKind);
            content.Write(Position);
            content.Write(Rotation);
            content.Write(flags);
            content.WriteVarInt(TeleportId);
            content.Write(DismountVehicle);
        }
コード例 #8
0
 public void WriteToStream(IPacketCodec content)
 {
     content.WriteVarInt(Threshold);
 }
コード例 #9
0
 public void WriteToStream(IPacketCodec content)
 {
     content.WriteVarInt(EntityId);
     content.WriteAngleRotation(Rotation);
     content.Write(OnGround);
 }
コード例 #10
0
 public void WriteToStream(IPacketCodec content)
 {
     content.WriteVarInt(TeleportId);
 }
コード例 #11
0
 public void WriteToStream(IPacketCodec content)
 {
     content.WriteVarInt(ChunkX);
     content.WriteVarInt(ChunkZ);
 }