PaperMC / Paper

The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
https://papermc.io/
Other
9.89k stars 2.29k forks source link

broadcastMessage throws NullPointerException when there are offline players #5945

Closed wfjsw closed 3 years ago

wfjsw commented 3 years ago

Stack trace

[13:15:59 WARN]: [AuthMe] Task #9117 for AuthMe v5.6.0-beta2-b2453 generated an exception
java.lang.NullPointerException: null
        at org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer.sendMessage(CraftPlayer.java:2132) ~[patched_1.16.5.jar:git-Paper-778]
        at net.kyori.adventure.audience.Audience.sendMessage(Audience.java:207) ~[patched_1.16.5.jar:git-Paper-778]
        at net.kyori.adventure.audience.Audience.sendMessage(Audience.java:183) ~[patched_1.16.5.jar:git-Paper-778]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.broadcast(CraftServer.java:1592) ~[patched_1.16.5.jar:git-Paper-778]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.broadcast(CraftServer.java:1564) ~[patched_1.16.5.jar:git-Paper-778]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.broadcastMessage(CraftServer.java:600) ~[patched_1.16.5.jar:git-Paper-778]
        at org.bukkit.Bukkit.broadcastMessage(Bukkit.java:308) ~[patched_1.16.5.jar:git-Paper-778]
        at fr.xephi.authme.service.BukkitService.broadcastMessage(BukkitService.java:184) ~[?:?]
        at fr.xephi.authme.service.JoinMessageService.sendMessage(JoinMessageService.java:42) ~[?:?]
        at fr.xephi.authme.process.login.ProcessSyncPlayerLogin.processPlayerLogin(ProcessSyncPlayerLogin.java:95) ~[?:?]
        at fr.xephi.authme.process.SyncProcessManager.lambda$processSyncPlayerLogin$3(SyncProcessManager.java:52) ~[?:?]
        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:100) ~[patched_1.16.5.jar:git-Paper-778]
        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:468) ~[patched_1.16.5.jar:git-Paper-778]
        at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1427) ~[patched_1.16.5.jar:git-Paper-778]
        at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:436) ~[patched_1.16.5.jar:git-Paper-778]
        at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1342) ~[patched_1.16.5.jar:git-Paper-778]
        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1130) ~[patched_1.16.5.jar:git-Paper-778]
        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-778]

Plugin list

AuthMe, Essentials, FastLogin, Geyser-Spigot, ProtocolLib, SkinsRestorer

Actions to reproduce (if known)

Enable delayJoinMessage on Authme Reloaded. See https://github.com/AuthMe/AuthMeReloaded/issues/2359

Paper version

This server is running Paper version git-Paper-778 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)

Agreements

Other

According to AuthMe dev:

The issue is about broadcasting the message to an offline player. The broadcasting is handled by the server implementation, so not a bug on our side.

this.getHandle().playerConnection.sendPacket(packet); (CraftPlayer.java:2132)

keyute commented 3 years ago

I can reproduce this when calling broadcastMessage asynchronously

Machine-Maker commented 3 years ago

Fixed in 06b0b573d325ef480983b5ab254cc3b32c108a2b