forked from SteamWar/SteamWar
Fix formatted team names disconnecting clients via click commands
This commit is contained in:
@@ -46,6 +46,10 @@ class Team(id: EntityID<Int>) : IntEntity(id) {
|
|||||||
fun byId(id: Int) =
|
fun byId(id: Int) =
|
||||||
synchronized(teamCache) { teamCache.computeIfAbsent(id) { useDb { Team[id] } } }
|
synchronized(teamCache) { teamCache.computeIfAbsent(id) { useDb { Team[id] } } }
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun getActiveById(id: Int) =
|
||||||
|
useDb { findById(id)?.takeUnless { it.deleted } }
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun get(name: String) =
|
fun get(name: String) =
|
||||||
useDb { find { (TeamTable.name.lowerCase() eq name.lowercase() or (TeamTable.kuerzel.lowerCase() eq name.lowercase())) and not(TeamTable.deleted) }.firstOrNull() }
|
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 {
|
set(value) = useDb {
|
||||||
name = value
|
name = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ public class ChatFormat {
|
|||||||
private static Component clickableTeam(Chatter receiver, Team team, Component component) {
|
private static Component clickableTeam(Chatter receiver, Team team, Component component) {
|
||||||
return component
|
return component
|
||||||
.hoverEvent(HoverEvent.showText(receiver.parse(new Message("CHAT_HOVER_TEAM_CLICK", team.getTeamName(), "§" + team.getTeamColor(), team.getTeamKuerzel()))))
|
.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) {
|
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()) {
|
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());
|
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);
|
sender.sendMessage(finalmessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -183,11 +183,11 @@ public class EventCommand extends SWCommand {
|
|||||||
Team blue = Team.byId(eventFight.getTeamBlue());
|
Team blue = Team.byId(eventFight.getTeamBlue());
|
||||||
Team red = Team.byId(eventFight.getTeamRed());
|
Team red = Team.byId(eventFight.getTeamRed());
|
||||||
Component finalfightline = sender.parse("EVENT_CURRENT_FIGHT_1", eventFight.getStartTime().toLocalDateTime().format(format), blue.getTeamColor(), blue.getTeamKuerzel());
|
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");
|
Component vs = sender.parse("EVENT_CURRENT_FIGHT_VS");
|
||||||
finalfightline = finalfightline.append(vs);
|
finalfightline = finalfightline.append(vs);
|
||||||
Component redteam = sender.parse("EVENT_CURRENT_FIGHT_2", red.getTeamColor(), red.getTeamKuerzel());
|
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);
|
finalfightline = finalfightline.append(redteam);
|
||||||
|
|
||||||
if (eventFight.hasFinished()) {
|
if (eventFight.hasFinished()) {
|
||||||
@@ -272,4 +272,4 @@ public class EventCommand extends SWCommand {
|
|||||||
return List.of(eventFight.getTeamBlue(), eventFight.getTeamRed());
|
return List.of(eventFight.getTeamBlue(), eventFight.getTeamRed());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -285,6 +285,16 @@ public class TeamCommand extends SWCommand {
|
|||||||
info(sender, Team.byId(sender.user().getTeam()));
|
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")
|
@Register(value = "info", description = "TEAM_INFO_USAGE")
|
||||||
public void info(Chatter sender, @ErrorMessage("UNKNOWN_TEAM") Team team) {
|
public void info(Chatter sender, @ErrorMessage("UNKNOWN_TEAM") Team team) {
|
||||||
if (team.getMembers().isEmpty()) {
|
if (team.getMembers().isEmpty()) {
|
||||||
@@ -403,7 +413,7 @@ public class TeamCommand extends SWCommand {
|
|||||||
Team tm = all.get(i);
|
Team tm = all.get(i);
|
||||||
|
|
||||||
sender.prefixless("TEAM_LIST_TEAM", new Message("TEAM_LIST_TEAM_HOVER"),
|
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
|
Component beforePage = Component
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class WhoisCommand extends SWCommand {
|
|||||||
|
|
||||||
sender.system("WHOIS_USERNAME", user.getUserName());
|
sender.system("WHOIS_USERNAME", user.getUserName());
|
||||||
sender.system("WHOIS_PREFIX", user.prefix().getColorCode() + user.prefix().getChatPrefix());
|
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;
|
if (!sender.user().hasPerm(UserPerm.TEAM)) return;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user