Hallo zusammen,
ich habe eine Frage und zwar habe ich eine Frage zum updaten vom Scoreboard.
Ich habe folgenden Code geschrieben (ein paar Sachen sind auskommentiert weil ich etwas testen wollte):
Wenn ich in der onEnable Methode den im RepeatingTask bei der run Methode
Jetzt habe ich einiges darüber gelesen jedoch sagt jeder etwas anderes. Die einen sagen ich muss Teams verwenden, wieder jemand anderes sagt mit einem Asynchronen Task würde es funktionieren und der nächste sagt ich brauche eine extra update Methode. Ich bin verwirrt was ist denn nun der richtige weg?
LG dmmk218
ich habe eine Frage und zwar habe ich eine Frage zum updaten vom Scoreboard.
Ich habe folgenden Code geschrieben (ein paar Sachen sind auskommentiert weil ich etwas testen wollte):
Java:
package net.woodpixel.scoreboard.testserver;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import net.milkbowl.vault.economy.Economy;
@SuppressWarnings("unused")
public class Main extends JavaPlugin implements Listener {
@Override
public void onEnable() {
this.getServer().getPluginManager().registerEvents(this, this);
setupEconomy();
for (Player p : Bukkit.getOnlinePlayers()) {
Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
playerBalance(p, null);
}
}, 1, 1);
}
}
public static Economy econ = null;
public static String playerBalance(Player p, Double amount) {
double balance = econ.getBalance(p);
String formart = econ.format(balance);
return formart;
}
private boolean setupEconomy() {
if (getServer().getPluginManager().getPlugin("Vault") == null) {
return false;
}
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
if (rsp == null) {
return false;
}
econ = (Economy)rsp.getProvider();
return econ != null;
}
public void setScoreboard(Player p) {
ScoreboardManager sm = Bukkit.getScoreboardManager();
final Scoreboard board = sm.getNewScoreboard();
final Objective o = board.registerNewObjective("test", "dummy");
o.setDisplaySlot(DisplaySlot.SIDEBAR);
o.setDisplayName("§e§lWOOD§4§lPIXEL");
o.getScore("§a ").setScore(11);
o.getScore("§8§l»§3§lRang").setScore(10);
if (p.hasPermission("wps.score.admin")) {
o.getScore("§4§lOwner").setScore(9);
}
else if (p.hasPermission("wps.score.coadmin")) {
o.getScore("§4§lAdmin").setScore(9);
}
else if (p.hasPermission("wps.score.headmod")){
o.getScore("§c§lHeadmod").setScore(9);
}
else if (p.hasPermission("wps.score.mod")) {
o.getScore("§c§lModerator").setScore(9);
}
else if (p.hasPermission("wps.score.dev")) {
o.getScore("§b§lDeveloper").setScore(9);
}
else if (p.hasPermission("wps.score.sup")) {
o.getScore("§2§lSupporter").setScore(9);
}
else if (p.hasPermission("wps.score.design")) {
o.getScore("§3§lDesigner").setScore(9);
}
else if (p.hasPermission("wps.score.builder")) {
o.getScore("§e§lBuilder").setScore(9);
}
else if (p.hasPermission("wps.score.ytp")) {
o.getScore("§5§lYouTuber§c+").setScore(9);
}
else if (p.hasPermission("wps.score.yt")) {
o.getScore("§5§lYouTuber").setScore(9);
}
else if (p.hasPermission("wps.score.supreme")) {
o.getScore("§d§lSupreme").setScore(9);
}
else if (p.hasPermission("wps.score.pixel")) {
o.getScore("§9§lPixel").setScore(9);
}
else if (p.hasPermission("wps.score.legende")) {
o.getScore("§5§lLegende").setScore(9);
}
else if (p.hasPermission("wps.score.premium")) {
o.getScore("§6§lPremium").setScore(9);
}
else {
o.getScore("§7Spieler").setScore(9);
}
o.getScore("§3 ").setScore(8);
o.getScore("§8§l»§3§lServer").setScore(7);
o.getScore("§fCB-1").setScore(6);
o.getScore("§b ").setScore(5);
o.getScore("§8»§3§lKontostand ").setScore(4);
o.getScore("§f" + playerBalance(p, null)).setScore(3);
o.getScore("§f ").setScore(2);
o.getScore("§8§l»§3§lShop").setScore(1);
o.getScore("§f/shop").setScore(0);
p.setScoreboard(board);
}
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = (Player)e.getPlayer();
//new BukkitRunnable() {
// @Override
// public void run() {
//
// for (Player all : Bukkit.getOnlinePlayers()) {
// setScoreboard(all);
// }
//
// }
//}.runTaskLater(this, 1);
setScoreboard(p);
}
//@EventHandler
//public void onQuit(PlayerQuitEvent e) {
// new BukkitRunnable() {
// @Override
// public void run() {
// for (Player all : Bukkit.getOnlinePlayers()) {
// setScoreboard(all);
// }
// }
// }.runTaskLater(this, 1);
//}
}
Wenn ich in der onEnable Methode den im RepeatingTask bei der run Methode
setScoreboard(p); angebe funktioniert alles wie gewünscht nur flackert das Score abnormal. Wenn ich sie weglasse updated das Geld nicht mehr. Jetzt habe ich einiges darüber gelesen jedoch sagt jeder etwas anderes. Die einen sagen ich muss Teams verwenden, wieder jemand anderes sagt mit einem Asynchronen Task würde es funktionieren und der nächste sagt ich brauche eine extra update Methode. Ich bin verwirrt was ist denn nun der richtige weg?
LG dmmk218