Skip to content

GameProfile now requires both the id and name, but OfflinePlayer doesn't allow you to specify both. #9843

@CC007

Description

@CC007

Expected behavior

Being able to create a GameProfile object with either the id or the name and therefore the following code working:

meta.setOwningPlayer(Bukkit.getOfflinePlayer(NOTCH_UUID)); // meta is a SkullMeta object,

See authlib v4.0.43:

public GameProfile(final UUID id, final String name) {
    this.properties = new PropertyMap();
    if (id == null && StringUtils.isBlank((CharSequence)name)) {
        throw new IllegalArgumentException("Name and ID cannot both be blank");
    }
    this.id = id;
    this.name = name;
}

Observed/Actual behavior

Being forced to provide both the id AND the name:

In PurpurMC:
275263138-9f46b60a-e11e-43a6-9e8a-195d7db6d3ab

In PaperMC:
275341831-44ab0989-95b7-4d94-908c-a12a37dd39fd

See authlib 5.0.47:

public GameProfile(final UUID id, final String name) {
    this.properties = new PropertyMap();
    this.id = Objects.requireNonNull(id, "Profile ID must not be null");
    this.name = Objects.requireNonNull(name, "Profile name must not be null");
}

Also, there is no method to create an OfflinePlayer where you specify both the id and name, so setOwningPlayer will fail when providing it with an OfflinePlayer.

Steps/models to reproduce

Code that triggered this issue:

private void initSkullMeta(@NonNull ItemStack playerHeadItemStack, @NonNull Head head) {
    final var headSkullMeta = Optional.ofNullable((SkullMeta) playerHeadItemStack.getItemMeta());
    headSkullMeta.ifPresentOrElse(meta -> {
        meta.setOwningPlayer(Bukkit.getOfflinePlayer(NOTCH_UUID)); // <- exception thrown here
        // set other meta fields. Not relevant to this bug
        playerHeadItemStack.setItemMeta(meta);
    }, () -> {
        log.warn("Couldn't find player skull meta.");
    });
}

Plugin and Datapack List

Plugins
HeadsPluginAPI
HeadsInventory
HeadSweeper

Nothing else was added.

Paper version

PaperMC 1.20.2 (build 240)

Sidenote:
Also occurs in PurpurMC 1.20.2 (build 2074 and 2078)

Other

Issue found by a user of HeadsPluginAPI on a PurpurMC server. I'm tracking the issue in CC007/HeadsPluginAPI#31

It was also reported the issue to PurpurMC: PurpurMC/Purpur#1445, but after reproducing the issue in PaperMC, I was asked to make an issue here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: acceptedDisputed bug is accepted as valid or Feature accepted as desired to be added.type: bugSomething doesn't work as it was intended to.

    Type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions