add online status to friend list

This commit is contained in:
kento2 2026-04-17 22:41:15 +02:00
parent 070e224ef8
commit d4370de78c

View file

@ -6,9 +6,12 @@ import de.kentoj.scrow.bukkit.ScrowAPI;
import de.kentoj.scrow.bukkit.friends.friendship.FriendshipDAO;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import reactor.core.scheduler.Schedulers;
import java.util.Comparator;
public class FriendListLiteral {
@Getter
@ -25,10 +28,11 @@ public class FriendListLiteral {
var ownUid = ctx.getPlayerSender().getUniqueId();
ctx.getPlayerSender().sendMessage("friends:");
friendshipDAO.getFriendships(ownUid)
.map(friendship -> {
var friendPlayerUid = friendship.getUuids().getOther(ownUid);
var friendPlayerName = Bukkit.getOfflinePlayer(friendPlayerUid).getName();
return "- " + friendPlayerName;
.map(friendship -> Bukkit.getOfflinePlayer(friendship.getUuids().getOther(ownUid)))
.sort(this::compareByOnlineStatus)
.map(friendPlayer -> {
var onlineStatus = friendPlayer.isOnline() ? "§aonline" : "offline";
return "- " + friendPlayer.getName() + ": " + onlineStatus;
})
.doOnNext(line -> ctx.getSender().sendMessage(line))
.doOnComplete(() -> ctx.getSender().sendMessage("EOF"))
@ -36,4 +40,10 @@ public class FriendListLiteral {
.subscribeOn(Schedulers.boundedElastic())
.subscribe();
}
private int compareByOnlineStatus(OfflinePlayer p1, OfflinePlayer p2) {
if (p1.isOnline() && !p2.isOnline()) return 1;
if (!p1.isOnline() && p2.isOnline()) return -1;
return 0;
}
}