Skip to content

Commit 3c19186

Browse files
Add winner & loser placeholders to game ended scoreboard (#150)
* Fix NPE when no inventory in hotbar listener * Add winner & loser placeholders to game ended scoreboard
1 parent 58700e6 commit 3c19186

File tree

6 files changed

+43
-2
lines changed

6 files changed

+43
-2
lines changed

API/src/main/java/dev/lrxh/api/match/IMatch.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,8 @@ public interface IMatch {
3131
IParticipant getParticipant(Player player);
3232

3333
void broadcast(String message);
34+
35+
String getWinnerName();
36+
37+
String getLoserName();
3438
}

Plugin/src/main/java/dev/lrxh/neptune/configs/impl/ScoreboardLocale.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ public enum ScoreboardLocale implements IDataAccessor {
184184
"&7&m--------------------",
185185
"&fMatch Ended",
186186
" ",
187+
"&aWinner: &f<winner>",
188+
"&cLoser: &f<loser>",
189+
" ",
187190
"&bserver.net",
188191
"&7&m--------------------"),
189192
PARTY_LOBBY("SCOREBOARDS.PARTY.LOBBY", DataType.STRING_LIST,

Plugin/src/main/java/dev/lrxh/neptune/game/match/Match.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,12 @@ public List<String> getScoreboard(UUID playerUUID) {
239239
}
240240
return PlaceholderUtil.format(new ArrayList<>(ScoreboardLocale.IN_GAME.getStringList()), player);
241241
case ENDING:
242-
return PlaceholderUtil.format(new ArrayList<>(ScoreboardLocale.IN_GAME_ENDED.getStringList()),
242+
return PlaceholderUtil.format(ScoreboardLocale.IN_GAME_ENDED.getStringList()
243+
.stream()
244+
.map(str -> str
245+
.replaceAll("<winner>", getWinnerName())
246+
.replaceAll("<loser>", getLoserName()))
247+
.toList(),
243248
player);
244249
default:
245250
break;
@@ -436,6 +441,10 @@ public void teleportPlayerToPosition(Participant participant) {
436441
player.teleport(location);
437442
}
438443

444+
public abstract String getWinnerName();
445+
446+
public abstract String getLoserName();
447+
439448
public abstract void win(Participant winner);
440449

441450
public abstract void end(Participant loser);
@@ -456,9 +465,11 @@ public void incrementKills(Participant participant) {
456465
KitData kitData = participant.getProfile().getGameData().get(getKit());
457466
kitData.setKills(kitData.getKills() + 1);
458467
}
468+
459469
public void incrementDeaths(Participant participant) {
460470
KitData kitData = participant.getProfile().getGameData().get(getKit());
461471
kitData.setDeaths(kitData.getDeaths() + 1);
462-
if (participant.getLastAttacker() != null) incrementKills(participant.getLastAttacker());
472+
if (participant.getLastAttacker() != null)
473+
incrementKills(participant.getLastAttacker());
463474
}
464475
}

Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/ffa/FfaFightMatch.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,14 @@ public void onDeath(Participant participant) {
9898
end(participant);
9999
}
100100

101+
public String getWinnerName() {
102+
return winner.getName();
103+
}
104+
105+
public String getLoserName() {
106+
return participants.stream().filter(p -> (p != winner)).map(p -> p.getNameColored()).toList().toString();
107+
}
108+
101109
private boolean isLastPlayerStanding() {
102110
return getParticipants().size() - deadParticipants.size() == 1;
103111
}

Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/solo/SoloFightMatch.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,4 +311,11 @@ public Participant getRedParticipant() {
311311
public Participant getBlueParticipant() {
312312
return participantA.getColor().equals(ParticipantColor.BLUE) ? participantA : participantB;
313313
}
314+
315+
public String getWinnerName() {
316+
return getWinner().getName();
317+
}
318+
public String getLoserName() {
319+
return getLoser().getName();
320+
}
314321
}

Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/team/TeamFightMatch.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,12 @@ public void startMatch() {
184184
playSound(Sound.ENTITY_FIREWORK_ROCKET_BLAST);
185185
sendTitle(CC.color(MessagesLocale.MATCH_START_TITLE_FOOTER.getString()), CC.color(MessagesLocale.MATCH_START_TITLE_FOOTER.getString()), 10);
186186
}
187+
188+
public String getWinnerName() {
189+
return getWinner().getTeamNames();
190+
}
191+
192+
public String getLoserName() {
193+
return getLoser().getTeamNames();
194+
}
187195
}

0 commit comments

Comments
 (0)