Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,14 @@ public DuelManager(final DuelsPlugin plugin) {
}

public void handleMatchEnd(DuelMatch match, ArenaImpl arena, Player loser, Location deadLocation, Player winner) {
// Safety check: Don't process if match is already finished (prevents race condition where multiple death events trigger concurrent match ending)
if (match.isFinished()) {
return;
}

// Mark match as finished immediately to prevent re-entry from concurrent death events
match.setFinished();

DuelsPlugin.getMorePaperLib().scheduling().regionSpecificScheduler(arena.first().getLocation()).runDelayed(() -> {
if (arena.size() == 0) {
match.getAllPlayers().forEach(matchPlayer -> {
Expand Down Expand Up @@ -208,6 +216,14 @@ public void handleMatchEnd(DuelMatch match, ArenaImpl arena, Player loser, Locat
}

public void handleTeamMatchEnd(TeamDuelMatch match, ArenaImpl arena, Location deadLocation, TeamDuelMatch.Team winningTeam) {
// Safety check: Don't process if team match is already finished (prevents race condition where multiple team member deaths trigger concurrent match ending)
if (match.isFinished()) {
return;
}

// Mark match as finished immediately to prevent re-entry from concurrent team member deaths
match.setFinished();

DuelsPlugin.getMorePaperLib().scheduling().regionSpecificScheduler(deadLocation).runDelayed(() -> {
if (config.isSpawnFirework()) {
DuelsPlugin.getMorePaperLib().scheduling().regionSpecificScheduler(deadLocation).run(() -> {
Expand Down