Add channel icons and hovers to chat messages

Every chat message now starts with a fixed icon of its channel
(🌍 Global, ⌂ Local, ⚔ fight, ⚑ fight team, 👥 TC, ⚙ STC, ✉ DM),
highlighted yellow if it is the receiver's default channel. Hovering
the icon shows the channel name, hovering the sender shows their team
name and shorthand.
This commit is contained in:
2026-10-16 08:48:30 +02:00
parent b21ff415a8
commit 317cb0adf8
12 changed files with 135 additions and 44 deletions
@@ -574,16 +574,32 @@ CHAT_BC_USAGE = §8/§7bc §8[§emessage§8]
CHAT_NO_RECEIVER = §cNobody receives your message CHAT_NO_RECEIVER = §cNobody receives your message
CHAT_EMPTY = §cDon\'t write meaningless empty messages. CHAT_EMPTY = §cDon\'t write meaningless empty messages.
CHAT_SERVERTEAM = §e{0}§8» §f{2} CHAT_SERVERTEAM_SENDER = §e{0}
CHAT_GLOBAL = {3}{4}{5}{6}{0}§8» {7}{2} CHAT_SERVERTEAM = §8» §f{2}
CHAT_LOCAL = {3}{4}{5}{6}{0}§8» {7}{2} CHAT_GLOBAL_SENDER = {3}{4}{5}{6}{0}
CHAT_TEAM = §e{0}§8» §f{2} CHAT_GLOBAL = §8» {7}{2}
CHAT_MSG = §e{0}§8»§e{1} §7{2} CHAT_LOCAL_SENDER = {3}{4}{5}{6}{0}
CHAT_LOCAL = §8» {7}{2}
CHAT_TEAM_SENDER = §e{0}
CHAT_TEAM = §8» §f{2}
CHAT_MSG_SENDER = §e{0}
CHAT_MSG = §8»§e{1} §7{2}
CHAT_SPECIAL_ALERT = §e{0}§8»§e{1} §7{2}
CHAT_FIGHT_PARTICIPANT = {0} {1}§8» §7{2} CHAT_FIGHT_PARTICIPANT = {0} {1}§8» §7{2}
CHAT_FIGHT_SPECTATOR = §7{0}§8» §7{1} CHAT_FIGHT_SPECTATOR = §7{0}§8» §7{1}
CHAT_FIGHT_REFEREE = §e{0}§8» §e{1} CHAT_FIGHT_REFEREE = §e{0}§8» §e{1}
CHAT_FIGHT_TEAM = {0} {1}§8» §f{2} CHAT_FIGHT_TEAM = {0} {1}§8» §f{2}
CHAT_TAGGED = §8{0} §r{1} CHAT_ICON = {0}{1}
CHAT_HOVER_TEAM = §7Team: §e{0}\n§7Prefix: §r{1}{2}
CHAT_ICON_GLOBAL = 🌍
CHAT_ICON_LOCAL = ⌂
CHAT_ICON_FIGHT = ⚔
CHAT_ICON_FIGHT_FOREIGN = ⚔ §8{0}
CHAT_ICON_FIGHT_TEAM = {0}⚑
CHAT_ICON_FIGHT_TEAM_FOREIGN = {0}⚑ §8{1}
CHAT_ICON_TEAM = 👥
CHAT_ICON_SERVERTEAM = ⚙
CHAT_ICON_MSG = ✉
CHAT_CHANNEL_GLOBAL = §eGlobal CHAT_CHANNEL_GLOBAL = §eGlobal
CHAT_CHANNEL_ARENA = §e{0} CHAT_CHANNEL_ARENA = §e{0}
CHAT_CHANNEL_FIGHT_TEAM = §e{0} {1} CHAT_CHANNEL_FIGHT_TEAM = §e{0} {1}
@@ -539,16 +539,32 @@ CHAT_BC_USAGE = §8/§7bc §8[§eNachricht§8]
CHAT_NO_RECEIVER = §cNiemand empfängt deine Nachricht CHAT_NO_RECEIVER = §cNiemand empfängt deine Nachricht
CHAT_EMPTY = §cSchreibe keine inhaltslosen Nachrichten. CHAT_EMPTY = §cSchreibe keine inhaltslosen Nachrichten.
CHAT_SERVERTEAM = §e{0}§8» §f{2} CHAT_SERVERTEAM_SENDER = §e{0}
CHAT_GLOBAL = {3}{4}{5}{6}{0}§8» {7}{2} CHAT_SERVERTEAM = §8» §f{2}
CHAT_LOCAL = {3}{4}{5}{6}{0}§8» {7}{2} CHAT_GLOBAL_SENDER = {3}{4}{5}{6}{0}
CHAT_TEAM = §e{0}§8» §f{2} CHAT_GLOBAL = §8» {7}{2}
CHAT_MSG = §e{0}§8»§e{1} §7{2} CHAT_LOCAL_SENDER = {3}{4}{5}{6}{0}
CHAT_LOCAL = §8» {7}{2}
CHAT_TEAM_SENDER = §e{0}
CHAT_TEAM = §8» §f{2}
CHAT_MSG_SENDER = §e{0}
CHAT_MSG = §8»§e{1} §7{2}
CHAT_SPECIAL_ALERT = §e{0}§8»§e{1} §7{2}
CHAT_FIGHT_PARTICIPANT = {0} {1}§8» §7{2} CHAT_FIGHT_PARTICIPANT = {0} {1}§8» §7{2}
CHAT_FIGHT_SPECTATOR = §7{0}§8» §7{1} CHAT_FIGHT_SPECTATOR = §7{0}§8» §7{1}
CHAT_FIGHT_REFEREE = §e{0}§8» §e{1} CHAT_FIGHT_REFEREE = §e{0}§8» §e{1}
CHAT_FIGHT_TEAM = {0} {1}§8» §f{2} CHAT_FIGHT_TEAM = {0} {1}§8» §f{2}
CHAT_TAGGED = §8{0} §r{1} CHAT_ICON = {0}{1}
CHAT_HOVER_TEAM = §7Team: §e{0}\n§7Kürzel: §r{1}{2}
CHAT_ICON_GLOBAL = 🌍
CHAT_ICON_LOCAL = ⌂
CHAT_ICON_FIGHT = ⚔
CHAT_ICON_FIGHT_FOREIGN = ⚔ §8{0}
CHAT_ICON_FIGHT_TEAM = {0}⚑
CHAT_ICON_FIGHT_TEAM_FOREIGN = {0}⚑ §8{1}
CHAT_ICON_TEAM = 👥
CHAT_ICON_SERVERTEAM = ⚙
CHAT_ICON_MSG = ✉
CHAT_CHANNEL_GLOBAL = §eGlobal CHAT_CHANNEL_GLOBAL = §eGlobal
CHAT_CHANNEL_ARENA = §e{0} CHAT_CHANNEL_ARENA = §e{0}
CHAT_CHANNEL_FIGHT_TEAM = §e{0} {1} CHAT_CHANNEL_FIGHT_TEAM = §e{0} {1}
@@ -23,6 +23,7 @@ package de.steamwar.velocitycore.chat;
import de.steamwar.messages.Chatter; import de.steamwar.messages.Chatter;
import de.steamwar.messages.Message; import de.steamwar.messages.Message;
import de.steamwar.sql.UserPerm; import de.steamwar.sql.UserPerm;
import net.kyori.adventure.text.Component;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -54,8 +55,8 @@ public class AlertChannel extends ChatChannel {
} }
@Override @Override
protected Message format(Chatter receiver, Chatter sender, String message) { protected Component format(Chatter receiver, Chatter sender, String message) {
return new Message("ALERT", message.replace('&', '§')); return receiver.parse(true, new Message("ALERT", message.replace('&', '§')));
} }
/** /**
@@ -65,6 +66,6 @@ public class AlertChannel extends ChatChannel {
public void send(Chatter sender, String message, boolean mirror) { public void send(Chatter sender, String message, boolean mirror) {
if (!canWrite(sender)) return; if (!canWrite(sender)) return;
readers().forEach(reader -> reader.send(true, null, null, format(reader, sender, message))); readers().forEach(reader -> reader.sendMessage(format(reader, sender, message)));
} }
} }
@@ -24,6 +24,8 @@ import de.steamwar.messages.Message;
import de.steamwar.sql.AuditLog; import de.steamwar.sql.AuditLog;
import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.UserPerm; import de.steamwar.sql.UserPerm;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
@@ -43,15 +45,16 @@ public abstract class ChatChannel {
} }
/** /**
* @return the channel name shown in front of messages of this channel if it is not the default channel of the receiver * @return the channel name shown in channel related system messages
*/ */
public abstract Message tag(Chatter receiver); public abstract Message tag(Chatter receiver);
/** /**
* @return false if the message format already shows the channel, so no tag is put in front * @return the icon always shown in front of messages of this channel, null if the message format already shows the channel.
* The icon is highlighted if this is the default channel of the receiver.
*/ */
protected boolean tagged() { protected Message icon(Chatter receiver) {
return true; return null;
} }
public abstract Stream<Chatter> readers(); public abstract Stream<Chatter> readers();
@@ -61,7 +64,7 @@ public abstract class ChatChannel {
*/ */
public abstract boolean canWrite(Chatter sender); public abstract boolean canWrite(Chatter sender);
protected abstract Message format(Chatter receiver, Chatter sender, String message); protected abstract Component format(Chatter receiver, Chatter sender, String message);
/** /**
* Called after a message was delivered to all readers. * Called after a message was delivered to all readers.
@@ -96,11 +99,14 @@ public abstract class ChatChannel {
for (Chatter receiver : receivers.values()) { for (Chatter receiver : receivers.values()) {
if (!receiver.chatShown()) continue; if (!receiver.chatShown()) continue;
Message msg = format(receiver, sender, coloredMessage); Component msg = format(receiver, sender, coloredMessage);
if (tagged() && ChatManager.getDefault(receiver) != this) { Message icon = icon(receiver);
msg = new Message("CHAT_TAGGED", receiver.parseToPlain(tag(receiver)), msg); if (icon != null) {
Component iconComponent = receiver.parse(new Message("CHAT_ICON", ChatManager.getDefault(receiver) == this ? "§e" : "§7", icon))
.hoverEvent(HoverEvent.showText(receiver.parse(tag(receiver))));
msg = Component.text().append(iconComponent).append(Component.text(" ")).append(msg).build();
} }
receiver.send(false, null, null, msg); receiver.sendMessage(msg);
if (receiver.user().getId() != user.getId()) noReceiver = false; if (receiver.user().getId() != user.getId()) noReceiver = false;
} }
@@ -70,7 +70,7 @@ public class ChatFilter {
sender.system("CHAT_LIXFEL_ACTION_BAR"); sender.system("CHAT_LIXFEL_ACTION_BAR");
for (int i = 0; i < delay.length; i++) { for (int i = 0; i < delay.length; i++) {
int finalI = i; int finalI = i;
VelocityCore.schedule(() -> sender.prefixless("CHAT_MSG", name, sender.user(), new Message(baseMessage + (finalI + 1)))).delay(delay[i], TimeUnit.SECONDS).schedule(); VelocityCore.schedule(() -> sender.prefixless("CHAT_SPECIAL_ALERT", name, sender.user(), new Message(baseMessage + (finalI + 1)))).delay(delay[i], TimeUnit.SECONDS).schedule();
} }
} }
} }
@@ -28,6 +28,8 @@ import de.steamwar.sql.Team;
import de.steamwar.sql.UserPerm; import de.steamwar.sql.UserPerm;
import de.steamwar.velocitycore.network.NetworkSender; import de.steamwar.velocitycore.network.NetworkSender;
import de.steamwar.velocitycore.util.SteamwarPrefix; import de.steamwar.velocitycore.util.SteamwarPrefix;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -37,9 +39,10 @@ public class ChatFormat {
private ChatFormat() {} private ChatFormat() {}
/** /**
* Formats a message with the rank and team prefixes of the sender. * Formats a message with the rank and team prefixes of the sender. The sender part ({@code <format>_SENDER})
* shows the team of the sender on hover.
*/ */
public static Message player(String format, Chatter receiver, Chatter sender, Chatter msgReceiver, String message) { public static Component player(String format, Chatter receiver, Chatter sender, Chatter msgReceiver, String message) {
SteamwarUser user = sender.user(); SteamwarUser user = sender.user();
UserPerm.Prefix prefix = user.prefix(); UserPerm.Prefix prefix = user.prefix();
@@ -52,7 +55,7 @@ public class ChatFormat {
} }
String chatColorCode = user.hasPerm(UserPerm.TEAM) ? "§f" : "§7"; String chatColorCode = user.hasPerm(UserPerm.TEAM) ? "§f" : "§7";
return new Message(format, Object[] params = {
user, user,
msgReceiver == null ? receiver : msgReceiver, msgReceiver == null ? receiver : msgReceiver,
highlightMentions(message, chatColorCode, receiver), highlightMentions(message, chatColorCode, receiver),
@@ -60,7 +63,14 @@ public class ChatFormat {
"", "",
prefix == UserPerm.emptyPrefix ? "§f" : prefix.getColorCode(), prefix == UserPerm.emptyPrefix ? "§f" : prefix.getColorCode(),
prefix.getChatPrefix().length() == 0 ? "§f" : prefix.getChatPrefix() + " ", prefix.getChatPrefix().length() == 0 ? "§f" : prefix.getChatPrefix() + " ",
chatColorCode); chatColorCode};
Component senderPart = receiver.parse(new Message(format + "_SENDER", params));
if (user.getTeam() != 0) {
Team team = Team.byId(user.getTeam());
senderPart = senderPart.hoverEvent(HoverEvent.showText(receiver.parse(new Message("CHAT_HOVER_TEAM", team.getTeamName(), "§" + team.getTeamColor(), team.getTeamKuerzel()))));
}
return Component.text().append(senderPart).append(receiver.parse(new Message(format, params))).build();
} }
private static boolean useSwPrefix(SteamwarUser user) { private static boolean useSwPrefix(SteamwarUser user) {
@@ -27,6 +27,7 @@ import de.steamwar.sql.AuditLog;
import de.steamwar.sql.IgnoreSystem; import de.steamwar.sql.IgnoreSystem;
import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.SteamwarUser;
import de.steamwar.velocitycore.VelocityCore; import de.steamwar.velocitycore.VelocityCore;
import net.kyori.adventure.text.Component;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -60,8 +61,8 @@ public class DirectChannel extends ChatChannel {
} }
@Override @Override
protected boolean tagged() { protected Message icon(Chatter receiver) {
return false; return new Message("CHAT_ICON_MSG");
} }
@Override @Override
@@ -88,7 +89,7 @@ public class DirectChannel extends ChatChannel {
} }
@Override @Override
protected Message format(Chatter receiver, Chatter sender, String message) { protected Component format(Chatter receiver, Chatter sender, String message) {
return ChatFormat.player("CHAT_MSG", receiver, sender, Chatter.of(partner(sender.user().getUUID())), message); return ChatFormat.player("CHAT_MSG", receiver, sender, Chatter.of(partner(sender.user().getUUID())), message);
} }
@@ -27,6 +27,7 @@ import de.steamwar.network.packets.common.FightInfoPacket;
import de.steamwar.sql.AuditLog; import de.steamwar.sql.AuditLog;
import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.SteamwarUser;
import lombok.Getter; import lombok.Getter;
import net.kyori.adventure.text.Component;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -72,6 +73,16 @@ public class FightTeamChannel extends ChatChannel {
return new Message("CHAT_CHANNEL_FIGHT_TEAM", server.getServerInfo().getName(), teamName()); return new Message("CHAT_CHANNEL_FIGHT_TEAM", server.getServerInfo().getName(), teamName());
} }
@Override
protected Message icon(Chatter receiver) {
String teamName = teamName();
String color = teamName.length() >= 2 && teamName.charAt(0) == '§' ? teamName.substring(0, 2) : "§7";
if (receiver.getPlayer() != null && server.getPlayersConnected().contains(receiver.getPlayer())) {
return new Message("CHAT_ICON_FIGHT_TEAM", color);
}
return new Message("CHAT_ICON_FIGHT_TEAM_FOREIGN", color, server.getServerInfo().getName());
}
@Override @Override
public Stream<Chatter> readers() { public Stream<Chatter> readers() {
List<Integer> members = members(); List<Integer> members = members();
@@ -90,8 +101,8 @@ public class FightTeamChannel extends ChatChannel {
} }
@Override @Override
protected Message format(Chatter receiver, Chatter sender, String message) { protected Component format(Chatter receiver, Chatter sender, String message) {
return new Message("CHAT_FIGHT_TEAM", teamName(), sender.user(), ChatFormat.highlightMentions(message, "§f", receiver)); return receiver.parse(new Message("CHAT_FIGHT_TEAM", teamName(), sender.user(), ChatFormat.highlightMentions(message, "§f", receiver)));
} }
@Override @Override
@@ -23,6 +23,7 @@ package de.steamwar.velocitycore.chat;
import de.steamwar.messages.Chatter; import de.steamwar.messages.Chatter;
import de.steamwar.messages.Message; import de.steamwar.messages.Message;
import de.steamwar.velocitycore.discord.DiscordBot; import de.steamwar.velocitycore.discord.DiscordBot;
import net.kyori.adventure.text.Component;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -38,6 +39,11 @@ public class GlobalChannel extends ChatChannel {
return new Message("CHAT_CHANNEL_GLOBAL"); return new Message("CHAT_CHANNEL_GLOBAL");
} }
@Override
protected Message icon(Chatter receiver) {
return new Message("CHAT_ICON_GLOBAL");
}
@Override @Override
public Stream<Chatter> readers() { public Stream<Chatter> readers() {
return Stream.concat(Stream.of(Chatter.console()), Chatter.allPlayers().filter(ChatManager::readsGlobal).map(Chatter::of).filter(chatter -> ChatManager.reads(chatter, persistId()))); return Stream.concat(Stream.of(Chatter.console()), Chatter.allPlayers().filter(ChatManager::readsGlobal).map(Chatter::of).filter(chatter -> ChatManager.reads(chatter, persistId())));
@@ -49,14 +55,14 @@ public class GlobalChannel extends ChatChannel {
} }
@Override @Override
protected Message format(Chatter receiver, Chatter sender, String message) { protected Component format(Chatter receiver, Chatter sender, String message) {
return ChatFormat.player("CHAT_GLOBAL", receiver, sender, null, message); return ChatFormat.player("CHAT_GLOBAL", receiver, sender, null, message);
} }
@Override @Override
protected boolean delivered(Chatter sender, String message, boolean mirror) { protected boolean delivered(Chatter sender, String message, boolean mirror) {
if (mirror) { if (mirror) {
DiscordBot.withBot(bot -> bot.getIngameChat().send(false, null, null, format(bot.getIngameChat(), sender, message))); DiscordBot.withBot(bot -> bot.getIngameChat().sendMessage(format(bot.getIngameChat(), sender, message)));
} }
return true; return true;
} }
@@ -30,6 +30,7 @@ import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.UserPerm; import de.steamwar.sql.UserPerm;
import de.steamwar.velocitycore.network.NetworkSender; import de.steamwar.velocitycore.network.NetworkSender;
import lombok.Getter; import lombok.Getter;
import net.kyori.adventure.text.Component;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -62,6 +63,17 @@ public class LocalChannel extends ChatChannel {
return new Message("CHAT_CHANNEL_LOCAL"); return new Message("CHAT_CHANNEL_LOCAL");
} }
@Override
protected Message icon(Chatter receiver) {
if (!isArena()) return new Message("CHAT_ICON_LOCAL");
// Moderators reading an arena they are not on need to know which arena it is
if (receiver.getPlayer() != null && server.getPlayersConnected().contains(receiver.getPlayer())) {
return new Message("CHAT_ICON_FIGHT");
}
return new Message("CHAT_ICON_FIGHT_FOREIGN", server.getServerInfo().getName());
}
@Override @Override
public Stream<Chatter> readers() { public Stream<Chatter> readers() {
Stream<Chatter> players = server.getPlayersConnected().stream().map(Chatter::of).filter(chatter -> ChatManager.reads(chatter, persistId())).map(Chatter.class::cast); Stream<Chatter> players = server.getPlayersConnected().stream().map(Chatter::of).filter(chatter -> ChatManager.reads(chatter, persistId())).map(Chatter.class::cast);
@@ -83,7 +95,7 @@ public class LocalChannel extends ChatChannel {
} }
@Override @Override
protected Message format(Chatter receiver, Chatter sender, String message) { protected Component format(Chatter receiver, Chatter sender, String message) {
if (!isArena()) { if (!isArena()) {
return ChatFormat.player("CHAT_LOCAL", receiver, sender, null, message); return ChatFormat.player("CHAT_LOCAL", receiver, sender, null, message);
} }
@@ -92,13 +104,13 @@ public class LocalChannel extends ChatChannel {
FightInfoPacket info = ChatManager.getFightInfo(server); FightInfoPacket info = ChatManager.getFightInfo(server);
int id = sender.user().getId(); int id = sender.user().getId();
if (info != null && info.getBluePlayers().contains(id)) { if (info != null && info.getBluePlayers().contains(id)) {
return new Message("CHAT_FIGHT_PARTICIPANT", info.getBlueName(), sender.user(), highlighted); return receiver.parse(new Message("CHAT_FIGHT_PARTICIPANT", info.getBlueName(), sender.user(), highlighted));
} else if (info != null && info.getRedPlayers().contains(id)) { } else if (info != null && info.getRedPlayers().contains(id)) {
return new Message("CHAT_FIGHT_PARTICIPANT", info.getRedName(), sender.user(), highlighted); return receiver.parse(new Message("CHAT_FIGHT_PARTICIPANT", info.getRedName(), sender.user(), highlighted));
} else if (ChatManager.isReferee(server, id)) { } else if (ChatManager.isReferee(server, id)) {
return new Message("CHAT_FIGHT_REFEREE", sender.user(), highlighted); return receiver.parse(new Message("CHAT_FIGHT_REFEREE", sender.user(), highlighted));
} }
return new Message("CHAT_FIGHT_SPECTATOR", sender.user(), highlighted); return receiver.parse(new Message("CHAT_FIGHT_SPECTATOR", sender.user(), highlighted));
} }
@Override @Override
@@ -26,6 +26,7 @@ import de.steamwar.sql.AuditLog;
import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.UserPerm; import de.steamwar.sql.UserPerm;
import de.steamwar.velocitycore.discord.DiscordBot; import de.steamwar.velocitycore.discord.DiscordBot;
import net.kyori.adventure.text.Component;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -42,6 +43,11 @@ public class ServerTeamChannel extends ChatChannel {
return new Message("CHAT_CHANNEL_SERVERTEAM"); return new Message("CHAT_CHANNEL_SERVERTEAM");
} }
@Override
protected Message icon(Chatter receiver) {
return new Message("CHAT_ICON_SERVERTEAM");
}
@Override @Override
public Stream<Chatter> readers() { public Stream<Chatter> readers() {
return Arrays.stream(Chatter.serverteam().getChatters()).filter(chatter -> ChatManager.reads(chatter, persistId())); return Arrays.stream(Chatter.serverteam().getChatters()).filter(chatter -> ChatManager.reads(chatter, persistId()));
@@ -57,14 +63,14 @@ public class ServerTeamChannel extends ChatChannel {
} }
@Override @Override
protected Message format(Chatter receiver, Chatter sender, String message) { protected Component format(Chatter receiver, Chatter sender, String message) {
return ChatFormat.player("CHAT_SERVERTEAM", receiver, sender, null, message); return ChatFormat.player("CHAT_SERVERTEAM", receiver, sender, null, message);
} }
@Override @Override
protected boolean delivered(Chatter sender, String message, boolean mirror) { protected boolean delivered(Chatter sender, String message, boolean mirror) {
if (mirror) { if (mirror) {
DiscordBot.withBot(bot -> bot.getServerTeamChat().send(false, null, null, ChatFormat.player("CHAT_GLOBAL", bot.getServerTeamChat(), sender, null, message))); DiscordBot.withBot(bot -> bot.getServerTeamChat().sendMessage(ChatFormat.player("CHAT_GLOBAL", bot.getServerTeamChat(), sender, null, message)));
} }
return true; return true;
} }
@@ -26,6 +26,7 @@ import de.steamwar.sql.AuditLog;
import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.SteamwarUser;
import de.steamwar.velocitycore.commands.StreamingCommand; import de.steamwar.velocitycore.commands.StreamingCommand;
import lombok.Getter; import lombok.Getter;
import net.kyori.adventure.text.Component;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -48,6 +49,11 @@ public class TeamChannel extends ChatChannel {
return new Message("CHAT_CHANNEL_TEAM"); return new Message("CHAT_CHANNEL_TEAM");
} }
@Override
protected Message icon(Chatter receiver) {
return new Message("CHAT_ICON_TEAM");
}
@Override @Override
public Stream<Chatter> readers() { public Stream<Chatter> readers() {
return Chatter.allPlayers() return Chatter.allPlayers()
@@ -68,7 +74,7 @@ public class TeamChannel extends ChatChannel {
} }
@Override @Override
protected Message format(Chatter receiver, Chatter sender, String message) { protected Component format(Chatter receiver, Chatter sender, String message) {
return ChatFormat.player("CHAT_TEAM", receiver, sender, null, message); return ChatFormat.player("CHAT_TEAM", receiver, sender, null, message);
} }