Jump to content

Scoreboard mit updater


zTrouble
 Share

Recommended Posts

Moin Moin, 

Ich arbeite momentan an einem Scoreboard Plugin bei dem die Coins angezeigt werden sollen, das ganze funktioniert auch jedoch möchte ich das es sich etwa jede Sekunde updatet, also das wenn man jetzt einem Spieler Geld gibt es sofort im Scoreboard angezeigt wird, mein Problem ist jetzt, das es einfach nicht klappen will. Zunächst habe ich es versucht selber zu machen jedoch hat das nicht funktioniert, auch wenn ich es nicht gerne mache habe ich ein Tutorial nach programmiert und es ging auch nicht. Ich habe auch versucht das ganze mal mit Leveln zu machen - ebenfalls gescheitert. Ich kann nicht ganz nachvollziehen was da nicht klappt, es gibt keine Errors und die Debug Nachricht funktioniert auch problemlos, ich habe übrigens auch 2 weitere Tutorials nach programmiert, auch wenn ich sowas nicht mag. 

Ich hoffe mir kann jemand helfen das Problem zu lösen: 

public class Scoreboards extends JavaPlugin implements Listener {
	
	Map<Scoreboard, Player> scoreboards = new HashMap<>();
	@Override
	public void onEnable() {
		getServer().getPluginManager().registerEvents(this, this);
		updater();
		
	}
	@Override
	public void onDisable() {
		
		
	}
	
	@EventHandler
	public void handleJoin(final PlayerJoinEvent event) {
		final Player player = event.getPlayer();
		
		 Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
		 Objective o = scoreboard.registerNewObjective("aaa", "dummy");
		for(Player players : Bukkit.getOnlinePlayers())
			setScoreboard(players);
		
		Team adminPrefix = scoreboard.registerNewTeam("1-Admin");
		adminPrefix.setPrefix("§4");
		
		Bukkit.getOnlinePlayers().forEach(players -> {
			if(players.isOp())
					adminPrefix.addEntry(players.getName());
		});
		
		String Player = player.getName();
		CoinPlayer player1 = CoinSystem.getInstance().getPlayerManager().getPlayer(Player);

		Team playercoins = scoreboard.registerNewTeam("PCoins");
		playercoins.setPrefix("§f" + player.getLevel());
		playercoins.addEntry("§6§l ".toString());
		
		o.setDisplaySlot(DisplaySlot.SIDEBAR);
		o.setDisplayName("§8« §6§lInto§f§lbuild §8»");
		o.getScore("§a§l ").setScore(13);
		o.getScore("§e§lMünzen").setScore(12);
		o.getScore("§f" + player.getLevel()).setScore(11);
		
		scoreboards.put(scoreboard, player);
		player.setScoreboard(scoreboard);
		
	}
	
	private void setScoreboard(Player players) {
		
	}
	public void updater() {
		new BukkitRunnable() {
			
			@Override
			public void run() {
				
				for(Scoreboard scoreboard : scoreboards.keySet()) {
					Player player = scoreboards.get(scoreboard);
					String Player = player.getName();
					CoinPlayer player1 = CoinSystem.getInstance().getPlayerManager().getPlayer(Player);
					scoreboard.getTeam("PCoins").setPrefix("§f" + player.getLevel());
				}
			}
		}.runTaskTimerAsynchronously(this, 0L, 10L);
	}

}

Das ist mein erster Beitrag in einem Forum, falls ich also Infos vergessen habe, schreibt es einfach :c 

Link to comment
Share on other sites

  • 2 months later...

Ich habe das in etwa so gelöst

 

            o.getScore("§6» §f§lSilberlinge").setScore(7);
            o.getScore(updateTeam(sb, "Money", "§e" + coinsFormat.format(coins), "", ChatColor.RED)).setScore(6);



public static String updateTeam(Scoreboard sb, String Team, String prefix, String suffix, ChatColor entery) {
        Team team = sb.getTeam(Team);
        if (team == null) {
            team = sb.registerNewTeam(Team);
        }
        team.setPrefix(prefix);
        team.setSuffix(suffix);
        team.addEntry(entery.toString());
        return entery.toString();
    }

public static void updateteam() {
        String pattern = "#,###,###";
        DecimalFormat coinsFormat = new DecimalFormat(pattern);
        for (Player p : Bukkit.getOnlinePlayers()) {
            String uuid = p.getUniqueId().toString();
            int coins = LetsPlayMCSilberlinge.getCoins(p.getPlayer().getUniqueId().toString());
            Scoreboard sb = p.getScoreboard();
            Objective o = sb.getObjective("stats");
            o.getScore(updateTeam(sb, "Money", "§e" + coinsFormat.format(coins), "", ChatColor.RED)).setScore(6);
        }
    }

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B
B