forked from SteamWar/SteamWar
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:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user