diff --git a/src/main/java/de/fanta/challenges/commands/event/EventSaveScoresCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventSaveScoresCommand.java index e73c1ff..625505d 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventSaveScoresCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventSaveScoresCommand.java @@ -28,22 +28,20 @@ if (sender.hasPermission("Challenges.editor.override")) { if (args.hasNext()) { boolean publishToPlayerStats = Boolean.parseBoolean(args.getNext()); + int minScore = args.getNext(0); if (publishToPlayerStats) { - HashMap scoreList = plugin.getScoreManager().getTournamentScores(plugin.getScoreManager().getPositions()); + HashMap scoreList = plugin.getScoreManager().getTournamentScores(plugin.getScoreManager().getPositions(), minScore); for (Scorable scorable : scoreList.keySet()) { - int score = scoreList.get(scorable); - if (score >= args.getNext(0)) { - CachedPlayer cp = plugin.getPlayerUUIDCache().getPlayerFromNameOrUUID(scorable.getName()); - plugin.getStatistics().increaseChallengeWeekStats(cp.getUUID(), score); - } + CachedPlayer cp = plugin.getPlayerUUIDCache().getPlayerFromNameOrUUID(scorable.getName()); + plugin.getStatistics().increaseChallengeWeekStats(cp.getUUID(), scoreList.get(scorable)); } } if (sender instanceof Player player) { - plugin.getScoreManager().saveScores(player); + plugin.getScoreManager().saveScores(player, minScore); } else { - plugin.getScoreManager().saveScores(null); + plugin.getScoreManager().saveScores(null, minScore); } } else { ChatUtil.sendErrorMessage(sender, "/challenge saveeventscores [Score]"); diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index 2e3d2d7..e751207 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -202,6 +202,10 @@ } public void saveScores(@Nullable Player player) { + saveScores(player, 0); + } + + public void saveScores(@Nullable Player player, int minScore) { StringBuilder sb = new StringBuilder(); String ownerName = player != null ? player.getName() : "Console"; SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy - HH:mm:ss"); @@ -239,7 +243,7 @@ } } else { if (Config.getBoolean("event.tournament")) { - HashMap tournamentScores = getTournamentScores(new ArrayList<>(positions)); + HashMap tournamentScores = getTournamentScores(new ArrayList<>(positions), minScore); for (ScoreData entry : positions) { sb.append(entry.getPostition()).append(". ").append(entry.getScorable().getName()).append(" ").append(entry.getScore()).append(" (").append(tournamentScores.get(entry.getScorable())).append(")").append("\n"); } @@ -284,15 +288,29 @@ return positions; } + public HashMap getTournamentScores(List scoreDataList) { + return getTournamentScores(scoreDataList, 0); + } + + public HashMap getTournamentScores(List scoreDataList, int minScore) { HashMap tournamentScores = new HashMap<>(); - int length = scoreDataList.size(); + List newScoreDataList = new ArrayList<>(); + + for (ScoreData scoreData : scoreDataList) { + int score = scoreData.getScore(); + if (score >= minScore) { + newScoreDataList.add(scoreData); + } + } + + + int length = newScoreDataList.size(); if (length > 0) { - int lastPostition = scoreDataList.get(length - 1).getPostition() - 1; + int lastPostition = newScoreDataList.get(length - 1).getPostition() - 1; int threePoints = Math.round((lastPostition - 3) / 3.0f + 3); int twoPoints = Math.round((lastPostition - 3) / 3.0f * 2 + 3); - for (int i = 0; i < length; i++) { - ScoreData scoreData = scoreDataList.get(i); + for (ScoreData scoreData : newScoreDataList) { Scorable scorable = scoreData.getScorable(); int pos = scoreData.getPostition() - 1; if (pos < 3) {