add parsing for chat prefix mode configuration

This commit is contained in:
Jakob Schulz
2026-05-20 19:06:05 +02:00
parent 24d8ec7301
commit 48fb6b5ed7
2 changed files with 45 additions and 3 deletions
@@ -175,6 +175,9 @@ class SteamwarUser(id: EntityID<Int>) : IntEntity(id) {
leaderInternal = false
}
fun hasTeam() =
team != 0
private var leaderInternal by SteamwarUserTable.leader
var leader: Boolean
get() = leaderInternal
@@ -60,6 +60,9 @@ public class ChatListener extends BasicListener {
private static final Set<String> noLogCommands = Set.of("webpw", "webpassword", "web");
private static final String PREFIX_MODE_CONFIG = "chatprefix";
private static final String PREFIX_MODE_SW = "SW";
@Subscribe(order = PostOrder.FIRST)
public void fixCommands(CommandExecuteEvent e) {
String command = e.getCommand();
@@ -241,18 +244,54 @@ public class ChatListener extends BasicListener {
private static void chatToReciever(Chatter receiver, Chatter msgReceiver, SteamwarUser sender, String format, String message) {
UserPerm.Prefix prefix = sender.prefix();
boolean useSwPrefix = useSwPrefix(sender);
String teamPrefix = "";
String swPrefix = prefix.getChatPrefix().length() == 0 ? "§f" : prefix.getChatPrefix() + " ";
String nameColor = prefix == UserPerm.emptyPrefix ? "§f" : prefix.getColorCode();
if (sender.hasPerm(UserPerm.TEAM)) {
swPrefix = "§f";
if (useSwPrefix) {
swPrefix = "§eS§8W ";
} else if (sender.getTeam() != 0) {
Team team = Team.byId(sender.getTeam());
teamPrefix = "§" + team.getTeamColor() + team.getTeamKuerzel() + " ";
}
} else if (sender.getTeam() != 0) {
Team team = Team.byId(sender.getTeam());
teamPrefix = "§" + team.getTeamColor() + team.getTeamKuerzel() + " ";
}
String chatColorCode = sender.hasPerm(UserPerm.TEAM) ? "§f" : "§7";
receiver.prefixless(format,
sender,
msgReceiver == null ? receiver : msgReceiver,
highlightMentions(message, chatColorCode, receiver),
sender.getTeam() == 0 ? "" : "§" + Team.byId(sender.getTeam()).getTeamColor() + Team.byId(sender.getTeam()).getTeamKuerzel() + " ",
teamPrefix,
"",
prefix.getColorCode(),
prefix.getChatPrefix().length() == 0 ? "§f" : prefix.getChatPrefix() + " ",
nameColor,
swPrefix,
chatColorCode);
}
private static boolean useSwPrefix(SteamwarUser user) {
if (!user.hasPerm(UserPerm.TEAM)) {
return false;
}
UserPerm.Prefix prefix = user.prefix();
boolean hasTeamPrefix = user.getTeam() != 0;
boolean hasSwPrefix = prefix != UserPerm.emptyPrefix;
if (!hasSwPrefix) return false;
if (!hasTeamPrefix) return true;
return PREFIX_MODE_SW.equals(UserConfig.getConfig(user.getId(), PREFIX_MODE_CONFIG));
}
private static boolean filteredCommand(Chatter sender, String message) {
String command = message.split(" ", 2)[0];
if (command.startsWith("/") && command.contains(":")) {