Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.tinchx.factions.scoreboard;
- import com.doctordark.utils.DurationFormatter;
- import com.google.common.collect.Ordering;
- import lombok.Getter;
- import me.tinchx.factions.HCF;
- import me.tinchx.factions.classes.PvpClass;
- import me.tinchx.factions.classes.archer.ArcherClass;
- import me.tinchx.factions.classes.archer.ArcherMark;
- import me.tinchx.factions.classes.bard.BardClass;
- import me.tinchx.factions.classes.chain.GhostClass;
- import me.tinchx.factions.configuration.ConfigurationService;
- import me.tinchx.factions.eventgame.EventTimer;
- import me.tinchx.factions.eventgame.tracker.ConquestTracker;
- import me.tinchx.factions.factions.type.CitadelFaction;
- import me.tinchx.factions.factions.type.ConquestFaction;
- import me.tinchx.factions.factions.type.KothFaction;
- import me.tinchx.factions.factions.type.PlayerFaction;
- import me.tinchx.factions.listener.DateTimeFormats;
- import me.tinchx.factions.minigames.Game;
- import me.tinchx.factions.minigames.GameHandler;
- import me.tinchx.factions.minigames.GamePlayerState;
- import me.tinchx.factions.timer.GlobalTimer;
- import me.tinchx.factions.timer.PlayerTimer;
- import me.tinchx.factions.timer.Timer;
- import me.tinchx.factions.timer.TimerManager;
- import me.tinchx.factions.timer.type.SOTWTimer;
- import me.tinchx.factions.user.Profile;
- import net.xlduo.axis.AxisAPI;
- import net.xlduo.axis.AxisConfiguration;
- import net.xlduo.axis.board.BoardAdapter;
- import net.xlduo.axis.board.BoardStyle;
- import net.xlduo.axis.utilities.AxisUtils;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Player;
- import java.util.*;
- public class HCFBoard implements BoardAdapter {
- private HCF plugin = HCF.getPlugin();
- @Getter
- private static String BARS = "&7&m-------------------";
- @Override
- public String getTitle(Player player) {
- if (AxisAPI.getProfile(player).isStaffMode() && player.hasPermission(AxisUtils.STAFF_PERMISSION)) {
- return "&6&lMod Mode &3(" + AxisUtils.getOnlineStaff().size() + ')';
- }
- return ConfigurationService.SCOREBOARD_TITLE.replace("|", "┃");
- }
- @Override
- public List<String> getLines(Player player) {
- List<String> lines = new ArrayList<>();
- TimerManager timerManager = plugin.getTimerManager();
- EventTimer eventTimer = timerManager.getEventTimer();
- if (AxisAPI.getProfile(player).isStaffMode() && player.hasPermission(AxisUtils.STAFF_PERMISSION)) {
- lines.add(BARS);
- lines.add("online players: &b" + Bukkit.getOnlinePlayers().size());
- int i = (int) Bukkit.getOnlinePlayers().stream().filter(o -> AxisAPI.getProfile(o).isFrozen()).count();
- lines.add("players frozen: &b" + i);
- lines.add((AxisAPI.getProfile(player).isVanished() ? "&cur" : "&aur not") + " vanished");
- lines.addAll(getScoreboardEvents(player, eventTimer, false));
- lines.add(BARS);
- return lines;
- }
- if (AxisAPI.getProfile(player).isFrozen()) {
- lines.addAll(getScoreboardFreeze());
- return lines;
- }
- Profile profile = Profile.getByUUID(player.getUniqueId());
- PvpClass pvpClass = plugin.getPvpClassManager().getEquippedClass(player);
- GameHandler gameHandler = plugin.getGameHandler();
- if (ConfigurationService.KIT_MAP) {
- if (gameHandler.getActiveGame() != null && gameHandler.getActiveGame().getPlayers().containsKey(player) && !gameHandler.getActiveGame().getPlayers(GamePlayerState.REMOVED).contains(player)) {
- for (Game game : plugin.getGameHandler().getGames()) {
- if (!game.getName().equalsIgnoreCase(gameHandler.getActiveGame().getName())) {
- continue;
- }
- lines.addAll(game.getScoreboard(player));
- }
- return lines;
- } else if (gameHandler.getUpcomingGame() != null && (gameHandler.getPlayers().contains(player) || gameHandler.getSpectators().contains(player))) {
- lines.add(BARS);
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lGame: " + gameHandler.getUpcomingGame().getDisplayName());
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lPlayers: &f" + gameHandler.getPlayers().size() + '/' + gameHandler.getUpcomingGame().getMaxPlayers());
- lines.add("");
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&3" : "&e") + "&lStarting in &f" + gameHandler.getStartTime() + 's');
- lines.add(BARS);
- return lines;
- }
- if (profile.statsScoreboard) {
- lines.add(ConfigurationService.SCOREBOARD_KILLS_FORMAT.replace("%kills%", String.valueOf(profile.kills)));
- lines.add(ConfigurationService.SCOREBOARD_DEATHS_FORMAT.replace("%deaths%", String.valueOf(profile.deaths)));
- if (ConfigurationService.SCOREBOARD_STREAK_ONLY_MORE_THAN_0) {
- if (profile.killStreak > 0) {
- lines.add(ConfigurationService.SCOREBOARD_STREAK_FORMAT.replace("%streak%", String.valueOf(profile.killStreak)));
- }
- } else {
- lines.add(ConfigurationService.SCOREBOARD_STREAK_FORMAT.replace("%streak%", String.valueOf(profile.killStreak)));
- }
- if (plugin.getFactionManager().getFactionAt(player.getLocation()).isSafezone()) {
- if (profile.gamesWins > 0) {
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&6" : "&b") + "&bGames Wins: &f" + profile.gamesWins);
- }
- int size = lines.size();
- boolean send = true;
- if (gameHandler.getActiveGame() != null) {
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lGame: " + gameHandler.getActiveGame().getDisplayName());
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lPlayers: &f" + gameHandler.getActiveGame().getPlayers(GamePlayerState.ALIVE).size() + '/' + gameHandler.getActiveGame().getMaxPlayers());
- } else if (gameHandler.getUpcomingGame() != null) {
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lGame: " + gameHandler.getUpcomingGame().getDisplayName());
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lStarting In: &f" + gameHandler.getStartTime() + 's');
- } else {
- send = false;
- }
- if (send) {
- lines.add(size, getBARS());
- }
- }
- }
- }
- long sotwTimer = timerManager.getSOTWTimer().getRemaining();
- if (sotwTimer > 0L) {
- if (timerManager.getSOTWTimer().sotwDisabled.contains(player.getUniqueId())) {
- lines.add(ConfigurationService.SCOREBOARD_SOTWTIMER_FORMAT[0]);
- } else {
- lines.add(ConfigurationService.SCOREBOARD_SOTWTIMER_FORMAT[1].replace("%timer%", DurationFormatter.getRemaining(sotwTimer, true)));
- }
- }
- if (pvpClass != null) {
- if (ConfigurationService.SCOREBOARD_CLASS_ENABLED) {
- lines.add(ConfigurationService.SCOREBOARD_CLASS_STYLE.replace("%class%", pvpClass.getName()));
- }
- if (ConfigurationService.CLASS_GHOST_ENABLED && pvpClass instanceof GhostClass) {
- lines.add("&bMode&7: " + (GhostClass.getLevel(player.getUniqueId()) == 1 ? "&dStealth" : GhostClass.getLevel(player.getUniqueId()) == 2 ? "&cPower" : "&aNormal"));
- if (GhostClass.getCooldown(player.getUniqueId()) > 0L) {
- lines.add("&bDelay&7: &c" + DurationFormatter.getRemaining(GhostClass.getCooldown(player.getUniqueId()), false));
- }
- } else if (ConfigurationService.CLASS_BARD_ENABLED && pvpClass instanceof BardClass) {
- BardClass bardClass = (BardClass) pvpClass;
- lines.add(ConfigurationService.SCOREBOARD_BARD_ENERGY.replace("%energy%", handleBardFormat(bardClass.getEnergyMillis(player))));
- long remaining = bardClass.getRemainingBuffDelay(player);
- if (remaining > 0L) {
- lines.add(ConfigurationService.SCOREBOARD_BARD_DELAY.replace("%delay%", DurationFormatter.getRemaining(remaining, true)));
- }
- } else if (ConfigurationService.CLASS_ARCHER_ENABLED && pvpClass instanceof ArcherClass && !ConfigurationService.KIT_MAP) {
- ArcherClass archerClass = (ArcherClass) pvpClass;
- List<Map.Entry<UUID, ArcherMark>> entryList = Ordering.from(ARCHER_MARK_COMPARATOR).sortedCopy(archerClass.getSentMarks(player).entrySet());
- entryList = entryList.subList(0, Math.min(entryList.size(), 3));
- for (Map.Entry<UUID, ArcherMark> entry : entryList) {
- ArcherMark archerMark = entry.getValue();
- Player target = Bukkit.getPlayer(entry.getKey());
- if (target != null) {
- String color;
- switch (archerMark.currentLevel) {
- case 1: {
- color = "&e";
- break;
- }
- case 2: {
- color = "&a";
- break;
- }
- case 3: {
- color = "&c";
- break;
- }
- default: {
- color = "&e";
- break;
- }
- }
- String name = target.getName().substring(0, Math.min(target.getName().length(), 15));
- lines.add("&e» &c" + name + ' ' + color + "[Mark " + archerMark.currentLevel + ']');
- }
- }
- }
- }
- Collection<Timer> timers = timerManager.getTimers();
- for (Timer timer : timers) {
- if (timer instanceof EventTimer) {
- continue;
- }
- if (timer instanceof PlayerTimer) {
- if (!profile.scoreboardTimer) {
- continue;
- }
- PlayerTimer playerTimer = (PlayerTimer) timer;
- if (playerTimer.getRemaining(player) > 0L) {
- String name = playerTimer.getName();
- if (name.length() > 14) {
- name = name.substring(0, 14);
- }
- lines.add(playerTimer.getScoreboardPrefix() + name + "&7: &c" + DurationFormatter.getRemaining(playerTimer.getRemaining(player), true));
- }
- } else if (timer instanceof GlobalTimer) {
- GlobalTimer globalTimer = (GlobalTimer) timer;
- if (globalTimer instanceof SOTWTimer) {
- continue;
- }
- if (globalTimer.getRemaining() > 0L) {
- String name = globalTimer.getName();
- if (name.length() > 14) {
- name = name.substring(0, 14);
- }
- lines.add(globalTimer.getScoreboardPrefix() + name + "&7: &c" + DurationFormatter.getRemaining(globalTimer.getRemaining(), true));
- }
- }
- }
- lines.addAll(getScoreboardEvents(player, eventTimer, lines.isEmpty()));
- if (!lines.isEmpty()) {
- if (lines.size() < 15) {
- lines.add(0, BARS);
- if (lines.size() < 14) {
- lines.add(BARS);
- }
- }
- }
- return lines;
- }
- @Override
- public BoardStyle getBoardStyle(Player player) {
- return BoardStyle.MODERN;
- }
- private List<String> getScoreboardFreeze() {
- List<String> lines = new ArrayList<>();
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&3" : "&e") + "&m-----------------------");
- lines.add("\u2588\u2588\u2588\u2588&c\u2588&f\u2588\u2588\u2588\u2588");
- lines.add("\u2588\u2588\u2588&c\u2588&0\u2588&c\u2588&f\u2588\u2588\u2588");
- lines.add("\u2588\u2588&c\u2588&6\u2588&0\u2588&6\u2588&c\u2588&f\u2588\u2588");
- lines.add("\u2588\u2588&c\u2588&6\u2588&0\u2588&6\u2588&c\u2588&f\u2588\u2588");
- lines.add("\u2588\u2588&c\u2588&6\u2588&0\u2588&6\u2588&c\u2588&f\u2588\u2588");
- lines.add("\u2588&c\u2588&6\u2588\u2588\u2588&6\u2588\u2588&c\u2588&f\u2588");
- lines.add("&c\u2588&6\u2588\u2588\u2588&0\u2588&6\u2588\u2588\u2588&c\u2588");
- lines.add("&c\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588");
- lines.add("");
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lTeamSpeak: &3" + AxisConfiguration.getString("teamspeak"));
- lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&3" : "&e") + "&m-----------------------");
- return lines;
- }
- private List<String> getScoreboardEvents(Player player, EventTimer eventTimer, boolean linesEmpty) {
- List<String> lines = new ArrayList<>();
- if (eventTimer.getEventFaction() instanceof KothFaction) {
- lines.add("&9&l" + eventTimer.getEventFaction().getName() + "&7: &c" + DurationFormatter.getRemaining(eventTimer.getRemaining(), true));
- } else if (eventTimer.getEventFaction() instanceof CitadelFaction) {
- lines.add("&5&lCitadel&7: &c" + DurationFormatter.getRemaining(eventTimer.getRemaining(), true));
- } else if (eventTimer.getEventFaction() instanceof ConquestFaction) {
- if (!linesEmpty) {
- lines.add(BARS);
- }
- lines.add("&e&lConquest&7:");
- int points = 0;
- ConquestFaction conquestFaction = (ConquestFaction) eventTimer.getEventFaction();
- ConquestTracker conquestTracker = (ConquestTracker) conquestFaction.getEventType().getEventTracker();
- List<Map.Entry<PlayerFaction, Integer>> entries = new ArrayList<>(conquestTracker.getFactionPointsMap().entrySet());
- for (Map.Entry<PlayerFaction, Integer> entry : entries) {
- if (entry.getValue() < 1) {
- continue;
- }
- lines.add(' ' + entry.getKey().getDisplayName(player) + "&7: " + entry.getValue());
- points++;
- if (points >= 3) break;
- }
- if (points < 1) {
- lines.add(" &7No scores yet!");
- }
- if (lines.size() < 10) {
- lines.add(BARS);
- lines.add("&d&lMain&7: " + conquestFaction.getMain().getScoreboardRemaining());
- lines.add("&c&lRed&7: " + conquestFaction.getRed().getScoreboardRemaining());
- lines.add("&9&lBlue&7: " + conquestFaction.getBlue().getScoreboardRemaining());
- lines.add("&e&lYellow&7: " + conquestFaction.getYellow().getScoreboardRemaining());
- lines.add("&a&lGreen&7: " + conquestFaction.getGreen().getScoreboardRemaining());
- }
- }
- return lines;
- }
- private String handleBardFormat(long millis) {
- return (DateTimeFormats.REMAINING_SECONDS_TRAILING).get().format(millis * 0.001);
- }
- private Comparator<Map.Entry<UUID, ArcherMark>> ARCHER_MARK_COMPARATOR = Comparator.comparing(Map.Entry::getValue);
- }
Advertisement
Add Comment
Please, Sign In to add comment