/* * Copyright (c) 2018 univento.eu - All rights reserved * You are not allowed to use, distribute or modify this code */ package eu.univento.lobby.utils; import eu.univento.core.Core; import eu.univento.core.api.player.CustomPlayer; import io.vertx.core.json.JsonObject; import org.bukkit.Bukkit; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Score; import org.bukkit.scoreboard.Scoreboard; import java.util.ArrayList; import java.util.List; /** * @author joethei * @version 2.0 */ public class Scoreboards { public static void updateScoreboard(CustomPlayer p) { p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); List general = new ArrayList<>(); List dev = new ArrayList<>(); List build = new ArrayList<>(); List team = new ArrayList<>(); Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOne("updates", new JsonObject().put("category", "general"), null, event -> { if(event.failed()) return; event.result().getJsonArray("news").forEach(o -> general.add((String) o)); }); Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOne("updates", new JsonObject().put("category", "development"), null, event -> { if(event.failed()) return; event.result().getJsonArray("news").forEach(o -> dev.add((String) o)); }); Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOne("updates", new JsonObject().put("category", "build"), null, event -> { if(event.failed()) return; event.result().getJsonArray("news").forEach(o -> build.add((String) o)); }); Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOne("updates", new JsonObject().put("category", "team"), null, event -> { if(event.failed()) return; event.result().getJsonArray("news").forEach(o -> team.add((String) o)); }); Bukkit.getScheduler().scheduleSyncDelayedTask(Core.getInstance(), new BukkitRunnable() { @Override public void run() { int size = general.size() + dev.size() + build.size() + team.size() + 8; Scoreboard board = p.getScoreboard(); if(board.getObjective("Lobby") != null) board.getObjective("Lobby").unregister(); Objective obj = board.registerNewObjective("Lobby", "dummy"); obj.setDisplaySlot(DisplaySlot.SIDEBAR); obj.setDisplayName("§8§l♣ §2updates"); Score generalSpace = obj.getScore("§8§l"); generalSpace.setScore(size); size--; Score generalHead = obj.getScore("§7§l✸ §aAllgemeines"); generalHead.setScore(size); size--; for(String news : general) { Score score = obj.getScore(news); score.setScore(size); size--; } Score devSpace = obj.getScore("§5§l"); devSpace.setScore(size); size--; Score devHead = obj.getScore("§7§l⚡ §aEntwicklung"); devHead.setScore(size); size--; for(String news : dev) { Score score = obj.getScore(news); score.setScore(size); size--; } Score buildSpace = obj.getScore("§3§l"); buildSpace.setScore(size); size--; Score buildHead = obj.getScore("§7§l⚒ §aBuilding"); buildHead.setScore(size); size--; for(String news : build) { Score score = obj.getScore(news); score.setScore(size); size--; } Score teamSpace = obj.getScore("§6§l"); teamSpace.setScore(size); size--; Score teamHead = obj.getScore("§7§l☯ §aTeam"); teamHead.setScore(size); size--; for(String news : team) { Score score = obj.getScore(news); score.setScore(size); size--; } } }, 2 * 20L); } }