XTLS/Xray-core · error
incomplete minecraft profile textures
Error message
incomplete minecraft profile textures
What it means
XMCProfile.Build requires both TexturesValue and TexturesSignature to be non-empty, because the XMC transport must present a signed Minecraft skin texture payload. This error fires when either half of the signed texture pair is missing.
Source
Thrown at infra/conf/transport_finalmask.go:750
Username string `json:"username"`
UUID string `json:"uuid"`
TexturesValue string `json:"texturesValue"`
TexturesSignature string `json:"texturesSignature"`
}
var xmcUsernamePattern = regexp.MustCompile(`^[A-Za-z0-9_]{3,16}$`)
func (c *XMCProfile) Build() (*xmc.Profile, error) {
if !xmcUsernamePattern.MatchString(c.Username) {
return nil, fmt.Errorf("invalid minecraft profile username: %q", c.Username)
}
profileUUID, err := googleuuid.Parse(c.UUID)
if err != nil {
return nil, fmt.Errorf("invalid minecraft profile UUID: %w", err)
}
if c.TexturesValue == "" || c.TexturesSignature == "" {
return nil, fmt.Errorf("incomplete minecraft profile textures")
}
return &xmc.Profile{
Username: c.Username,
Uuid: append([]byte(nil), profileUUID[:]...),
TexturesValue: c.TexturesValue,
TexturesSignature: c.TexturesSignature,
}, nil
}
func (c *XMC) Build() (proto.Message, error) {
if len(c.Profiles) == 0 {
return nil, fmt.Errorf("minecraft profiles are required")
}
if c.Password == "" {
return nil, fmt.Errorf("empty password")
}View on GitHub (pinned to 7d214f8b09)
Solutions
- Copy BOTH "value" and "signature" from the signed profile response (sessionserver with unsigned=false)
- Match the JSON keys exactly: texturesValue and texturesSignature
- Re-fetch the profile if the signature came back empty
Example fix
// before "texturesValue": "ewogICJ0ZXh0dXJlcyIgOiB7..." // signature missing // after "texturesValue": "ewogICJ0ZXh0dXJlcyIgOiB7...", "texturesSignature": "K8vLbP...longBase64...="
Defensive patterns
Strategy: validation
Validate before calling
func profileComplete(p XMCProfile) bool {
return p.TexturesValue != "" && p.TexturesSignature != ""
} Prevention
- Always copy value AND signature together from the signed textures property
- Fetch profiles with unsigned=false
- Reject half-filled profiles in your config generator
When it happens
Trigger: Configuring an xmc profile with only "texturesValue" or only "texturesSignature", or with one of them set to an empty string.
Common situations: Fetching textures from sessionserver.mojang.com and copying only the "value" field of the textures property while skipping "signature"; assuming signature is optional; JSON key typos (texturesSignature vs textureSignature) silently leaving the field empty.
Related errors
- invalid minecraft profile username: %q
- invalid minecraft profile UUID: %w
- minecraft profiles are required
- build minecraft profile %d: %w
- not a Service.
AI-assisted analysis of XTLS/Xray-core@7d214f8b09 (2026-08-15).
Data as JSON: /api/errors/dadeee0677af6f2e.
Report an issue: GitHub.