From ad6b6966e0412984a77837f1cbf25816773482be Mon Sep 17 00:00:00 2001 From: Xander Date: Sat, 21 Sep 2024 19:01:18 +0200 Subject: [PATCH] better messaging --- .../gent/zeus/mc13dtl/TeamScoreBoard.java | 2 +- .../java/gent/zeus/mc13dtl/events/Event.java | 5 +- .../zeus/mc13dtl/group/SurvivalRunner.java | 47 +++++++++++++------ 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/main/java/gent/zeus/mc13dtl/TeamScoreBoard.java b/src/main/java/gent/zeus/mc13dtl/TeamScoreBoard.java index b327391..db1b46d 100644 --- a/src/main/java/gent/zeus/mc13dtl/TeamScoreBoard.java +++ b/src/main/java/gent/zeus/mc13dtl/TeamScoreBoard.java @@ -28,7 +28,7 @@ public class TeamScoreBoard { } daysAliveObjective = scoreboard.getObjective("days-alive"); if (daysAliveObjective == null) { - daysAliveObjective = scoreboard.registerNewObjective("days-alive", Criteria.DUMMY, Component.text("Days alive")); + daysAliveObjective = scoreboard.registerNewObjective("days-alive", Criteria.DUMMY, Component.text("Team Days alive")); } objective.setDisplaySlot(DisplaySlot.SIDEBAR); } diff --git a/src/main/java/gent/zeus/mc13dtl/events/Event.java b/src/main/java/gent/zeus/mc13dtl/events/Event.java index bc20e3b..164c8cd 100644 --- a/src/main/java/gent/zeus/mc13dtl/events/Event.java +++ b/src/main/java/gent/zeus/mc13dtl/events/Event.java @@ -3,6 +3,8 @@ package gent.zeus.mc13dtl.events; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; +import org.bukkit.Bukkit; +import org.bukkit.Server; import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; @@ -48,8 +50,9 @@ public abstract class Event implements Listener, Runnable { } protected void eventSuccess() { - MC13DTL.board.sendMessageToTeam(team, Component.text("Congratulations! You survived this event").color(NamedTextColor.GREEN)); MC13DTL.board.addScore(team, scoreOnSuccess); + MC13DTL.instance.getServer().broadcast(Component.text("Team " + team.getName()).color(team.color()).append( + Component.text(" successfully completed and survived the event!").color(NamedTextColor.WHITE))); eventFinished(); } diff --git a/src/main/java/gent/zeus/mc13dtl/group/SurvivalRunner.java b/src/main/java/gent/zeus/mc13dtl/group/SurvivalRunner.java index 0abf102..ed08f12 100644 --- a/src/main/java/gent/zeus/mc13dtl/group/SurvivalRunner.java +++ b/src/main/java/gent/zeus/mc13dtl/group/SurvivalRunner.java @@ -1,5 +1,8 @@ package gent.zeus.mc13dtl.group; +import com.mojang.datafixers.util.Pair; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; import org.bukkit.World; @@ -8,20 +11,36 @@ import org.bukkit.scoreboard.Team; import gent.zeus.mc13dtl.MC13DTL; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + public class SurvivalRunner implements Runnable { - @Override - public void run() { - World world = Bukkit.getWorld("world"); - NamespacedKey eventKey = new NamespacedKey(MC13DTL.instance, "last-survival-check-day"); - long lastRunDay = world.getPersistentDataContainer().get(eventKey, PersistentDataType.LONG); - long day = Bukkit.getWorld("world").getFullTime() / 24000; - if (day > lastRunDay) { - for (Team team : MC13DTL.board.getTeams().stream().toList()) { - int currentDays = MC13DTL.board.getDaysAlive(team) + 1; - MC13DTL.board.setDaysAlive(team, currentDays); - MC13DTL.board.addScore(team, (int) Math.pow(2, currentDays)); - } + @Override + public void run() { + World world = Bukkit.getWorld("world"); + NamespacedKey eventKey = new NamespacedKey(MC13DTL.instance, "last-survival-check-day"); + long lastRunDay = world.getPersistentDataContainer().get(eventKey, PersistentDataType.LONG); + long day = Bukkit.getWorld("world").getFullTime() / 24000; + if (day > lastRunDay) { + List> grantedScores = new ArrayList<>(); + for (Team team : MC13DTL.board.getTeams().stream().toList()) { + int currentDays = MC13DTL.board.getDaysAlive(team) + 1; + int score = (int) Math.pow(2, currentDays); + MC13DTL.board.setDaysAlive(team, currentDays); + MC13DTL.board.addScore(team, score); + grantedScores.add(new Pair<>(team, score)); + } + + grantedScores.sort(Comparator.comparing(p -> -p.getSecond())); + + for (Pair p : grantedScores) { + MC13DTL.instance.getServer().broadcast( + Component.text("Team " + p.getFirst().getName()).color(p.getFirst().color()).append( + Component.text(" survived " + MC13DTL.board.getDaysAlive(p.getFirst()) + " days and was given " + p.getSecond() + " points").color(NamedTextColor.WHITE) + )); + } + } + world.getPersistentDataContainer().set(eventKey, PersistentDataType.LONG, day); } - world.getPersistentDataContainer().set(eventKey, PersistentDataType.LONG, day); - } }