B
Blindhero
Guest
Hallo Liebe Minecraft Community. Ich habe bisher wenige Scoreboard tutorials gefunden also wollte ich mal fragen wie ich das mache, dass ich ein Scoreboard gut update ohne dass es Flackert? Jeden ServerTick wird einer Hashmap das aktuelle Leben des Spielers zugewiesen und das Scoreboard geupdated:
So und hier die Scoreboard Methode:
Leider flackert das immer wenn mehrere Clans online sind. Jemand ne Idee wie man das richtig bzw besser machen könnte?
Code:
this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
public void run() {
for(Player p : getServer().getOnlinePlayers()) {
oldHealth.put(p, (int) (((Damageable) p).getHealth()));
}
for(Clan c : clans) {
if(c.getOnlineMember().size() > 0) {
showClanboard(c);
}
}
}
}, 20L, 0L);
So und hier die Scoreboard Methode:
Code:
public void showClanboard(Clan c) {
if(c != null) {
ScoreboardManager manager = Bukkit.getScoreboardManager();
Scoreboard board = manager.getNewScoreboard();
Objective clanboard = board.getObjective("clanboard");
if(clanboard == null) {
clanboard = board.registerNewObjective("clanboard", "health");
clanboard.setDisplaySlot(DisplaySlot.SIDEBAR);
clanboard.setDisplayName(ChatColor.YELLOW + c.getName() + ChatColor.GREEN +" Health in %");
}
Team team = board.getTeam(c.getName());
if(team == null) {
team = board.registerNewTeam(c.getName());
}
for(OfflinePlayer m : team.getPlayers()) {
if(!m.isOnline()) {
team.removePlayer(m);
}
}
boolean update = false;
for(Player m : c.getOnlineMember()) {
Score score = clanboard.getScore(m);
int s = (int) ((oldHealth.get(m) / ((Damageable) m).getMaxHealth()) * 100);
if(s != score.getScore() || !team.hasPlayer(m)) {
update = true;
}
}
if(update) {
for(Player m : c.getOnlineMember()) {
if(!team.hasPlayer(m)) {
team.addPlayer(m);
}
m.setScoreboard(board);
Score score = clanboard.getScore(m);
score.setScore((int) (((Damageable) m).getHealth() / ((Damageable) m).getMaxHealth() * 100));
}
}
}
}
Leider flackert das immer wenn mehrere Clans online sind. Jemand ne Idee wie man das richtig bzw besser machen könnte?