Scoreboard Tablist Plugin Problem?

3 Antworten

Hey,

probier mal das aus.

(Der Admin ist im Team Admin und im Team "nix")

package de.marc.listener;

import java.io.File;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;

import de.marc.main.Main;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class ScoreAPI {
	
	
	@SuppressWarnings("deprecation")
	public static void setScoreboard(Player p) {
		Scoreboard sb = Bukkit.getScoreboardManager().getNewScoreboard();
		Objective obj = sb.getObjective("aaa");
		if(obj == null) {
			obj = sb.registerNewObjective("aaa", "bbb");
		}
		
		obj.setDisplayName("§c§lCRIMELIFE");
		obj.setDisplaySlot(DisplaySlot.SIDEBAR);
		
		obj.getScore("§aDein Rang:").setScore(7);
		obj.getScore(ChatColor.BLUE + " ").setScore(6);
		obj.getScore("§aDein Geld:").setScore(5);
		obj.getScore(" §8» §7" + getMoney(p.getName()) + "$").setScore(4); 
		obj.getScore(ChatColor.YELLOW + "  ").setScore(3);
		obj.getScore("§aTeamspeak:").setScore(2);
		obj.getScore(" §8» §7ts.crimelife.de").setScore(1);
		obj.getScore(ChatColor.GREEN + "  ").setScore(0);
		
		
		Team admin = getTeam(sb, "0000ADMIN", "§cADMIN §8* §7", "§7");
		Team mod = getTeam(sb, "0001MODERATION", "§9MOD §8* §7", "§7");
		Team sup = getTeam(sb, "0002SUPPORT", "§aSUPPORT §8* §7", "§7");
		Team donater = getTeam(sb, "0003DONATER", "§5DONATER §8* §7", "§7");
		Team spieler = getTeam(sb, "0004SPIELER", "§7", "§7");
		
		for(Player on : Bukkit.getOnlinePlayers()) {
			if(PermissionsEx.getUser(p).inGroup("Admin")) {
				admin.addPlayer(p);
				obj.getScore(" §8» §cADMIN").setScore(6); 
			} else if(PermissionsEx.getUser(p).inGroup("Moderator")) {
				mod.addPlayer(p);
				obj.getScore(" §8» §8MOD").setScore(6); 
			} else if(PermissionsEx.getUser(p).inGroup("Supporter")) {
				sup.addPlayer(p);
				obj.getScore(" §8» §aSUPPORT").setScore(6); 
			} else if(PermissionsEx.getUser(p).inGroup("Donater")) {
				donater.addPlayer(p);
				obj.getScore(" §8» §5DONATER").setScore(6); 
			} else {
				spieler.addPlayer(p);
				obj.getScore(" §8» §7Spieler").setScore(6); 
			}
		}
		p.setScoreboard(sb);
	}
	
	@SuppressWarnings("deprecation")
	public static void updateScoreboard(Player p) {
		if(p.getScoreboard() == null) {
			setScoreboard(p);
		}
		
	
		Scoreboard sb = p.getScoreboard();
		Objective obj = sb.getObjective("aaa");
		if(obj == null) {
			obj = sb.registerNewObjective("aaa", "bbb");
		}
		
		
		Team admin = getTeam(sb, "0000ADMIN", "§cADMIN §8* §7", "§7");
		Team mod = getTeam(sb, "0001MODERATION", "§9MOD §8* §7", "§7");
		Team sup = getTeam(sb, "0002SUPPORT", "§aSUPPORT §8* §7", "§7");
		Team donater = getTeam(sb, "0003DONATER", "§5DONATER §8* §7", "§7");
		Team spieler = getTeam(sb, "0004SPIELER", "§7", "§7");
		
		for(Player on : Bukkit.getOnlinePlayers()) {
			if(PermissionsEx.getUser(p).inGroup("Admin")) {
				admin.addPlayer(p);
			} 
			else if(PermissionsEx.getUser(p).inGroup("Moderator")) {
				mod.addPlayer(p);
			} 
			else if(PermissionsEx.getUser(p).inGroup("Supporter")) {
				sup.addPlayer(p);
			} 
			else if(PermissionsEx.getUser(p).inGroup("Donater")) {
				donater.addPlayer(p);
			} else if(PermissionsEx.getUser(p).inGroup("default")) {
				spieler.addPlayer(p);
			} else {
               Bukkit.getConsoleSender().sendMessage("Keine Gruppe zugewiesen");
    		}
    	}
    	
    	
    	
    	public static Team getTeam(Scoreboard sb, String Team, String prefix, String suffix) {
		Team team = sb.getTeam(Team);
		if(team == null) {
			team = sb.registerNewTeam(Team);
		}
		team.setPrefix(prefix);
		team.setSuffix(suffix);
		return team;
	}
	
	public static String updateTeam(Scoreboard sb, String Team, String prefix, String suffix, ChatColor entry) {
		Team team = sb.getTeam(Team);
		if(team == null) {
			team = sb.registerNewTeam(Team);
		}
		team.setPrefix(prefix);
		team.setSuffix(suffix);
		team.addEntry(entry.toString());
		return entry.toString();
	}
	public static void startScheduler() {
		new BukkitRunnable() {

			@Override
			public void run() {
				for(Player on : Bukkit.getOnlinePlayers()) {
					updateScoreboard(on);
				}
				
			}
			
		}.runTaskTimer(Main.instance, 20, 20);
	}
	public static Integer getMoney(String name) {
		File file = new File("plugins/CrimeLIFE", "money.yml");
		FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
		
		int money = cfg.getInt(name + ".money");
		return money;
	}

}
Woher ich das weiß:eigene Erfahrung
Aceed 
Fragesteller
 04.04.2020, 15:19

Wenn ich es so mache, wird nur einem selbst der Prefix im Tab angezeigt die anderen Namen sind einfach weiß.

0

Das passiert, weil du auf den Nutzer prüfst, für den du das Board erstellst und nicht auf den, den du anzeigst.

Du solltest aber wirklich mal lernen vernünftig zu programmieren, das ist alles andere als guter Code.

Aceed 
Fragesteller
 04.04.2020, 15:17

Okey? Und was muss ich da jetzt ändern. Ich bin was Java an geht noch ziemlich neu dabei, deshalb sind meine Codes nicht die besten :)

0
FireEraser  04.04.2020, 15:27
@Aceed

Schau dir nochmal die for Schleife in der setScoreboard Methode an. Du iterierst über die Spieler (Variable on), verwendest diese aber nie.

Du solltest schlichtweg zuerst Java lernen bevor du damit arbeitest. Das ganze würde man ganz grundlegend schon anders umsetzen.

0
Aceed 
Fragesteller
 04.04.2020, 15:28
@FireEraser

Achso, das mit admin.addplayer(p) . Ich habe das schon mit admin.addplayer(on) ersetzt gehabt, das problem besteht immernoch

0
FireEraser  04.04.2020, 15:30
@Aceed

Das betrifft doch die meisten Zeilen in der for Schleife und nicht nur die eine.

0
Aceed 
Fragesteller
 04.04.2020, 15:31
@FireEraser

Ja ich habe alles mit .addplayer(p) durch on ersetzt.

0
Aceed 
Fragesteller
 04.04.2020, 15:47
@FireEraser

Ja, habe ich jetzt ist das Problem gefixxt!

0
alstorck1971  08.04.2020, 19:41
@Aceed

Das kann ich aus meinen vielen Jahren Erfahrung in meinem bereits fortgeschrittenem Alter bestätigen. MfG Albert S.

0

Insalla TabListPro

Ist zwar so wie aufgeben, aber TabListPro ist halt das beste Tablist Plugin der Welt. Damit kann man animierte Ränge, animierten Text über und unter den Spielernamen machen.

Woher ich das weiß:Hobby – Habe ich in 2015-2022 gezockt aber ark ist besser