diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/competition/CompetitionGoal.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/competition/CompetitionGoal.java index 87efc110..34b54d85 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/competition/CompetitionGoal.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/competition/CompetitionGoal.java @@ -33,17 +33,17 @@ import java.util.function.Supplier; public final class CompetitionGoal { public static final CompetitionGoal CATCH_AMOUNT = new CompetitionGoal( - "catch_amount", + "catch_amount", false, ((rankingProvider, player, score) -> rankingProvider.refreshData(player, 1)), () -> Optional.ofNullable(TranslationManager.miniMessageTranslation(MessageConstants.GOAL_CATCH_AMOUNT.build().key())).orElse("catch_amount") ); public static final CompetitionGoal TOTAL_SCORE = new CompetitionGoal( - "total_score", + "total_score", false, (RankingProvider::refreshData), () -> Optional.ofNullable(TranslationManager.miniMessageTranslation(MessageConstants.GOAL_TOTAL_SCORE.build().key())).orElse("total_score") ); public static final CompetitionGoal MAX_SIZE = new CompetitionGoal( - "max_size", + "max_size", false, ((rankingProvider, player, score) -> { if (rankingProvider.getPlayerScore(player) < score) { rankingProvider.setData(player, score); @@ -52,21 +52,21 @@ public final class CompetitionGoal { () -> Optional.ofNullable(TranslationManager.miniMessageTranslation(MessageConstants.GOAL_MAX_SIZE.build().key())).orElse("max_size") ); public static final CompetitionGoal MIN_SIZE = new CompetitionGoal( - "min_size", + "min_size", true, ((rankingProvider, player, score) -> { - if (rankingProvider.getPlayerScore(player) > score) { - rankingProvider.setData(player, score); + if (-rankingProvider.getPlayerScore(player) > score) { + rankingProvider.setData(player, -score); } }), () -> Optional.ofNullable(TranslationManager.miniMessageTranslation(MessageConstants.GOAL_MIN_SIZE.build().key())).orElse("min_size") ); public static final CompetitionGoal TOTAL_SIZE = new CompetitionGoal( - "total_size", + "total_size", false, (RankingProvider::refreshData), () -> Optional.ofNullable(TranslationManager.miniMessageTranslation(MessageConstants.GOAL_TOTAL_SIZE.build().key())).orElse("total_size") ); public static final CompetitionGoal RANDOM = new CompetitionGoal( - "random", + "random", false, (rankingProvider, player, score) -> {}, () -> "random" ); @@ -107,9 +107,11 @@ public final class CompetitionGoal { private final String key; private final TriConsumer scoreConsumer; private final Supplier nameSupplier; + private final boolean reversed; - private CompetitionGoal(String key, TriConsumer scoreConsumer, Supplier nameSupplier) { + private CompetitionGoal(String key, boolean reversed, TriConsumer scoreConsumer, Supplier nameSupplier) { this.key = key; + this.reversed = reversed; this.scoreConsumer = scoreConsumer; this.nameSupplier = nameSupplier; } @@ -123,6 +125,15 @@ public final class CompetitionGoal { return key; } + /** + * Is the score reversed + * + * @return reversed or not + */ + public boolean isReversed() { + return reversed; + } + /** * Refreshes the score for the player in the ranking provider. * diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/competition/Competition.java b/core/src/main/java/net/momirealms/customfishing/bukkit/competition/Competition.java index b3daf267..657233fa 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/competition/Competition.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/competition/Competition.java @@ -137,7 +137,7 @@ public class Competition implements FishingCompetition { while (iterator.hasNext()) { Pair competitionPlayer = iterator.next(); this.publicContext.arg(ContextKeys.of(i + "_player", String.class), competitionPlayer.left()); - this.publicContext.arg(ContextKeys.of(i + "_score", String.class), String.format("%.2f", competitionPlayer.right())); + this.publicContext.arg(ContextKeys.of(i + "_score", String.class), String.format("%.2f", goal.isReversed() ? -competitionPlayer.right() : competitionPlayer.right())); if (i < rewardsMap.size()) { Player player = Bukkit.getPlayer(competitionPlayer.left()); if (player != null) { @@ -187,7 +187,7 @@ public class Competition implements FishingCompetition { Optional player = Optional.ofNullable(this.rankingProvider.getPlayerAt(i)); if (player.isPresent()) { this.publicContext.arg(ContextKeys.of(i + "_player", String.class), player.get()); - this.publicContext.arg(ContextKeys.of(i + "_score", String.class), String.format("%.2f", this.rankingProvider.getScoreAt(i))); + this.publicContext.arg(ContextKeys.of(i + "_score", String.class), String.format("%.2f", goal.isReversed() ? -this.rankingProvider.getScoreAt(i) : this.rankingProvider.getScoreAt(i))); } else { this.publicContext.arg(ContextKeys.of(i + "_player", String.class), TranslationManager.miniMessageTranslation(MessageConstants.COMPETITION_NO_PLAYER.build().key())); this.publicContext.arg(ContextKeys.of(i + "_score", String.class), TranslationManager.miniMessageTranslation(MessageConstants.COMPETITION_NO_SCORE.build().key())); diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/competition/actionbar/ActionBarSender.java b/core/src/main/java/net/momirealms/customfishing/bukkit/competition/actionbar/ActionBarSender.java index d08c8a5f..2df6ca3a 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/competition/actionbar/ActionBarSender.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/competition/actionbar/ActionBarSender.java @@ -65,8 +65,8 @@ public class ActionBarSender { @SuppressWarnings("DuplicatedCode") private void updatePrivatePlaceholders() { double score = competition.getRanking().getPlayerScore(player.getName()); - this.privateContext.arg(ContextKeys.SCORE_FORMATTED, String.format("%.2f", score)); - this.privateContext.arg(ContextKeys.SCORE, score); + this.privateContext.arg(ContextKeys.SCORE_FORMATTED, String.format("%.2f", competition.getGoal().isReversed() ? -score : score)); + this.privateContext.arg(ContextKeys.SCORE, competition.getGoal().isReversed() ? -score : score); int rank = competition.getRanking().getPlayerRank(player.getName()); this.privateContext.arg(ContextKeys.RANK, rank != -1 ? String.valueOf(rank) : TranslationManager.miniMessageTranslation(MessageConstants.COMPETITION_NO_RANK.build().key())); this.privateContext.combine(competition.getPublicContext()); diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/competition/bossbar/BossBarSender.java b/core/src/main/java/net/momirealms/customfishing/bukkit/competition/bossbar/BossBarSender.java index 0fdd44a9..bca326da 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/competition/bossbar/BossBarSender.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/competition/bossbar/BossBarSender.java @@ -75,8 +75,8 @@ public class BossBarSender { @SuppressWarnings("DuplicatedCode") private void updatePrivatePlaceholders() { double score = competition.getRanking().getPlayerScore(player.getName()); - this.privateContext.arg(ContextKeys.SCORE_FORMATTED, String.format("%.2f", score)); - this.privateContext.arg(ContextKeys.SCORE, score); + this.privateContext.arg(ContextKeys.SCORE_FORMATTED, String.format("%.2f", competition.getGoal().isReversed() ? -score : score)); + this.privateContext.arg(ContextKeys.SCORE, competition.getGoal().isReversed() ? -score : score); int rank = competition.getRanking().getPlayerRank(player.getName()); this.privateContext.arg(ContextKeys.RANK, rank != -1 ? String.valueOf(rank) : TranslationManager.miniMessageTranslation(MessageConstants.COMPETITION_NO_RANK.build().key())); this.privateContext.combine(competition.getPublicContext()); diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/fishing/BukkitFishingManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/fishing/BukkitFishingManager.java index ac7389ad..5f2e230a 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/fishing/BukkitFishingManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/fishing/BukkitFishingManager.java @@ -249,6 +249,11 @@ public class BukkitFishingManager implements FishingManager, Listener { PersistentDataType.STRING ) != null) { event.setCancelled(true); + Optional gamingPlayer = hook.get().getGamingPlayer(); + if (gamingPlayer.isPresent()) { + ((AbstractGamingPlayer) gamingPlayer.get()).internalRightClick(); + return; + } hook.get().onReelIn(); return; }