cleaned up the code

This commit is contained in:
Lars Neuhaus 2024-10-06 12:32:20 +02:00
parent 497c5ad749
commit d69089a0eb

View File

@ -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."); 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); Component privatePrefix = Component.text("[Privat] ", NamedTextColor.LIGHT_PURPLE);
ChatMessages chatMessages = Main.instance().getAppliance(ChatMessages.class);
Conversation youngestEntry = this.replyMapping.get(sender).stream() Conversation youngestEntry = this.replyMapping.get(sender).stream()
.max(Comparator.comparingLong(o -> o.lastSet)) .max(Comparator.comparingLong(o -> o.lastSet))
.orElse(this.replyMapping.get(sender).getLast()); .orElse(this.replyMapping.get(sender).getLast());
String youngestTargetName; if(message.isBlank()) {
if(Bukkit.getPlayer(youngestEntry.target()) == null) { Component currentTargetComponent = Component.text("niemandem.");
youngestTargetName = Bukkit.getOfflinePlayer(youngestEntry.target()).getName(); Player currentTargetPlayer = Bukkit.getPlayer(youngestEntry.target());
} else { if(currentTargetPlayer != null) {
youngestTargetName = Objects.requireNonNull(Bukkit.getPlayer(youngestEntry.target())).getName(); currentTargetComponent = Main.instance().getAppliance(ChatMessages.class).getReportablePlayerName(currentTargetPlayer);
} }
if(message.isBlank() && youngestTargetName != null) {
sender.sendMessage( sender.sendMessage(
privatePrefix privatePrefix
.append(Component.text("Du schreibst aktuell mit ", NamedTextColor.GRAY)) .append(Component.text("Du schreibst aktuell mit ", NamedTextColor.GRAY))
.append(chatMessages.getReportablePlayerName(sender)) .append(currentTargetComponent)
);
return;
} else if(message.isBlank()) {
sender.sendMessage(
privatePrefix
.append(Component.text("Du schreibst aktuell mit niemandem.", NamedTextColor.GRAY))
); );
return; return;
} }
@ -74,30 +64,6 @@ public class PrivateMessage extends Appliance {
return; 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("");
sender.sendMessage( sender.sendMessage(
Component.text() Component.text()
@ -107,25 +73,26 @@ public class PrivateMessage extends Appliance {
.append(Component.text(" Sekunden geändert. Wer soll deine Nachricht bekommen? ", NamedTextColor.RED)) .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;
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("")}; 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( playerNames.forEach(playerName -> finalComponent[0] = finalComponent[0].append(
Component.text("[") Component.text("[")
.append(Component.text(playerName, NamedTextColor.GOLD)) .append(Component.text(playerName, NamedTextColor.GOLD))