diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index 7d811bf..f4064d0 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -9,11 +9,6 @@ import de.fanta.challenges.utils.Config; import de.iani.cubesideutils.HastebinUtil; import de.iani.cubesideutils.StringUtil; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.scoreboard.Team; - -import javax.annotation.Nullable; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; @@ -26,6 +21,10 @@ import java.util.function.IntPredicate; import java.util.logging.Level; import java.util.stream.Collectors; +import javax.annotation.Nullable; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.scoreboard.Team; public class ScoreManager { @@ -43,7 +42,6 @@ this.position = 1; } - public Scorable getScorable() { return scorable; } @@ -81,7 +79,6 @@ private final Map scores; private final List positions; - public ScoreManager(Challenges plugin) { this.plugin = plugin; this.scores = new HashMap<>(); @@ -143,7 +140,9 @@ for (; i < positions.size(); i++) { curr = positions.get(i); int correctPosition = (curr.getScore() == lastScore) ? lastPosition : lastPosition + 1; - if (curr.getPostition() == correctPosition && i > Math.max(startingIndex, endIndex)) break; + if (curr.getPostition() == correctPosition && i > Math.max(startingIndex, endIndex)) { + break; + } curr.setPosition(correctPosition); lastPosition = correctPosition; @@ -167,8 +166,9 @@ } public Set getByPositon(int position) { - if (positions.isEmpty() || positions.get(positions.size() - 1).getPostition() < position) + if (positions.isEmpty() || positions.get(positions.size() - 1).getPostition() < position) { return Collections.emptySet(); + } int start = position - 1; int end = positions.size(); @@ -283,21 +283,26 @@ return positions; } - public HashMap getTournamentScores(List scoreData) { + public HashMap getTournamentScores(List scoreDataList) { HashMap tournamentScores = new HashMap<>(); - int length = scoreData.size(); - int threePoints = Math.round((length - 3) / 3.0f + 3); - int twoPoints = Math.round((length - 3) / 3.0f * 2 + 3); - for (int i = 0; i < length; i++) { - Scorable scorable = scoreData.get(i).getScorable(); - if (i < 3) { - tournamentScores.put(scorable, 6 - i); - } else if (i < threePoints) { - tournamentScores.put(scorable, 3); - } else if (i < twoPoints) { - tournamentScores.put(scorable, 2); - } else { - tournamentScores.put(scorable, 1); + int length = scoreDataList.size(); + if (length > 0) { + int lastPosition = scoreDataList.get(length - 1).getPostition() - 1; + int threePoints = Math.round((lastPosition - 3) / 3.0f + 3); + int twoPoints = Math.round((lastPosition - 3) / 3.0f * 2 + 3); + for (int i = 0; i < length; i++) { + ScoreData scoreData = scoreDataList.get(i); + Scorable scorable = scoreData.getScorable(); + int pos = scoreData.getPostition() - 1; + if (pos < 3) { + tournamentScores.put(scorable, 6 - pos); + } else if (pos < threePoints) { + tournamentScores.put(scorable, 3); + } else if (pos < twoPoints) { + tournamentScores.put(scorable, 2); + } else { + tournamentScores.put(scorable, 1); + } } } return tournamentScores;