Sponge icon indicating copy to clipboard operation
Sponge copied to clipboard

"Profile name must not be null" when loading user

Open SamB440 opened this issue 6 months ago • 1 comments

Affected Product(s)

SpongeVanilla

Version

1.20.6-11.0.1-RC1778

Operating System

Linux

Java Version

21

Plugins/Mods

Minecraft v1.20.6
SpongeAPI v11.1.0-SNAPSHOT
Sponge v1.20.6-11.1.0-SNAPSHOT
SpongeVanilla v1.20.6-11.0.1-RC1778
LemonadeStand v1.0.1-SNAPSHOT
WorldEdit v7.3.3-SNAPSHOT+6787-ad03623
LemonSqueezer v1.0.1-SNAPSHOT
LuckPerms v5.4.130
spark-sponge8 v1.10.93
Treaty v1.0.0
NuVotifier v3.0.0-SNAPSHOT+9d69da2
ViaVersion v1.0.1
Orbis v1.0.0-SNAPSHOT
PacketEvents v2.4.1+2767f3d1d-SNAPSHOT
Spelare v1.0.1-SNAPSHOT
Pharus v1.0.0-SNAPSHOT
Masquerade v1.0.2-SNAPSHOT
Battlegrounds v3.1.2

Describe the bug

Calling Sponge.server().userManager().load(user.getUniqueId()) with an offline player can result in:

java.util.concurrent.CompletionException: java.lang.NullPointerException: Profile name must not be null
        at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
        at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.NullPointerException: Profile name must not be null
        at java.base/java.util.Objects.requireNonNull(Objects.java:259)
        at com.mojang.authlib.GameProfile.<init>(GameProfile.java:31)
        at org.spongepowered.common.user.SpongeUserManager.lambda$fetchUser$1(SpongeUserManager.java:134)
        at java.base/java.util.Optional.orElseGet(Optional.java:364)
        at org.spongepowered.common.user.SpongeUserManager.lambda$fetchUser$2(SpongeUserManager.java:134)
        at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
        ... 3 more

Which originates from: https://github.com/SpongePowered/Sponge/blob/a091b4f49ee921021f8e4a5a10e28869d2d66122/src/main/java/org/spongepowered/common/user/SpongeUserManager.java#L134

The name field of Mojang's GameProfile is marked as @NotNull but Sponge is passing a null parameter.

Link to logs

No response

SamB440 avatar Aug 09 '24 19:08 SamB440