Scoreboard API & Scoreboard Help

Discussion in 'Plugin Help/Development/Requests' started by FlipSide_Mike, Dec 11, 2014.

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

    FlipSide_Mike

    Hey there, so I have been working on a Scoreboard Teams plugin to show the players rank in the tab menu! And I got it to work, but it would attempt to create the team every time the server is launched and throw errors, so I turned it into a mini-api, and created a plugin so every time a player joins they are added to the team.

    API (open)
    Code:
    package com.PetroSwag.AN.TeamAPI;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.Scoreboard;
    import org.bukkit.scoreboard.ScoreboardManager;
    import org.bukkit.scoreboard.Team;
    
    /**
    * * **************************************************************************************
    * Copyright TheFlipSide (c) 2014.  All Rights Reserved.
    * Any code contained within TeamAPI (this document), and any associated APIs with similar branding
    * are the sole property of _______ _________.  Distribution, reproduction, taking sections, or
    * claiming any contents as your own will break the terms of the license, and void any
    * agreements with the third-party, you.
    * Thanks.
    * Created on 12/10/2014 at 4:20 PM.
    * ******************************************************************************************
    */
    public class API extends JavaPlugin implements Listener {
    
        public String red = "&4";
        public String purple = "&5";
        public String green = "&2";
        public String lime = "&a";
        public String orange = "&6";
        public String pink = "&d";
        public String lightred = "&c";
        public String blue = "&9";
        public String bold = "&l";
        public String reset = "&r";
        public String space = " ";
    
        public static ScoreboardManager man = null;
        public static Scoreboard sb = null;
    
        public static Team OP = null;
        public static Team ADMIN = null;
        public static Team SRMOD = null;
        public static Team MOD = null;
        public static Team HELPER = null;
        public static Team BUILDER = null;
        public static Team YOUTUBER = null;
        public static Team VIP = null;
        public static Team MEMBER = null;
    
        @Override
        public void onEnable() {
            getLogger().info("Teams Setting up Enabing...");
            getServer().getPluginManager().registerEvents(this, this);
    
            man = Bukkit.getScoreboardManager();
            sb = man.getMainScoreboard();
    
            scoreBoard();
            getLogger().warning("If this plugin is not removed after startup you will not be able to re-launch the server!");
        }
    
        @Override
        public void onDisable() {
            getLogger().info("Teams Disabling...");
        }
    
        public void scoreBoard(){
            OP = sb.registerNewTeam("OP");
            ADMIN = sb.registerNewTeam("ADMIN");
            SRMOD = sb.registerNewTeam("SR. MOD");
            MOD = sb.registerNewTeam("MOD");
            HELPER = sb.registerNewTeam("HELPER");
            BUILDER = sb.registerNewTeam("BUILDER");
            YOUTUBER = sb.registerNewTeam("YOUTUBER");
            VIP = sb.registerNewTeam("VIP");
            MEMBER = sb.registerNewTeam("MEMBER");
    
            OP.setPrefix(ChatColor.translateAlternateColorCodes('&', red + bold + "OWNER" + reset + space));
            ADMIN.setPrefix(ChatColor.translateAlternateColorCodes('&', orange + bold + "ADMIN" + reset + space));
            SRMOD.setPrefix(ChatColor.translateAlternateColorCodes('&', green + bold + "SRMOD" + reset + space));
            MOD.setPrefix(ChatColor.translateAlternateColorCodes('&', lime + bold + "MOD" + reset + space));
            HELPER.setPrefix(ChatColor.translateAlternateColorCodes('&', pink + bold + "HELPER" + reset + space));
            BUILDER.setPrefix(ChatColor.translateAlternateColorCodes('&', purple + bold + "BUILDER" + reset + space));
            YOUTUBER.setPrefix(ChatColor.translateAlternateColorCodes('&', lightred + bold + "YOUTUBER" + reset + space));
            VIP.setPrefix(ChatColor.translateAlternateColorCodes('&', blue + bold + "VIP" + reset + space));
        }
    }
    


    TabList Prefixes (open)
    Code:
    package com.Petro.AN.TabList;
    
    import com.PetroSwag.AN.TeamAPI.API;
    
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.Scoreboard;
    import org.bukkit.scoreboard.Team;
    
    /**
    * * **************************************************************************************
    * Copyright TheFlipSide (c) 2014.  All Rights Reserved.
    * Any code contained within TabListPrefix (this document), and any associated APIs with similar branding
    * are the sole property of _______ _________.  Distribution, reproduction, taking sections, or
    * claiming any contents as your own will break the terms of the license, and void any
    * agreements with the third-party, you.
    * Thanks.
    * Created on 12/11/2014 at 8:28 PM.
    * ******************************************************************************************
    */
    public class Core extends JavaPlugin implements Listener{
    
        Scoreboard sb = API.sb;
        String bar = ("&9&l&m==============================");
        String tab = ("&9> TabList");
      
        @Override
        public void onEnable() {
            getLogger().info("Tab List Enabling...");
            getServer().getPluginManager().registerEvents(this, this);
        }
    
        @Override
        public void onDisable() {
            getLogger().info("Tab List Disabling...");
        }
    
        @EventHandler
        public void onJoin(PlayerJoinEvent event){
            Player player = event.getPlayer();
            player.setScoreboard(sb);
            if(player.hasPermission("prefix.owner")){
                API.OP.addPlayer(player);
            }
            else if(player.hasPermission("prefix.admin")){
                API.ADMIN.addPlayer(player);
            }
            else if(player.hasPermission("prefix.srmod")){
                API.SRMOD.addPlayer(player);
            }
            else if(player.hasPermission("prefix.mod")){
                API.MOD.addPlayer(player);
            }
            else if(player.hasPermission("prefix.helper")){
                API.HELPER.addPlayer(player);
            }
            else if(player.hasPermission("prefix.builder")){
                API.BUILDER.addPlayer(player);
            }
            else if(player.hasPermission("prefix.youtuber")){
                API.YOUTUBER.addPlayer(player);
            }
            else if(player.hasPermission("prefix.vip")){
                API.VIP.addPlayer(player);
            }else{
                API.MEMBER.addPlayer(player);
            }
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            Player player = (Player) sender;
            if(label.equalsIgnoreCase("movegroup")){
                if(player.hasPermission("prefix.manumove")){
                    if((args.length == 0) || (args[0].equalsIgnoreCase("help"))){
                        player.sendMessage(ChatColor.translateAlternateColorCodes('&', bar));
                        player.sendMessage(ChatColor.GOLD + "/movegroup help" + ChatColor.GRAY + "Manually move a players team.  This is not the recommended method as it bypasses permissions.");
                        player.sendMessage(ChatColor.GOLD + "/movegroup [Player] [Group]");
                        player.sendMessage(ChatColor.translateAlternateColorCodes('&', bar));
                        return true;
                    }
                    else if(args.length == 2){
                        Player targetPlayer = null;
                        for(Player p : getServer().getOnlinePlayers()){
                            if(p.getName().equalsIgnoreCase(args[1])){
                                targetPlayer = p;
                                break;
                            }
                        }
                        if(targetPlayer !=null){
                            Team team = sb.getPlayerTeam(targetPlayer);
                            String nameT = targetPlayer.getName();
                            String nameP = player.getName();
                            if(!(team.toString().equalsIgnoreCase(args[1]))){
                                if(args[1].equalsIgnoreCase("owner")){
                                    team.removePlayer(targetPlayer);
                                    API.OP.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.AQUA + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.DARK_RED + "Owner" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.DARK_RED + "Owner" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + ".");
                                }
                                else if(args[1].equalsIgnoreCase("admin")){
                                    team.removePlayer(targetPlayer);
                                    API.ADMIN.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.AQUA + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.GOLD + "Admin" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.GOLD + "Admin" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + ".");
                                }
                                else if(args[1].equalsIgnoreCase("srmod")){
                                    team.removePlayer(targetPlayer);
                                    API.SRMOD.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.AQUA + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.DARK_GREEN + "Sr. Mod" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.DARK_GREEN + "Sr. Mod" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + ".");
                                }
                                else if(args[1].equalsIgnoreCase("mod")){
                                    team.removePlayer(targetPlayer);
                                    API.MOD.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.AQUA + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.GREEN + "Mod" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.GREEN + "Mod" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + ".");
                                }
                                else if(args[1].equalsIgnoreCase("helper")){
                                    team.removePlayer(targetPlayer);
                                    API.HELPER.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.AQUA + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.LIGHT_PURPLE + "Helper" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.LIGHT_PURPLE + "Helper" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + ".");
                                }
                                else if(args[1].equalsIgnoreCase("builder")){
                                    team.removePlayer(targetPlayer);
                                    API.BUILDER.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.AQUA + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.DARK_PURPLE + "Builder" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.DARK_PURPLE + "Builder" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + ".");
                                }
                                else if(args[1].equalsIgnoreCase("youtuber")){
                                    team.removePlayer(targetPlayer);
                                    API.YOUTUBER.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.AQUA + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.RED + "Youtuber" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.RED + "Youtuber" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + ".");
                                }
                                else if(args[1].equalsIgnoreCase("vip")){
                                    team.removePlayer(targetPlayer);
                                    API.VIP.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.AQUA + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.BLUE + "VIP" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.BLUE + "VIP" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + ".");
                                }
                                else if(args[1].equalsIgnoreCase("member")){
                                    team.removePlayer(targetPlayer);
                                    API.MEMBER.addPlayer(targetPlayer);
                                    player.sendMessage(ChatColor.DARK_AQUA + "You moved " + ChatColor.YELLOW + nameT + ChatColor.DARK_AQUA + " to the " + ChatColor.AQUA + "Member" + ChatColor.DARK_AQUA + " group.");
                                    targetPlayer.sendMessage(ChatColor.DARK_AQUA + "You were moved to the " + ChatColor.YELLOW + "Member" + ChatColor.DARK_AQUA + " group by " + ChatColor.AQUA + nameP + ChatColor.DARK_AQUA + "!");
                                }
                            }else{
                                player.sendMessage(tab + ChatColor.DARK_RED + nameT + ChatColor.RED + " is already in that group!");
                                return false;
                            }
                        }else{
                            player.sendMessage(tab + ChatColor.RED + "Could not find the user " + ChatColor.DARK_RED + args[1]);
                            return false;
                        }
                    }else{
                        player.sendMessage(tab + ChatColor.RED + "Invalid parameters, use " + ChatColor.GOLD + " /movegroup help" + ChatColor.RED + " for assistance!");
                        return false;
                    }
                }else{
                    player.sendMessage(tab + ChatColor.RED + "You do not have the necessary permission to perform this command!");
                    player.sendMessage(tab + ChatColor.RED + "If you believe this is false, please contact server administration immediately!");
                    return false;
                }
            }
            return false;
        }
    }
    


    Any help or guidance to making this work would be appreciated!

    Cheers
    Mike


    EDIT: Credit to Skionz for this: I forgot to mention to new issue, the actual plugin for Tab List will not load up in the server at all!
     
    Last edited: Dec 11, 2014
  2. Offline

    Skionz

    @FlipSide_Mike And what is the issue? You tell us that you resolved you problem yet you ask for help without telling us what the new problem is.
     
  3. Offline

    FlipSide_Mike

    @Skionz The 2nd plugin doesnt load in the server, it wont enable, it wont do anything, as if it wasn't in the folder, and I believe its because the API isnt in the folder with it, yet it cant because it wont allow the server to launch more than once!
     
  4. Offline

    Skionz

    @FlipSide_Mike Why make to separate plugins? Just make a class within the other plugin. The API has to be in the plugins folder as well as the actual plugin. I stack-trace would help further.
     
  5. Offline

    FlipSide_Mike

    @Skionz I figured out the issue, I created a loop to check if the team was already made, and it works, but I'm getting an error on the onJoin method

    Code:
    [00:19:21] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to PrefixesPlus v1.0.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[spigot.jar:git-Spigot-1453]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1453]
        at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30) ~[spigot.jar:git-Spigot-1453]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-1453]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.PlayerList.c(PlayerList.java:251) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.PlayerList.a(PlayerList.java:138) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.LoginListener.c(LoginListener.java:105) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.LoginListener.a(LoginListener.java:43) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:179) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.ServerConnection.c(ServerConnection.java:77) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:713) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:283) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:576) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:482) [spigot.jar:git-Spigot-1453]
        at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1453]
    Caused by: java.lang.NullPointerException
        at com.AN.Petro.Prefix.Core.onJoin(Core.java:94) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_11]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_11]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[spigot.jar:git-Spigot-1453]
        ... 15 more
    [00:19:21] [Server thread/INFO]: PetroSwagx51[/25.16.223.233:58705] logged in with entity id 186 at ([world] 19.30000001192093, 79.0, 97.69999998807907)
    Here is my updated event
    Code:
        @EventHandler
        public void onJoin(PlayerJoinEvent event){
            Player player = event.getPlayer();
            player.setScoreboard(sb);
            if(player.hasPermission("prefix.owner")) {
                OP.addPlayer(player);
            }
            else if(player.hasPermission("prefix.admin")) {
                ADMIN.addPlayer(player);
            }
            else if(player.hasPermission("prefix.srmod")) {
                SRMOD.addPlayer(player);
            }
            else if(player.hasPermission("prefix.mod")) {
                MOD.addPlayer(player);
            }
            else if(player.hasPermission("prefix.helper")) {
                HELPER.addPlayer(player);
            }
            else if(player.hasPermission("prefix.builder")) {
                BUILDER.addPlayer(player);
            }
            else if(player.hasPermission("prefix.youtuber")) {
                YOUTUBER.addPlayer(player);
            }
            else if(player.hasPermission("prefix.vip")) {
                VIP.addPlayer(player);
            } else {
                MEMBER.addPlayer(player);
            }
        }
    Line 94 is where the error is, is the
    OP.addPlayer(player);

    And because of that I figure its occurring ever time a player is being added to the group
     
  6. Offline

    mrCookieSlime

    Moved to Alternatives Section.
     
Thread Status:
Not open for further replies.

Share This Page