Waterfall icon indicating copy to clipboard operation
Waterfall copied to clipboard

player.sendMessage() throws exception after calling player.disconnect()

Open Packsolite opened this issue 1 year ago • 1 comments

Problem

The following exception was thrown when calling the ProxiedPlayer#sendMessage() method: https://pastebin.com/m7FeSwAM

Reason

It seems like after disconnecting a player using the ProxiedPlayer#disconnect() method, an invalid or broken reference to the player can still be obtained via the api using ProxyServer#getPlayers(). Using the sendMessage() function on such a reference results in an error.

How to reproduce

So as a basic example you want a custom kick command implemented as a plugin: After disconnecting the player, you may want to send a message to other staff members.

The code could look something like this:

player.disconnect(text);
for (ProxiedPlayer staff: server.getPlayers()) {
    staff.sendMessage(player.getName() + " was kicked by " + sender.getName());
}

In this specific example sure i can move the disconnect after the staff broadcast, however in other situations that might not be as easy and the api should be safe in that regard.

Packsolite avatar Mar 25 '24 21:03 Packsolite

I weren't able to reproduce this issue on my setup. if it still persists (even with bungeecord) pls give me instructions so I can investigate further (if needed)

RealSuperUser avatar Feb 21 '25 10:02 RealSuperUser