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