Lobby/src/main/java/eu/univento/lobby/utils/Scoreboards.java

128 lines
4.4 KiB
Java

/*
* 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<String> general = new ArrayList<>();
List<String> dev = new ArrayList<>();
List<String> build = new ArrayList<>();
List<String> 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);
}
}