From c4cabdcdb6e96ad0e1a4a24e08ea1459d65eb1fc Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 3 Aug 2024 15:07:17 +0200 Subject: [PATCH 1/4] Add some QOL to EventCommand and EventRescheduleCommand --- .../velocitycore/commands/EventCommand.java | 57 +++++++++++++++---- .../commands/EventRescheduleCommand.java | 47 +++++++++++++-- 2 files changed, 89 insertions(+), 15 deletions(-) diff --git a/src/de/steamwar/velocitycore/commands/EventCommand.java b/src/de/steamwar/velocitycore/commands/EventCommand.java index df90c02..98c5a40 100644 --- a/src/de/steamwar/velocitycore/commands/EventCommand.java +++ b/src/de/steamwar/velocitycore/commands/EventCommand.java @@ -19,17 +19,22 @@ package de.steamwar.velocitycore.commands; -import de.steamwar.velocitycore.EventStarter; -import de.steamwar.persistent.Subserver; -import de.steamwar.velocitycore.SubserverSystem; +import de.steamwar.command.PreviousArguments; import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeMapper; import de.steamwar.command.TypeValidator; import de.steamwar.messages.Chatter; import de.steamwar.messages.PlayerChatter; +import de.steamwar.persistent.Subserver; import de.steamwar.sql.*; +import de.steamwar.velocitycore.EventStarter; +import de.steamwar.velocitycore.SubserverSystem; +import java.sql.Timestamp; import java.time.Instant; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -50,17 +55,17 @@ public class EventCommand extends SWCommand { sender.system("EVENT_NO_CURRENT"); List coming = Event.getComing(); - if(coming.isEmpty()) + if (coming.isEmpty()) return; sender.system("EVENT_COMING"); Instant now = Instant.now(); DateTimeFormatter format = DateTimeFormatter.ofPattern(sender.parseToPlain("EVENT_DATE_FORMAT")); - for(Event e : coming){ + for (Event e : coming) { sender.prefixless("EVENT_COMING_EVENT", e.getStart().toLocalDateTime().format(format), e.getEnd().toLocalDateTime().format(format), e.getEventName()); - if(now.isBefore(e.getDeadline().toInstant())) + if (now.isBefore(e.getDeadline().toInstant())) sender.prefixless("EVENT_COMING_DEADLINE", e.getDeadline()); SchematicType schemType = e.getSchematicType(); @@ -68,7 +73,7 @@ public class EventCommand extends SWCommand { sender.prefixless("EVENT_COMING_SCHEM_DEADLINE", schemType.getDeadline()); Set teams = TeamTeilnahme.getTeams(e.getEventID()); - if(!teams.isEmpty()) + if (!teams.isEmpty()) sender.prefixless("EVENT_COMING_TEAMS", teams.stream().map(team -> sender.parseToLegacy("EVENT_COMING_TEAM", team.getTeamColor(), team.getTeamKuerzel())).collect(Collectors.joining(" "))); } } @@ -81,13 +86,13 @@ public class EventCommand extends SWCommand { sender.system("EVENT_CURRENT_EVENT", currentEvent.getEventName()); DateTimeFormatter format = DateTimeFormatter.ofPattern(sender.parseToPlain("EVENT_TIME_FORMAT")); - for(EventFight fight : EventFight.getEvent(currentEvent.getEventID())){ + for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) { Team blue = Team.get(fight.getTeamBlue()); Team red = Team.get(fight.getTeamRed()); StringBuilder fline = new StringBuilder(sender.parseToLegacy("EVENT_CURRENT_FIGHT", fight.getStartTime().toLocalDateTime().format(format), blue.getTeamColor(), blue.getTeamKuerzel(), red.getTeamColor(), red.getTeamKuerzel())); - if(fight.hasFinished()){ - switch(fight.getErgebnis()){ + if (fight.hasFinished() || fight.getErgebnis() != 0) { + switch (fight.getErgebnis()) { case 1: fline.append(sender.parseToLegacy("EVENT_CURRENT_FIGHT_WIN", blue.getTeamColor(), blue.getTeamKuerzel())); break; @@ -106,7 +111,7 @@ public class EventCommand extends SWCommand { @Register public void eventWithTeam(@Validator(value = "noEvent", invert = true) PlayerChatter sender, @ErrorMessage("EVENT_NO_TEAM") Team team) { Subserver eventArena = EventStarter.getEventServer().get(team.getTeamId()); - if(eventArena == null || !Subserver.getServerList().contains(eventArena)){ + if (eventArena == null || !Subserver.getServerList().contains(eventArena)) { sender.system("EVENT_NO_FIGHT_TEAM"); return; } @@ -114,4 +119,34 @@ public class EventCommand extends SWCommand { SubserverSystem.sendPlayer(eventArena, sender.getPlayer()); } } + + @ClassMapper(Team.class) + public TypeMapper eventTeams() { + return new TypeMapper<>() { + @Override + public Team map(Chatter sender, PreviousArguments previousArguments, String s) { + if ("PUB".equalsIgnoreCase(s) || "public".equalsIgnoreCase(s)) { + return Team.get(0); + } + return Team.get(s); + } + + @Override + public Collection tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) { + List teams = new ArrayList<>(); + Event currentEvent = Event.get(); + for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) { + if (fight.hasFinished() || fight.getErgebnis() != 0) continue; + if (fight.getStartTime().after(new Timestamp(System.currentTimeMillis()))) continue; + Team red = Team.get(fight.getTeamRed()); + teams.add(red.getTeamName()); + teams.add(red.getTeamKuerzel()); + Team blue = Team.get(fight.getTeamBlue()); + teams.add(blue.getTeamName()); + teams.add(blue.getTeamKuerzel()); + } + return teams; + } + }; + } } diff --git a/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java b/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java index d639abd..0f27954 100644 --- a/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java +++ b/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java @@ -19,7 +19,9 @@ package de.steamwar.velocitycore.commands; +import de.steamwar.command.PreviousArguments; import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeMapper; import de.steamwar.messages.Chatter; import de.steamwar.sql.Event; import de.steamwar.sql.EventFight; @@ -27,9 +29,8 @@ import de.steamwar.sql.Team; import de.steamwar.sql.UserPerm; import java.sql.Timestamp; -import java.util.Date; -import java.util.List; -import java.util.ListIterator; +import java.util.*; +import java.util.function.Function; public class EventRescheduleCommand extends SWCommand { @@ -38,7 +39,7 @@ public class EventRescheduleCommand extends SWCommand { } @Register - public void reschedule(Chatter sender, Team teamBlue, Team teamRed) { + public void reschedule(Chatter sender, @Mapper("BLUE_TEAM") Team teamBlue, @Mapper("RED_TEAM") Team teamRed) { Event event = Event.get(); if(event == null){ sender.system("EVENTRESCHEDULE_UNKNOWN_TEAM"); @@ -63,4 +64,42 @@ public class EventRescheduleCommand extends SWCommand { sender.system("EVENTRESCHEDULE_NO_FIGHT"); } + + private TypeMapper eventTeam(Function teamMapper) { + return new TypeMapper<>() { + @Override + public Team map(Chatter sender, PreviousArguments previousArguments, String s) { + if ("PUB".equalsIgnoreCase(s) || "public".equalsIgnoreCase(s)) { + return Team.get(0); + } + return Team.get(s); + } + + @Override + public Collection tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) { + Event currentEvent = Event.get(); + if(currentEvent == null){ + return null; + } + List teams = new ArrayList<>(); + for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) { + if (fight.hasFinished() || fight.getErgebnis() != 0) continue; + Team team = Team.get(teamMapper.apply(fight)); + teams.add(team.getTeamName()); + teams.add(team.getTeamKuerzel()); + } + return teams; + } + }; + } + + @Mapper("BLUE_TEAM") + public TypeMapper eventBlueTeams() { + return eventTeam(EventFight::getTeamBlue); + } + + @Mapper("RED_TEAM") + public TypeMapper eventRedTeams() { + return eventTeam(EventFight::getTeamRed); + } } -- 2.39.2 From 9b4bbf9ca43f5b130564e9b294a7e0467f3835ed Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 3 Aug 2024 15:39:08 +0200 Subject: [PATCH 2/4] Update EventCommand and EventRescheduleCommand --- CommonCore | 2 +- .../steamwar/velocitycore/commands/EventCommand.java | 11 ++++------- .../velocitycore/commands/EventRescheduleCommand.java | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/CommonCore b/CommonCore index d000b86..c702acb 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit d000b8687d93eb43520bbf6685281099055eab9f +Subproject commit c702acb9d869c74d2d2da449e95b37e4c3c4fc22 diff --git a/src/de/steamwar/velocitycore/commands/EventCommand.java b/src/de/steamwar/velocitycore/commands/EventCommand.java index 98c5a40..dee1a8d 100644 --- a/src/de/steamwar/velocitycore/commands/EventCommand.java +++ b/src/de/steamwar/velocitycore/commands/EventCommand.java @@ -33,10 +33,7 @@ import de.steamwar.velocitycore.SubserverSystem; import java.sql.Timestamp; import java.time.Instant; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; public class EventCommand extends SWCommand { @@ -91,7 +88,7 @@ public class EventCommand extends SWCommand { Team red = Team.get(fight.getTeamRed()); StringBuilder fline = new StringBuilder(sender.parseToLegacy("EVENT_CURRENT_FIGHT", fight.getStartTime().toLocalDateTime().format(format), blue.getTeamColor(), blue.getTeamKuerzel(), red.getTeamColor(), red.getTeamKuerzel())); - if (fight.hasFinished() || fight.getErgebnis() != 0) { + if (fight.hasFinished()) { switch (fight.getErgebnis()) { case 1: fline.append(sender.parseToLegacy("EVENT_CURRENT_FIGHT_WIN", blue.getTeamColor(), blue.getTeamKuerzel())); @@ -133,10 +130,10 @@ public class EventCommand extends SWCommand { @Override public Collection tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) { - List teams = new ArrayList<>(); + Set teams = new HashSet<>(); Event currentEvent = Event.get(); for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) { - if (fight.hasFinished() || fight.getErgebnis() != 0) continue; + if (fight.hasFinished()) continue; if (fight.getStartTime().after(new Timestamp(System.currentTimeMillis()))) continue; Team red = Team.get(fight.getTeamRed()); teams.add(red.getTeamName()); diff --git a/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java b/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java index 0f27954..ad2a3da 100644 --- a/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java +++ b/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java @@ -81,9 +81,9 @@ public class EventRescheduleCommand extends SWCommand { if(currentEvent == null){ return null; } - List teams = new ArrayList<>(); + Set teams = new HashSet<>(); for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) { - if (fight.hasFinished() || fight.getErgebnis() != 0) continue; + if (fight.hasFinished()) continue; Team team = Team.get(teamMapper.apply(fight)); teams.add(team.getTeamName()); teams.add(team.getTeamKuerzel()); -- 2.39.2 From dcb106f0aa626a49e399934203dd1a73d608fec5 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 3 Aug 2024 17:09:58 +0200 Subject: [PATCH 3/4] Remove duplications --- .../velocitycore/commands/EventCommand.java | 24 +++++++----- .../commands/EventRescheduleCommand.java | 38 +++---------------- 2 files changed, 20 insertions(+), 42 deletions(-) diff --git a/src/de/steamwar/velocitycore/commands/EventCommand.java b/src/de/steamwar/velocitycore/commands/EventCommand.java index dee1a8d..b64343f 100644 --- a/src/de/steamwar/velocitycore/commands/EventCommand.java +++ b/src/de/steamwar/velocitycore/commands/EventCommand.java @@ -34,6 +34,7 @@ import java.sql.Timestamp; import java.time.Instant; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; public class EventCommand extends SWCommand { @@ -117,8 +118,7 @@ public class EventCommand extends SWCommand { } } - @ClassMapper(Team.class) - public TypeMapper eventTeams() { + protected static TypeMapper eventTeam(Function> teamMapper) { return new TypeMapper<>() { @Override public Team map(Chatter sender, PreviousArguments previousArguments, String s) { @@ -134,16 +134,22 @@ public class EventCommand extends SWCommand { Event currentEvent = Event.get(); for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) { if (fight.hasFinished()) continue; - if (fight.getStartTime().after(new Timestamp(System.currentTimeMillis()))) continue; - Team red = Team.get(fight.getTeamRed()); - teams.add(red.getTeamName()); - teams.add(red.getTeamKuerzel()); - Team blue = Team.get(fight.getTeamBlue()); - teams.add(blue.getTeamName()); - teams.add(blue.getTeamKuerzel()); + teamMapper.apply(fight).forEach(integer -> { + Team team = Team.get(integer); + teams.add(team.getTeamName()); + teams.add(team.getTeamKuerzel()); + }); } return teams; } }; } + + @ClassMapper(Team.class) + public TypeMapper eventTeams() { + return eventTeam(eventFight -> { + if (eventFight.getStartTime().after(new Timestamp(System.currentTimeMillis()))) return Collections.emptyList(); + return List.of(eventFight.getTeamBlue(), eventFight.getTeamRed()); + }); + } } diff --git a/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java b/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java index ad2a3da..5e1ad2e 100644 --- a/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java +++ b/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java @@ -19,7 +19,6 @@ package de.steamwar.velocitycore.commands; -import de.steamwar.command.PreviousArguments; import de.steamwar.command.SWCommand; import de.steamwar.command.TypeMapper; import de.steamwar.messages.Chatter; @@ -29,8 +28,9 @@ import de.steamwar.sql.Team; import de.steamwar.sql.UserPerm; import java.sql.Timestamp; -import java.util.*; -import java.util.function.Function; +import java.util.Date; +import java.util.List; +import java.util.ListIterator; public class EventRescheduleCommand extends SWCommand { @@ -65,41 +65,13 @@ public class EventRescheduleCommand extends SWCommand { sender.system("EVENTRESCHEDULE_NO_FIGHT"); } - private TypeMapper eventTeam(Function teamMapper) { - return new TypeMapper<>() { - @Override - public Team map(Chatter sender, PreviousArguments previousArguments, String s) { - if ("PUB".equalsIgnoreCase(s) || "public".equalsIgnoreCase(s)) { - return Team.get(0); - } - return Team.get(s); - } - - @Override - public Collection tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) { - Event currentEvent = Event.get(); - if(currentEvent == null){ - return null; - } - Set teams = new HashSet<>(); - for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) { - if (fight.hasFinished()) continue; - Team team = Team.get(teamMapper.apply(fight)); - teams.add(team.getTeamName()); - teams.add(team.getTeamKuerzel()); - } - return teams; - } - }; - } - @Mapper("BLUE_TEAM") public TypeMapper eventBlueTeams() { - return eventTeam(EventFight::getTeamBlue); + return EventCommand.eventTeam(eventFight -> List.of(eventFight.getTeamBlue())); } @Mapper("RED_TEAM") public TypeMapper eventRedTeams() { - return eventTeam(EventFight::getTeamRed); + return EventCommand.eventTeam(eventFight -> List.of(eventFight.getTeamRed())); } } -- 2.39.2 From f4b5be22ac77dcdfb506c8d840a06fb97ba9793b Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sun, 4 Aug 2024 13:52:45 +0200 Subject: [PATCH 4/4] Fix PR Stuff --- src/de/steamwar/velocitycore/commands/EventCommand.java | 2 +- .../velocitycore/commands/EventRescheduleCommand.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/velocitycore/commands/EventCommand.java b/src/de/steamwar/velocitycore/commands/EventCommand.java index b64343f..76888c9 100644 --- a/src/de/steamwar/velocitycore/commands/EventCommand.java +++ b/src/de/steamwar/velocitycore/commands/EventCommand.java @@ -145,7 +145,7 @@ public class EventCommand extends SWCommand { }; } - @ClassMapper(Team.class) + @ClassMapper(value = Team.class, local = true) public TypeMapper eventTeams() { return eventTeam(eventFight -> { if (eventFight.getStartTime().after(new Timestamp(System.currentTimeMillis()))) return Collections.emptyList(); diff --git a/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java b/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java index 5e1ad2e..61d5c8b 100644 --- a/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java +++ b/src/de/steamwar/velocitycore/commands/EventRescheduleCommand.java @@ -65,12 +65,12 @@ public class EventRescheduleCommand extends SWCommand { sender.system("EVENTRESCHEDULE_NO_FIGHT"); } - @Mapper("BLUE_TEAM") + @Mapper(value = "BLUE_TEAM", local = true) public TypeMapper eventBlueTeams() { return EventCommand.eventTeam(eventFight -> List.of(eventFight.getTeamBlue())); } - @Mapper("RED_TEAM") + @Mapper(value = "RED_TEAM", local = true) public TypeMapper eventRedTeams() { return EventCommand.eventTeam(eventFight -> List.of(eventFight.getTeamRed())); } -- 2.39.2