コード例 #1
0
        private static void WriteEntityMetadata(BinaryWriter bw, Game.Entities.EntityMetadata.Player metadata)
        {
            byte skinParts = 0;

            {
                if (metadata.CapeEnabled)
                {
                    skinParts |= 0x01;
                }
                if (metadata.JacketEnabled)
                {
                    skinParts |= 0x02;
                }
                if (metadata.LeftSleeveEnabled)
                {
                    skinParts |= 0x04;
                }
                if (metadata.RightSleeveEnabled)
                {
                    skinParts |= 0x08;
                }
                if (metadata.LeftPantsLegEnabled)
                {
                    skinParts |= 0x10;
                }
                if (metadata.RightPantsLegEnabled)
                {
                    skinParts |= 0x20;
                }
                if (metadata.HatEnabled)
                {
                    skinParts |= 0x40;
                }
            }

            // Additional Hearts
            bw.WriteAsEntityMetadata(11, EntityMetadataType.Float).WriteAsFloat(metadata.AdditionalHearts);

            // Score
            bw.WriteAsEntityMetadata(12, EntityMetadataType.VarInt).WriteAsVarInt(metadata.Score, out _);

            // The Displayed Skin Parts
            bw.WriteAsEntityMetadata(13, EntityMetadataType.Byte).WriteAsByte(skinParts);

            // Main hand
            bw.WriteAsEntityMetadata(14, EntityMetadataType.Byte).WriteAsByte(metadata.MainHand);

            // TODO: And NBT fields
        }
コード例 #2
0
        public Task SpawnPlayer(uint entityId, Guid uuid, Vector3 position, float pitch, float yaw, Game.Entities.EntityMetadata.Player metadata)
        {
            var metaPacket = CreateEntityMetadata(entityId, metadata, bw =>
            {
                WriteEntityMetadata(bw, (Game.Entities.EntityMetadata.Entity)metadata);
                WriteEntityMetadata(bw, (Game.Entities.EntityMetadata.Living)metadata);
                WriteEntityMetadata(bw, metadata);
            });

            return(SendPacket(new SpawnPlayer
            {
                EntityId = entityId,
                PlayerUUID = uuid,
                X = position.X,
                Y = position.Y,
                Z = position.Z,
                Pitch = pitch,
                Yaw = yaw,
                Metadata = metaPacket.Metadata
            }));
        }