develop-chatReply #5
@ -34,33 +34,23 @@ public class PrivateMessage extends Appliance {
|
||||
|
||||
if(this.replyMapping.get(sender) == null || this.replyMapping.get(sender).isEmpty()) throw new ApplianceCommand.Error("Du führst aktuell keine Konversation.");
|
||||
|
||||
|
||||
Component privatePrefix = Component.text("[Privat] ", NamedTextColor.LIGHT_PURPLE);
|
||||
ChatMessages chatMessages = Main.instance().getAppliance(ChatMessages.class);
|
||||
|
||||
Conversation youngestEntry = this.replyMapping.get(sender).stream()
|
||||
.max(Comparator.comparingLong(o -> o.lastSet))
|
||||
.orElse(this.replyMapping.get(sender).getLast());
|
||||
|
||||
String youngestTargetName;
|
||||
if(Bukkit.getPlayer(youngestEntry.target()) == null) {
|
||||
youngestTargetName = Bukkit.getOfflinePlayer(youngestEntry.target()).getName();
|
||||
} else {
|
||||
youngestTargetName = Objects.requireNonNull(Bukkit.getPlayer(youngestEntry.target())).getName();
|
||||
}
|
||||
if(message.isBlank()) {
|
||||
Component currentTargetComponent = Component.text("niemandem.");
|
||||
Player currentTargetPlayer = Bukkit.getPlayer(youngestEntry.target());
|
||||
if(currentTargetPlayer != null) {
|
||||
currentTargetComponent = Main.instance().getAppliance(ChatMessages.class).getReportablePlayerName(currentTargetPlayer);
|
||||
Pupsi marked this conversation as resolved
|
||||
}
|
||||
|
||||
|
||||
if(message.isBlank() && youngestTargetName != null) {
|
||||
sender.sendMessage(
|
||||
privatePrefix
|
||||
.append(Component.text("Du schreibst aktuell mit ", NamedTextColor.GRAY))
|
||||
.append(chatMessages.getReportablePlayerName(sender))
|
||||
);
|
||||
return;
|
||||
} else if(message.isBlank()) {
|
||||
sender.sendMessage(
|
||||
privatePrefix
|
||||
.append(Component.text("Du schreibst aktuell mit niemandem.", NamedTextColor.GRAY))
|
||||
.append(currentTargetComponent)
|
||||
);
|
||||
return;
|
||||
}
|
||||
@ -74,30 +64,6 @@ public class PrivateMessage extends Appliance {
|
||||
return;
|
||||
}
|
||||
|
||||
List<Conversation> oldConversations = this.replyMapping.get(sender).stream()
|
||||
.filter(conversation -> conversation.lastSet < System.currentTimeMillis() - (targetChangeTimeoutSeconds*1000))
|
||||
.toList();
|
||||
|
||||
Conversation youngestOldConversation = null;
|
||||
if(!oldConversations.isEmpty()) {
|
||||
youngestOldConversation = oldConversations.stream()
|
||||
.max(Comparator.comparingLong(o -> o.lastSet))
|
||||
.orElse(oldConversations.getLast());
|
||||
this.replyMapping.get(sender).removeAll(oldConversations);
|
||||
}
|
||||
|
||||
List<String> playerNames = this.replyMapping.get(sender).stream()
|
||||
.map(conversation -> {
|
||||
if(Bukkit.getPlayer(conversation.target()) != null) {
|
||||
return Objects.requireNonNull(Bukkit.getPlayer(conversation.target())).getName();
|
||||
} else {
|
||||
return Bukkit.getOfflinePlayer(conversation.target()).getName();
|
||||
}
|
||||
})
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
|
||||
sender.sendMessage("");
|
||||
sender.sendMessage(
|
||||
Component.text()
|
||||
@ -107,25 +73,26 @@ public class PrivateMessage extends Appliance {
|
||||
.append(Component.text(" Sekunden geändert. Wer soll deine Nachricht bekommen? ", NamedTextColor.RED))
|
||||
);
|
||||
|
||||
List<Conversation> oldConversations = this.replyMapping.get(sender).stream()
|
||||
.filter(conversation -> conversation.lastSet < System.currentTimeMillis() - (targetChangeTimeoutSeconds*1000))
|
||||
.toList();
|
||||
|
||||
Conversation youngestOldConversation;
|
||||
Pupsi marked this conversation as resolved
MineTec
commented
gibt es einen Grund warum die Variable hier außerhalb allokiert wird aber nur innerhalb des if statements genutzt wird? gibt es einen Grund warum die Variable hier außerhalb allokiert wird aber nur innerhalb des if statements genutzt wird?
|
||||
if(!oldConversations.isEmpty()) {
|
||||
youngestOldConversation = oldConversations.stream()
|
||||
.max(Comparator.comparingLong(o -> o.lastSet))
|
||||
.orElse(oldConversations.getLast());
|
||||
this.replyMapping.get(sender).removeAll(oldConversations);
|
||||
this.replyMapping.get(sender).add(youngestOldConversation);
|
||||
}
|
||||
|
||||
List<String> playerNames = this.replyMapping.get(sender).stream()
|
||||
.map(conversation -> Bukkit.getOfflinePlayer(conversation.target()).getName())
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
final Component[] finalComponent = {Component.text("")};
|
||||
|
||||
String firstTargetName = null;
|
||||
if(youngestOldConversation != null && Bukkit.getPlayer(youngestOldConversation.target()) == null) {
|
||||
firstTargetName = Bukkit.getOfflinePlayer(youngestOldConversation.target()).getName();
|
||||
} else if(youngestOldConversation != null){
|
||||
firstTargetName = Objects.requireNonNull(Bukkit.getPlayer(youngestOldConversation.target())).getName();
|
||||
}
|
||||
|
||||
if(firstTargetName != null && !playerNames.contains(firstTargetName)) {
|
||||
finalComponent[0] = finalComponent[0].append(
|
||||
Component.text("[")
|
||||
.append(Component.text(firstTargetName, NamedTextColor.GOLD))
|
||||
.append(Component.text("]"))
|
||||
.clickEvent(ClickEvent.runCommand("/msg " + firstTargetName + " " + message))
|
||||
.hoverEvent(HoverEvent.showText(Component.text("Klicke, um diesem Spieler zu schreiben.").color(NamedTextColor.GOLD))))
|
||||
.append(Component.text(" "));
|
||||
}
|
||||
|
||||
playerNames.forEach(playerName -> finalComponent[0] = finalComponent[0].append(
|
||||
Component.text("[")
|
||||
.append(Component.text(playerName, NamedTextColor.GOLD))
|
||||
|
Loading…
x
Reference in New Issue
Block a user
initialisierung und sofortig bedingtes überschreiben würde ich als bad practice einstufen...
Umschreiben zu