Add Punishment.PunishmentType.NoEvent
All checks were successful
SteamWarCI Build successful

This commit is contained in:
2025-12-01 15:52:15 +01:00
parent dfb71594b9
commit 771c77247a
7 changed files with 44 additions and 22 deletions

View File

@@ -179,6 +179,14 @@ class Punishment(id: EntityID<Int>) : IntEntity(id) {
"UNNOTEAMSERVER",
UserPerm.MODERATION
),
NoEvent(
"NOEVENT_TEAM",
"NOEVENT_PERMA",
"NOEVENT_UNTIL",
"NOEVENT_ERROR",
"UNNOEVENT",
UserPerm.MODERATION
),
Note("NOTE_TEAM", null, null, null, null, UserPerm.PUNISHMENTS, true);
fun isMulti() = multi

View File

@@ -208,6 +208,14 @@ NOTEAMSERVER_UNTIL=§7You are excluded from §e§lteam servers§7 §euntil {0}§
UNNOTEAMSERVER_ERROR=§cThe player is not excluded from team servers.
UNNOTEAMSERVER=§e{0} §7may now set §e§lteam servers§7 again§8.
NOEVENT_TEAM=§e{0} §7was excluded from §e{1} {2} §7from §e§levents§8: §f{3}
NOEVENT_PERMA=§7You are §epermanently§7 excluded from §e§levents§8: §e{0}
NOEVENT_UNTIL=§7You are excluded from §e§levents§7 §euntil {0}§8: §e{1}
NOEVENT_ERROR=§cThe player is not excluded from events.
UNNOEVENT=§e{0} §7may now participate in §e§levents§7 again§8.
NOEVENT_PLAYER_PUNISHED=§7A player in your Team is excluded from §e§levents§8.§7 Your team cannot participate§8.
NOEVENT_INVITED_PUNISHED=§cThe player you invited cannot attend §e§levents§8.§7 If they join your future Event participation will be restricted§8.
NOTE_TEAM=§e{0} §7received a §e§lnote§7 from §e{1} {2}: §f{3}
#BugCommand

View File

@@ -190,6 +190,14 @@ NOTEAMSERVER_UNTIL=§7Du bist §ebis zum {0} §7vom §e§lTeamserver§7 setzen a
UNNOTEAMSERVER_ERROR=§cDer Spieler ist nicht vom Teamserver setzten ausgeschlossen.
UNNOTEAMSERVER=§e{0} §7darf nun wieder §e§lTeamserver§7 setzen§8.
NOEVENT_TEAM=§e{0} §7wurde von §e{1} {2} §7aus §e§lEvents§8 ausgeschlossen: §f{3}
NOEVENT_PERMA=§7Du bist §epermanent§7 von §e§lEvents§8 ausgeschlossen: §e{0}
NOEVENT_UNTIL=§7Du bist §ebis zum {0}§7 von §e§lEvents§7 ausgeschlossen§8: §e{1}
NOEVENT_ERROR=§cDer Spieler ist nicht von Events ausgeschlossen.
UNNOEVENT=§e{0} §7kann nun wieder an §e§lEvents§7 teilnehmen§8.
NOEVENT_PLAYER_PUNISHED=§7Ein Spieler deines Teams ist von §e§lEvents§7 ausgeschlossen§8.§7 Dein Team kann nicht teilnehmen§8.
NOEVENT_INVITED_PUNISHED=§cDer von dir eingeladene Spieler kann nicht an §e§lEvents§7 teilnehmen§8.§7 Wenn er beitritt, wird deine zukünftige Teilnahme an Events eingeschränkt§8.
NOTE_TEAM=§e{0} §7erhielt von §e{1} {2} §7die §e§lNotiz§7§8: §f{3}
#BugCommand

View File

@@ -151,6 +151,7 @@ public class VelocityCore implements ReloadablePlugin {
new PunishmentCommand("nodev", Punishment.PunishmentType.NoDevServer);
new PunishmentCommand("nofight", Punishment.PunishmentType.NoFightServer);
new PunishmentCommand("noteamserver", Punishment.PunishmentType.NoTeamServer);
new PunishmentCommand("noevent", Punishment.PunishmentType.NoEvent);
new PunishmentCommand("note", Punishment.PunishmentType.Note);
linker = new AbstractLinker<>(this) {

View File

@@ -26,10 +26,7 @@ import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.Message;
import de.steamwar.sql.BannedUserIPs;
import de.steamwar.sql.Punishment;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.UserPerm;
import de.steamwar.sql.*;
import de.steamwar.velocitycore.VelocityCore;
import de.steamwar.velocitycore.listeners.IPSanitizer;
@@ -213,6 +210,11 @@ public class PunishmentCommand {
if(punishmentType == Punishment.PunishmentType.Ban)
ban(target, banTime, msg, punisher, isPerma);
Chatter.serverteam().system(punishmentType.getTeamMessage(), target, sender, new Message((isPerma ? "PUNISHMENT_PERMA" : "PUNISHMENT_UNTIL"), banTime), msg);
if (punishmentType == Punishment.PunishmentType.NoEvent) {
int teamId = target.getTeam();
if (teamId == 0) return;
TeamTeilnahme.deleteFuture(teamId);
}
}
@Register

View File

@@ -141,6 +141,9 @@ public class TeamCommand extends SWCommand {
user.setTeam(t);
teamInvitations.remove(user.getId());
sender.system("TEAM_JOIN_JOINED", Team.byId(t).getTeamName());
if (user.isPunished(Punishment.PunishmentType.NoEvent)) {
TeamTeilnahme.deleteFuture(t);
}
}
@Register("stepback")
@@ -201,6 +204,9 @@ public class TeamCommand extends SWCommand {
invitations.add(team.getTeamId());
sender.system("TEAM_INVITE_INVITED", target.getUserName());
if (target.isPunished(Punishment.PunishmentType.NoEvent)) {
sender.system("NOEVENT_INVITED_PUNISHED");
}
Chatter.of(target).system("TEAM_INVITE_INVITED_TARGET", team.getTeamColor(), team.getTeamName());
}
@@ -422,6 +428,12 @@ public class TeamCommand extends SWCommand {
TeamTeilnahme.notTeilnehmen(team.getTeamId(), event.getEventID());
sender.system("TEAM_EVENT_LEFT");
}else{
if (team.getMembers().stream().anyMatch(integer -> {
return SteamwarUser.get(integer).isPunished(Punishment.PunishmentType.NoEvent);
})) {
sender.system("NOEVENT_PLAYER_PUNISHED");
return;
}
TeamTeilnahme.teilnehmen(team.getTeamId(), event.getEventID());
sender.system("TEAM_EVENT_JOINED", event.getEventName());
sender.prefixless("TEAM_EVENT_HOW_TO_LEAVE");

View File

@@ -25,9 +25,6 @@ import de.steamwar.sql.Team;
import de.steamwar.sql.TeamTeilnahme;
import lombok.experimental.UtilityClass;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.interactions.components.ActionRow;
import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
import java.awt.*;
@@ -54,12 +51,6 @@ public class EventChannel {
.setTitle("Zukünftige Events")
.setAuthor("SteamWar", "https://www.steamwar.de");
StringSelectMenu.Builder menuBuilder = StringSelectMenu.create("eventName")
.setPlaceholder("Wähle ein Event aus!")
.setMinValues(1)
.setMaxValues(1);
Timestamp now = Timestamp.from(Instant.now());
List<Event> events = Event.getComing();
events.forEach(event -> {
@@ -73,18 +64,10 @@ public class EventChannel {
st.append("\nAngemeldete Teams: ").append(teilname);
}
embedBuilder.addField(event.getEventName(), st.toString(), false);
if(event.getDeadline().after(Timestamp.from(Instant.now()))) {
menuBuilder.addOption(event.getEventName(), event.getEventID() + "", "An " + event.getEventName() + " teilnehmen", Emoji.fromUnicode("U+1F4DD"));
}
});
MessageCreateBuilder messageBuilder = new MessageCreateBuilder()
return new MessageCreateBuilder()
.setEmbeds(embedBuilder.build());
if(events.stream().anyMatch(event -> event.getDeadline().after(Timestamp.from(Instant.now())))) {
messageBuilder.setComponents(ActionRow.of(menuBuilder.build()));
}
return messageBuilder;
}
private MessageCreateBuilder updateCurrent() {