XTLS/Xray-core · error
minecraft profiles are required
Error message
minecraft profiles are required
What it means
XMC.Build refuses to construct the Minecraft-masking transport config when the profiles list is empty — at least one fully-specified profile is mandatory for the protocol to present a client identity.
Source
Thrown at infra/conf/transport_finalmask.go:763
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")
}
rsaPrivateKey, err := xmc.DeriveRSAKey(c.Password)
if err != nil {
return nil, fmt.Errorf("derive minecraft rsa key: %w", err)
}
rsaPublicKey, err := x509.MarshalPKIXPublicKey(&rsaPrivateKey.PublicKey)
if err != nil {
return nil, fmt.Errorf("marshal minecraft rsa public key: %w", err)
}
profiles := make([]*xmc.Profile, 0, len(c.Profiles))
for i := range c.Profiles {View on GitHub (pinned to 7d214f8b09)
Solutions
- Add at least one complete profile (username, uuid, texturesValue, texturesSignature) under profiles
- Check the exact key spelling "profiles" in the xmc settings block
- Remove the xmc block entirely if the transport is not actually needed
Example fix
// before
"xmc": { "password": "hunter2", "profiles": [] }
// after
"xmc": {
"password": "hunter2",
"profiles": [{ "username": "Steve", "uuid": "...", "texturesValue": "...", "texturesSignature": "..." }]
} Defensive patterns
Strategy: validation
Validate before calling
func hasXmcProfiles(x *XMC) bool {
return x != nil && len(x.Profiles) > 0
} Prevention
- If the xmc block exists, at least one full profile must too
- Check exact key spelling "profiles"
When it happens
Trigger: Adding an "xmc" settings block (finalmask transport) with no "profiles" array, or an empty profiles array [].
Common situations: Enabling xmc to see what it does without filling in profiles; profiles omitted because the JSON key was misspelled (profile/profileList) and unmarshalled to nil.
Related errors
- invalid minecraft profile username: %q
- build minecraft profile %d: %w
- not a Service.
- Dispatcher: Invalid destination.
- FakeDNSEngine is not initialized, but such a sniffer is used
AI-assisted analysis of XTLS/Xray-core@7d214f8b09 (2026-08-15).
Data as JSON: /api/errors/6e0e8d354d9a63ec.
Report an issue: GitHub.