Fix formatted team names disconnecting clients via click commands

This commit is contained in:
einfachButzi
2026-11-12 01:58:16 +01:00
parent fb8711f357
commit cd08037752
5 changed files with 22 additions and 8 deletions
+5 -1
View File
@@ -46,6 +46,10 @@ class Team(id: EntityID<Int>) : IntEntity(id) {
fun byId(id: Int) =
synchronized(teamCache) { teamCache.computeIfAbsent(id) { useDb { Team[id] } } }
@JvmStatic
fun getActiveById(id: Int) =
useDb { findById(id)?.takeUnless { it.deleted } }
@JvmStatic
fun get(name: String) =
useDb { find { (TeamTable.name.lowerCase() eq name.lowercase() or (TeamTable.kuerzel.lowerCase() eq name.lowercase())) and not(TeamTable.deleted) }.firstOrNull() }
@@ -100,4 +104,4 @@ class Team(id: EntityID<Int>) : IntEntity(id) {
set(value) = useDb {
name = value
}
}
}
@@ -133,7 +133,7 @@ public class ChatFormat {
private static Component clickableTeam(Chatter receiver, Team team, Component component) {
return component
.hoverEvent(HoverEvent.showText(receiver.parse(new Message("CHAT_HOVER_TEAM_CLICK", team.getTeamName(), "§" + team.getTeamColor(), team.getTeamKuerzel()))))
.clickEvent(ClickEvent.suggestCommand("/team info " + team.getTeamKuerzel()));
.clickEvent(ClickEvent.suggestCommand("/team info id " + team.getTeamId()));
}
private static Component teamHover(Chatter receiver, Team team) {
@@ -128,7 +128,7 @@ public class EventCommand extends SWCommand {
for (Map.Entry<Integer, Integer> entry : Teampointssortet.entrySet()) {
Component finalmessage = sender.parse("EVENT_TEAM_TABLE",Team.byId(entry.getKey()).getTeamColor(), Team.byId(entry.getKey()).getTeamKuerzel(), Team.byId(entry.getKey()).getTeamName(), entry.getValue());
finalmessage = finalmessage.clickEvent(ClickEvent.runCommand("/team info " + Team.byId(entry.getKey()).getTeamName()));
finalmessage = finalmessage.clickEvent(ClickEvent.runCommand("/team info id " + entry.getKey()));
sender.sendMessage(finalmessage);
}
}
@@ -183,11 +183,11 @@ public class EventCommand extends SWCommand {
Team blue = Team.byId(eventFight.getTeamBlue());
Team red = Team.byId(eventFight.getTeamRed());
Component finalfightline = sender.parse("EVENT_CURRENT_FIGHT_1", eventFight.getStartTime().toLocalDateTime().format(format), blue.getTeamColor(), blue.getTeamKuerzel());
finalfightline = finalfightline.clickEvent(ClickEvent.runCommand("/team info " + blue.getTeamName()));
finalfightline = finalfightline.clickEvent(ClickEvent.runCommand("/team info id " + blue.getTeamId()));
Component vs = sender.parse("EVENT_CURRENT_FIGHT_VS");
finalfightline = finalfightline.append(vs);
Component redteam = sender.parse("EVENT_CURRENT_FIGHT_2", red.getTeamColor(), red.getTeamKuerzel());
redteam = redteam.clickEvent(ClickEvent.runCommand("/team info " + red.getTeamName()));
redteam = redteam.clickEvent(ClickEvent.runCommand("/team info id " + red.getTeamId()));
finalfightline = finalfightline.append(redteam);
if (eventFight.hasFinished()) {
@@ -272,4 +272,4 @@ public class EventCommand extends SWCommand {
return List.of(eventFight.getTeamBlue(), eventFight.getTeamRed());
});
}
}
}
@@ -285,6 +285,16 @@ public class TeamCommand extends SWCommand {
info(sender, Team.byId(sender.user().getTeam()));
}
@Register({"info", "id"})
public void infoById(Chatter sender, int teamId) {
Team team = Team.getActiveById(teamId);
if (team == null) {
sender.system("UNKNOWN_TEAM");
return;
}
info(sender, team);
}
@Register(value = "info", description = "TEAM_INFO_USAGE")
public void info(Chatter sender, @ErrorMessage("UNKNOWN_TEAM") Team team) {
if (team.getMembers().isEmpty()) {
@@ -403,7 +413,7 @@ public class TeamCommand extends SWCommand {
Team tm = all.get(i);
sender.prefixless("TEAM_LIST_TEAM", new Message("TEAM_LIST_TEAM_HOVER"),
ClickEvent.runCommand("/team info " + tm.getTeamName()), tm.getTeamColor(), tm.getTeamKuerzel(), tm.getTeamName());
ClickEvent.runCommand("/team info id " + tm.getTeamId()), tm.getTeamColor(), tm.getTeamKuerzel(), tm.getTeamName());
}
Component beforePage = Component
@@ -67,7 +67,7 @@ public class WhoisCommand extends SWCommand {
sender.system("WHOIS_USERNAME", user.getUserName());
sender.system("WHOIS_PREFIX", user.prefix().getColorCode() + user.prefix().getChatPrefix());
sender.system("WHOIS_TEAM", new Message("WHOIS_TEAM_HOVER", team.getTeamName()), ClickEvent.runCommand("/team info " + team.getTeamName()), team.getTeamColor(), team.getTeamKuerzel(), team.getTeamName());
sender.system("WHOIS_TEAM", new Message("WHOIS_TEAM_HOVER", team.getTeamName()), ClickEvent.runCommand("/team info id " + team.getTeamId()), team.getTeamColor(), team.getTeamKuerzel(), team.getTeamName());
if (!sender.user().hasPerm(UserPerm.TEAM)) return;