develop-chatReply #5
@ -8,6 +8,7 @@ import eu.mhsl.craftattack.spawn.appliances.privateMessage.commands.PrivateMessa
|
|||||||
import eu.mhsl.craftattack.spawn.appliances.privateMessage.commands.PrivateReplyCommand;
|
import eu.mhsl.craftattack.spawn.appliances.privateMessage.commands.PrivateReplyCommand;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.event.ClickEvent;
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
import net.kyori.adventure.text.event.HoverEvent;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -51,8 +52,10 @@ public class PrivateMessage extends Appliance {
|
|||||||
return Bukkit.getOfflinePlayer(conversation.target()).getName();
|
return Bukkit.getOfflinePlayer(conversation.target()).getName();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
.distinct()
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
|
sender.sendMessage("");
|
||||||
sender.sendMessage(
|
sender.sendMessage(
|
||||||
Component.text()
|
Component.text()
|
||||||
.append(Component.text("Das Ziel für /r hat sich bei dir in den letzten "))
|
.append(Component.text("Das Ziel für /r hat sich bei dir in den letzten "))
|
||||||
@ -61,7 +64,7 @@ public class PrivateMessage extends Appliance {
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
Component newTextComponent = Component.text("");
|
final Component[] finalComponent = {Component.text("")};
|
||||||
Pupsi marked this conversation as resolved
Outdated
|
|||||||
|
|
||||||
String firstTargetName;
|
String firstTargetName;
|
||||||
if(Bukkit.getPlayer(youngestEntry.target()) == null) {
|
if(Bukkit.getPlayer(youngestEntry.target()) == null) {
|
||||||
@ -70,24 +73,21 @@ public class PrivateMessage extends Appliance {
|
|||||||
firstTargetName = Objects.requireNonNull(Bukkit.getPlayer(youngestEntry.target())).getName();
|
firstTargetName = Objects.requireNonNull(Bukkit.getPlayer(youngestEntry.target())).getName();
|
||||||
Pupsi marked this conversation as resolved
Outdated
MineTec
commented
"erhalten" statt "bekommen" klingt denke ich besser "erhalten" statt "bekommen" klingt denke ich besser
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(firstTargetName != null) {
|
if(firstTargetName != null && !playerNames.contains(firstTargetName)) {
|
||||||
Component nameComponent = Component.text("");
|
finalComponent[0] = finalComponent[0].append(Component.text(firstTargetName, NamedTextColor.GOLD)
|
||||||
Pupsi marked this conversation as resolved
Outdated
MineTec
commented
hier steht die gleiche logik wie in zeile 58 lässt sich das vielleicht schlau kombinieren, dass du oldConversations schon oben erstellst und die andere prüfung auf der bestehenden Liste dann ausführst? hier steht die gleiche logik wie in zeile 58
lässt sich das vielleicht schlau kombinieren, dass du oldConversations schon oben erstellst und die andere prüfung auf der bestehenden Liste dann ausführst?
|
|||||||
nameComponent.append(Component.text(firstTargetName, NamedTextColor.LIGHT_PURPLE));
|
.clickEvent(ClickEvent.runCommand("/msg " + firstTargetName + " " + message))
|
||||||
|
.hoverEvent(HoverEvent.showText(Component.text("Klicke, um diesem Spieler zu schreiben.").color(NamedTextColor.GOLD))))
|
||||||
newTextComponent
|
.append(Component.text(" "));
|
||||||
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?
|
|||||||
.append(nameComponent.clickEvent(ClickEvent.runCommand("/msg " + firstTargetName + " " + message)));
|
|
||||||
newTextComponent.append(Component.text(" "));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
playerNames.forEach(playerName -> finalComponent[0] = finalComponent[0].append(Component.text(playerName, NamedTextColor.GOLD)
|
||||||
|
.clickEvent(ClickEvent.runCommand("/msg " + playerName + " " + message))
|
||||||
|
.hoverEvent(HoverEvent.showText(Component.text("Klicke, um diesem Spieler zu schreiben.").color(NamedTextColor.GOLD))))
|
||||||
|
.append(Component.text(" ")));
|
||||||
|
|
||||||
playerNames.forEach(playerName -> {
|
sender.sendMessage("");
|
||||||
Component nameComponent = Component.text(playerName, NamedTextColor.LIGHT_PURPLE);
|
sender.sendMessage(finalComponent[0]);
|
||||||
newTextComponent
|
sender.sendMessage("");
|
||||||
.append(nameComponent.clickEvent(ClickEvent.runCommand("/msg " + playerName + " " + message)));
|
|
||||||
newTextComponent.append(Component.text(" "));
|
|
||||||
});
|
|
||||||
|
|
||||||
sender.sendMessage(newTextComponent);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user
das senden einzelner messages ist problematisch...
in der theorie könnten andere messages welche parallel gesendet werden so zwischen die messages rutschen. Außerdem ist jeder sendMessage aufruf ein eigenes paket, welches an den Spieler gesendet wird.
die Aufrufe sollten zusammengezogen werden zu einem einzelnen aufruf, leerzeilen können mit
.appendNewLine
eingefügt werden.Hier bietet sich ggf der ComponentBuilder an, dieser kann mit
Component.text()
erstellt werden.Anschließend kann darauf mit
component.append(otherComponent)
gearbeitet werden. Zum schluss dannsender.sendMessage(component.build())