add online status to friend list
This commit is contained in:
parent
070e224ef8
commit
d4370de78c
1 changed files with 14 additions and 4 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue