Skip to content

Commit fc2167e

Browse files
Pablete1234Pugzy
andauthored
Fix team swapping or blitz death joining obs in pugs (#42)
Signed-off-by: Pablo Herrera <[email protected]> Co-authored-by: Pugzy <[email protected]>
1 parent d85a53b commit fc2167e

File tree

4 files changed

+20
-7
lines changed

4 files changed

+20
-7
lines changed

src/main/java/rip/bolt/ingame/managers/GameManager.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.jetbrains.annotations.Nullable;
99
import rip.bolt.ingame.Ingame;
1010
import rip.bolt.ingame.api.definitions.BoltMatch;
11+
import rip.bolt.ingame.api.definitions.Series;
1112
import rip.bolt.ingame.pugs.PugManager;
1213
import rip.bolt.ingame.ranked.RankedManager;
1314

@@ -50,7 +51,11 @@ public void enable(MatchManager manager) {
5051
Bukkit.getPluginManager().registerEvents(this, Ingame.get());
5152
}
5253

53-
public abstract void setup(BoltMatch match);
54+
public void setup(@Nullable BoltMatch match) {
55+
boolean allowSpectators =
56+
(match != null && match.getSeries().getService() != Series.Service.TM);
57+
EventsPlugin.get().getConfig().set("allow-spectators", allowSpectators);
58+
}
5459

5560
/** Called when the game manager is removed. */
5661
public void disable() {
@@ -67,6 +72,7 @@ public void enable(MatchManager manager) {}
6772

6873
@Override
6974
public void setup(BoltMatch match) {
75+
super.setup(match);
7076
EventsPlugin.get().getTeamManager().clear();
7177
EventsPlugin.get().getTournamentManager().deleteTournament();
7278
}

src/main/java/rip/bolt/ingame/pugs/PugListener.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import rip.bolt.ingame.events.BoltMatchStatusChangeEvent;
2222
import tc.oc.pgm.api.match.event.MatchLoadEvent;
2323
import tc.oc.pgm.api.party.Competitor;
24+
import tc.oc.pgm.api.party.Party;
2425
import tc.oc.pgm.api.party.event.PartyRenameEvent;
2526
import tc.oc.pgm.api.player.event.PlayerVanishEvent;
2627
import tc.oc.pgm.events.PlayerParticipationStartEvent;
@@ -124,15 +125,19 @@ public void onParticipate(PlayerParticipationStartEvent event) {
124125

125126
@EventHandler(priority = EventPriority.HIGHEST)
126127
public void onLeaveParticipate(PlayerParticipationStopEvent event) {
127-
// Can't ignore not-cancelled, as blitz is not cancelled but still should move to obs on ws.
128-
// However, events still sets a cancel reason which is convenient.
128+
if (!event.isCancelled()) return;
129129

130130
// Events should expose this constant. It'll still be dirty, but will survive updates.
131-
if (isMessage(event.getCancelReason(), "You may not leave in a tournament setting!")) {
132-
pugManager.write(PugCommand.joinObs(event.getPlayer().getBukkit()));
131+
if (!isMessage(event.getCancelReason(), "You may not leave in a tournament setting!")) return;
132+
event.cancel(Component.empty());
133133

134-
// If event was cancelled, clear the component
135-
if (event.isCancelled()) event.cancel(Component.empty());
134+
Party nextParty = event.getNextParty();
135+
136+
if (nextParty instanceof Competitor) {
137+
PugTeam team = pugManager.findPugTeam(nextParty);
138+
if (team != null) pugManager.write(PugCommand.joinTeam(event.getPlayer().getBukkit(), team));
139+
} else if (nextParty != null) {
140+
pugManager.write(PugCommand.joinObs(event.getPlayer().getBukkit()));
136141
}
137142
}
138143

src/main/java/rip/bolt/ingame/pugs/PugManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public void enable(MatchManager manager) {
8383

8484
@Override
8585
public void setup(BoltMatch match) {
86+
super.setup(match);
8687
if (this.pugLobby != null) teamManager.setupTeams(match);
8788
}
8889

src/main/java/rip/bolt/ingame/ranked/RankedManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public void enable(MatchManager manager) {
4747

4848
@Override
4949
public void setup(BoltMatch match) {
50+
super.setup(match);
5051
EventsPlugin.get().getTeamManager().clear();
5152
for (TournamentTeam team : match.getTeams()) EventsPlugin.get().getTeamManager().addTeam(team);
5253
playerWatcher.addPlayers(

0 commit comments

Comments
 (0)