Aelysium-Group / rusty-connector

A player and server connection manager for Velocity based Minecraft Networks!
GNU General Public License v3.0
77 stars 17 forks source link

/friends add OFFLINEUSER causes uncaught error #29

Closed TheDeafCreeper closed 1 year ago

TheDeafCreeper commented 1 year ago

When attempting to add an offline player as a friend, it causes the following error:

[23:48:19 INFO]: Exception occurred while running command for TheDeafCreeper
java.util.concurrent.CompletionException: java.lang.RuntimeException: Unable to invoke command friends add TheMuteCreeper for [connected player] TheDeafCreeper (/96.41.244.222:58703)
        at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?]
        at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.RuntimeException: Unable to invoke command friends add TheMuteCreeper for [connected player] TheDeafCreeper (/96.41.244.222:58703)
        at com.velocitypowered.proxy.command.VelocityCommandManager.executeImmediately0(VelocityCommandManager.java:239) ~[proxy.jar:3.2.0-SNAPSHOT (git-bda1430d-b259)]
        at com.velocitypowered.proxy.command.VelocityCommandManager.lambda$executeImmediatelyAsync$1(VelocityCommandManager.java:264) ~[proxy.jar:3.2.0-SNAPSHOT (git-bda1430d-b259)]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        ... 3 more
Caused by: java.lang.NullPointerException: Cannot invoke "com.velocitypowered.api.proxy.Player.getUniqueId()" because "player" is null
        at group.aelysium.rustyconnector.plugin.velocity.lib.players.FakePlayer.from(FakePlayer.java:15) ~[?:?]
        at group.aelysium.rustyconnector.plugin.velocity.lib.friends.FriendsService.areFriends(FriendsService.java:95) ~[?:?]
        at group.aelysium.rustyconnector.plugin.velocity.lib.friends.commands.CommandFriends.lambda$create$4(CommandFriends.java:84) ~[?:?]
        at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:262) ~[proxy.jar:3.2.0-SNAPSHOT (git-bda1430d-b259)]
        at com.velocitypowered.proxy.command.VelocityCommandManager.executeImmediately0(VelocityCommandManager.java:226) ~[proxy.jar:3.2.0-SNAPSHOT (git-bda1430d-b259)]
        at com.velocitypowered.proxy.command.VelocityCommandManager.lambda$executeImmediatelyAsync$1(VelocityCommandManager.java:264) ~[proxy.jar:3.2.0-SNAPSHOT (git-bda1430d-b259)]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        ... 3 more
nathan-i-martin commented 1 year ago

iirc this is currently intended behavior because RC doesn't have any sort of longer term way of starting requests. Even if that's the case, it should still fail gracefully, so I'll look into that.

The ability to send invites to offline players (assuming theyv e joined the network at least once) is something I can add in v0.6.1