Util SimpleScoreboard - Make pretty scoreboards with ease!

Discussion in 'Resources' started by RainoBoy97, Apr 30, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    mesti0801

    Hey, I'm using @Squid_Boss' update method and it doesn't work :/
    Update method:
    Code:
    @SuppressWarnings("deprecation")
        public void update(String text, Integer score) {
            if(scores.containsKey(text)) {
                scores.put(text, score);
                for(Team t : teams) {
                    if(t.getName() == text) {
                        t.unregister();
                    }
                }
    
                Map.Entry<Team, String> team = createTeam(text);
                OfflinePlayer player = Bukkit.getOfflinePlayer(team.getValue());
                if(team.getKey() != null)
                    team.getKey().addPlayer(player);
                obj.getScore(player).setScore(score);
            }
        }
    My code:
    Code:
    new BukkitRunnable() {
                public void run() {
                    for(Player all : Bukkit.getOnlinePlayers()) {
    SimpleScoreboard s = new SimpleScoreboard(ChatColor.translateAlternateColorCodes('&', fm.getScoreboard().getString("Title")));
                            for(String lines : fm.getScoreboard().getStringList("Lines")) {
                                if(getConfig().getBoolean("Settings.PermissionsManager")) {
                                    s.update(lines, null);
                                } else {
                                    s.update(lines, null);
                                }
                            }
                        }
                }
            }.runTaskTimer(this, 0, 3);
     
  2. Offline

    RTGPrison

    Well Hello how to make Refresh time?
     
  3. Offline

    GamerzKing

    Use a Runnable.
     
  4. Offline

    VinexAx789

    Can you register teams for this?
    Here's an example:
    Code:
                this.red = board.registerNewTeam("attackers");
                this.blue = board.registerNewTeam("defenders");
    I plan on switching to this sick library if it can do this but if it can maybe add it or help me on setting it up by chance? Overall looks sick!
     
  5. Offline

    Zurbeyira

    Hi, I have error can you help me ? (PaperSpigot 1.7.10)

    Class:
    Code:
    @EventHandler
        public void event(PlayerJoinEvent event) {
            Player player = event.getPlayer();
            // create a new scoreboard with title
            SimpleScoreboard scoreboard = new SimpleScoreboard("Uprizing Network");
            // text with custom score
            scoreboard.add("§lCustom scores ->", 1337);
            // also supports blank lines (up to 23 of them!)
            scoreboard.blankLine();
            scoreboard.add("§cBLANK LINES");
            scoreboard.blankLine();
            // if you dont specify a score it will display them in the order you add them in
            scoreboard.add("lines");
            scoreboard.add("§bin");
            scoreboard.add("§edescending");
            scoreboard.add("§2order");
            scoreboard.add(":)");
            scoreboard.blankLine();
            // the text can be up to 48 characters long (including color codes)
            scoreboard.add("and long lines with up to §l48 characters");
            // call this to create the scoreboard, nothing will happen if you forget to call this
            scoreboard.build();
            // send the scoreboard to the player(s), takes an array
            scoreboard.send(player);
        }
    Error:
    Code:
    [17:47:03] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to Lobby v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:509) [spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:494) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.PlayerList.c(PlayerList.java:300) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.PlayerList.a(PlayerList.java:185) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.LoginListener.c(LoginListener.java:119) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.LoginListener.a(LoginListener.java:44) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:192) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:789) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:307) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:638) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:544) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-PaperSpigot-43]
    Caused by: java.lang.IllegalArgumentException: Name cannot be blank
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88) ~[spigot.jar:git-PaperSpigot-43]
        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.getOfflinePlayer(CraftServer.java:1397) ~[spigot.jar:git-PaperSpigot-43]
        at org.bukkit.Bukkit.getOfflinePlayer(Bukkit.java:436) ~[spigot.jar:git-PaperSpigot-43]
        at eu.uprizing.lobby.SimpleScoreboard.build(SimpleScoreboard.java:83) ~[?:?]
        at eu.uprizing.lobby.Join.event(Join.java:45) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_91]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[spigot.jar:git-PaperSpigot-43]
        ... 14 more
     
    Last edited by a moderator: Jun 19, 2016
  6. Offline

    VinexAx789

    @Zurbeyira Use this ;)

    Code:
    package main.main.utils;
    
    import java.util.AbstractMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Scoreboard;
    import org.bukkit.scoreboard.Team;
    
    import com.google.common.base.Preconditions;
    import com.google.common.base.Splitter;
    import com.google.common.collect.Lists;
    import com.google.common.collect.Maps;
    
    public class ScoreboardAPI {
    
        private Scoreboard scoreboard;
    
        private String title;
        private Map<String, Integer> scores;
        private List<Team> teams;
    
        public ScoreboardAPI(String title) {
            this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
            this.title = title;
            this.scores = Maps.newLinkedHashMap();
            this.teams = Lists.newArrayList();
        }
    
        public void blankLine() {
            add(" ");
        }
    
        public void add(String text) {
            add(text, null);
        }
    
        public void add(String text, Integer score) {
            Preconditions.checkArgument(text.length() < 48, "Text cannot be over 48 characters in length!");
            text = fixDuplicates(text);
            scores.put(text, score);
        }
    
        private String fixDuplicates(String text) {
            while (scores.containsKey(text)) {
                text += "§r";
            }
            if (text.length() > 48) {
                text = text.substring(0, 47);
            }
            return text;
        }
    
        private Map.Entry<Team, String> createTeam(String text) {
            String result = "";
            if (text.length() <= 16) {
                return new AbstractMap.SimpleEntry<>(null, text);
            }
            Team team = scoreboard.registerNewTeam("text-" + scoreboard.getTeams().size());
            Iterator<String> iterator = Splitter.fixedLength(16).split(text).iterator();
            team.setPrefix(iterator.next());
            result = iterator.next();
            if (text.length() > 32) {
                team.setSuffix(iterator.next());
            }
            teams.add(team);
            return new AbstractMap.SimpleEntry<>(team, result);
        }
    
        public void build() {
            final Objective obj = scoreboard.registerNewObjective((title.length() > 16 ? title.substring(0, 15) : title),
                    "dummy");
            obj.setDisplayName(title);
            obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    
            int index = scores.size();
            for (final Map.Entry<String, Integer> text : scores.entrySet()) {
                final Map.Entry<Team, String> team = createTeam(text.getKey());
                Integer score = text.getValue() != null ? text.getValue() : index;
                String value = team.getValue();
                if (team.getKey() != null) {
                    team.getKey().addEntry(value);
                }
                obj.getScore(value).setScore(score);
                index -= 1;
            }
        }
    
        public void reset() {
            title = null;
            scores.clear();
            for (Team t : teams) {
                t.unregister();
            }
            teams.clear();
        }
    
        public Scoreboard getScoreboard() {
            return scoreboard;
        }
    
        public void send(Player... onlinePlayers) {
            for (Player onlinePlayer : onlinePlayers) {
                onlinePlayer.setScoreboard(scoreboard);
            }
        }
    
    }
    Working 1.7 - 1.10
     
    MarinD99 likes this.
  7. Offline

    Zurbeyira

    Thank you guys ! And for update the line of the Scoreboard ?
     
  8. Offline

    VinexAx789

    @Zurbeyira You're welcome! Ah what do you mean like on how to update it?
     
Thread Status:
Not open for further replies.

Share This Page