Refactor flag capture and turn-in notifications.

Extracted and separated notification logic for flag capture and turn-in events into distinct methods to improve clarity and maintainability. Updated messaging to better align with game events and streamlined title displays for players.
This commit is contained in:
Teriuihi 2025-02-11 22:12:31 +01:00
parent a3c22cf074
commit 237cae37ca

View File

@ -81,10 +81,7 @@ public class Flag implements Runnable {
//TODO add de-buffs and enable buffs for others? //TODO add de-buffs and enable buffs for others?
player.getInventory().setItem(EquipmentSlot.HEAD, flagItem); player.getInventory().setItem(EquipmentSlot.HEAD, flagItem);
Bukkit.getScheduler().runTask(main, () -> flagLocation.getBlock().setType(Material.AIR)); Bukkit.getScheduler().runTask(main, () -> flagLocation.getBlock().setType(Material.AIR));
Bukkit.broadcast(MiniMessage.miniMessage().deserialize("<green><player> from <team> captured the flag!", TagResolver.resolver( notifyAboutCapture();
Placeholder.component("player", player.displayName()),
Placeholder.component("team", teamPlayer.getTeam().getName())
)));
flagCarrier = player; flagCarrier = player;
resetFlag(); resetFlag();
} }
@ -148,6 +145,23 @@ public class Flag implements Runnable {
} }
} }
private void notifyAboutCapture() {
Bukkit.broadcast(miniMessage.deserialize("<player> is carrying the flag for <team>!",
Placeholder.component("player", flagCarrier.displayName()),
Placeholder.component("team", winningTeam.getName())));
Title capturingTeamTitle = Title.title(miniMessage.deserialize("<green><team> obtained the flag!</green>",
Placeholder.component("team", winningTeam.getName())),
miniMessage.deserialize("<green>protect <player> while they bring it to your base.</green>",
Placeholder.component("player", flagCarrier.displayName())));
Title huntingTeamTitle = Title.title(miniMessage.deserialize("<red><team> obtained the flag!</red>",
Placeholder.component("team", winningTeam.getName())),
miniMessage.deserialize("<red>kill <player> before they bring it to their base.</red>",
Placeholder.component("player", flagCarrier.displayName())));
Bukkit.getOnlinePlayers().forEach(player ->
gameManager.getTeam(player.getUniqueId()).ifPresent(team ->
player.showTitle(team.getId() == winningTeam.getId() ? capturingTeamTitle : huntingTeamTitle)));
}
private void spawnParticlesOnSquareBorder(Location center, double size) { private void spawnParticlesOnSquareBorder(Location center, double size) {
double step = 0.2; double step = 0.2;
World world = center.getWorld(); World world = center.getWorld();
@ -191,7 +205,7 @@ public class Flag implements Runnable {
spawnParticlesOnSquareBorder(winningTeam.getFlagTurnInLocation(), GameConfig.FLAG.TURN_IN_RADIUS); spawnParticlesOnSquareBorder(winningTeam.getFlagTurnInLocation(), GameConfig.FLAG.TURN_IN_RADIUS);
return; return;
} }
notifyAboutCapture(); notifyAboutTurnIn();
spawnFlag(); spawnFlag();
wins.merge(winningTeam.getId(), 1, Integer::sum); wins.merge(winningTeam.getId(), 1, Integer::sum);
winningTeam = null; winningTeam = null;
@ -206,21 +220,15 @@ public class Flag implements Runnable {
resetFlagCarrier(); resetFlagCarrier();
} }
private void notifyAboutCapture() { private void notifyAboutTurnIn() {
Bukkit.broadcast(miniMessage.deserialize("<player> captured the flag for <team>!", Bukkit.broadcast(miniMessage.deserialize("<player> captured the flag for <team>!",
Placeholder.component("player", flagCarrier.displayName()), Placeholder.component("player", flagCarrier.displayName()),
Placeholder.component("team", winningTeam.getName()))); Placeholder.component("team", winningTeam.getName())));
Title capturingTeamTitle = Title.title(miniMessage.deserialize("<green><team> captured the flag!</green>", Title title = Title.title(miniMessage.deserialize("<green><player> captured the flag for team <team>!</green>",
Placeholder.component("team", winningTeam.getName())), Placeholder.component("team", winningTeam.getName())),
miniMessage.deserialize("<green>protect <player> while they bring it to your base.</green>", miniMessage.deserialize("<green>protect <player> while they bring it to your base.</green>",
Placeholder.component("player", flagCarrier.displayName()))); Placeholder.component("player", flagCarrier.displayName())));
Title huntingTeamTitle = Title.title(miniMessage.deserialize("<red><team> captured the flag!</red>", Bukkit.getOnlinePlayers().forEach(player -> player.showTitle(title));
Placeholder.component("team", winningTeam.getName())),
miniMessage.deserialize("<red>kill <player> before they bring it to their base.</red>",
Placeholder.component("player", flagCarrier.displayName())));
Bukkit.getOnlinePlayers().forEach(player ->
gameManager.getTeam(player.getUniqueId()).ifPresent(team ->
player.showTitle(team.getId() == winningTeam.getId() ? capturingTeamTitle : huntingTeamTitle)));
} }
private Optional<Team> winnerExists() { private Optional<Team> winnerExists() {