TagAPI

Discussion in 'Plugin Development' started by linkrock4, Jan 28, 2013.

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

    linkrock4

    Hey, i'm trying to make this plugin where u do /NameColor <name> <color> to change someones display name on top of his head but im kinda lost... ._. Ive read the tagAPI wiki and this is what i got so far (please note im a new coder so i really really really dont know much :/)
    Code:
    package net.skydevs.src;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.kitteh.tag.PlayerReceiveNameTagEvent;
     
    public class LBName extends JavaPlugin implements Listener {
       
        public void onEnable() { // Server Starts
            getLogger().info("LB Welcome has been enabled!");
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
     
        public void onDisable() { // Server Stops
            getLogger().info("LB Welcome has been disabled!");
        }
           
        @EventHandler
        public void onNameTag(PlayerReceiveNameTagEvent event) {
        if (event.getNamedPlayer().getName().equals("linkrock4")) {
        event.setTag(ChatColor.RED + "linkrock4");
        }
    }
    }    
    I just edit the plugin a little bit:
    Code:
    package net.skydevs.src;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.kitteh.tag.PlayerReceiveNameTagEvent;
     
    public class LBName extends JavaPlugin implements Listener {
       
        public void onEnable() { // Server Starts
            getLogger().info("LBName has been enabled!");
        }
     
        public void onDisable() { // Server Stops
            getLogger().info("LBName has been disabled!");
        }
       
            if (cmd.getName().equalsIgnoreCase("welcome")) {
               
            }
               
        @EventHandler
        public void onNameTag(PlayerReceiveNameTagEvent event) {
        if (event.getNamedPlayer().getName().equals("linkrock4")) {
        event.setTag(ChatColor.RED + "linkrock4");
        }
        }
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 31, 2016
  2. Offline

    chasechocolate

    This is how I would do it:
    Code:java
    1. HashMap<String, ChatColor> tags = new HashMap<String, ChatColor>();
    2. //In your onCommand boolean:
    3. if(args.length == 3){
    4. String target = args[1];
    5. ChatColor color = ChatColor.getByChar(args[2]);
    6. tags.put(target, color);
    7. return true;
    8. } else {
    9. player.sendMessage(ChatColor.RED + "Usage: /namecolor <target> <color>!");
    10. return true;
    11. }
    12. //In your PlayerReceiveNameTagEvent set the tag by using:
    13. event.setTag(tags.get(event.getNamedPlayer().getName()) + event.getNamedPlayer().getName());
    14.  
     
  3. Offline

    linkrock4

    So it would look like something like this?:
    Code:
    package net.skydevs.src;
     
    import java.util.HashMap;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.kitteh.tag.PlayerReceiveNameTagEvent;
     
    public class LBName extends JavaPlugin implements Listener {
        HashMap<String, ChatColor> tags = new HashMap<String, ChatColor>();
     
        public void onEnable() { // Server Starts
            getLogger().info("LBName has been enabled!");
        }
     
        public void onDisable() { // Server Stops
            getLogger().info("LBName has been disabled!");
        }
     
        public boolean onCommand(CommandSender sender, Command cmd, String Label,
                String[] args) {
     
        if(args.length == 3){
              String target = args[1];
              ChatColor color = ChatColor.getByChar(args[2]);
              tags.put(target, color);
              return true;
            } else {
              player.sendMessage(ChatColor.RED + "Usage: /namecolor <target> <color>!");
              return true;
            }
        }
     
            if (cmd.getName().equalsIgnoreCase("welcome")) { 
            }
           
        @EventHandler
        public void onNameTag(PlayerReceiveNameTagEvent event) {
            event.setTag(tags.get(event.getNamedPlayer().getName()) + event.getNamedPlayer().getName());
        }
        }
    }
    }
    Tho im getting a couple of errors but im still working on fixing them
    EDIT: I fixed the errors but one. what do i set player to?
     
  4. Offline

    ZeusAllMighty11

    Player player = (Player) sender;
     
  5. Offline

    linkrock4

    Thanks very much guys :D Really appreciated :3

    Okay so i tried the plugin but the command doesnt work ;o But there is no error in the logs
    Code:
    package net.skydevs.src;
     
    import java.util.HashMap;
    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.plugin.java.JavaPlugin;
    import org.kitteh.tag.PlayerReceiveNameTagEvent;
     
    public class LBName extends JavaPlugin implements Listener {
        HashMap<String, ChatColor> tags = new HashMap<String, ChatColor>();
     
        public void onEnable() { // Server Starts
            getLogger().info("LBName has been enabled!");
        }
     
        public void onDisable() { // Server Stops
            getLogger().info("LBName has been disabled!");
        }
       
        public boolean onCommand(CommandSender sender, Command cmd, String Label,
                String[] args) {
       
        if(args.length == 3){
              String target = args[1];
              ChatColor color = ChatColor.getByChar(args[2]);
              tags.put(target, color);
              return true;
            } else {
            Player player = (Player) sender;
              player.sendMessage(ChatColor.RED + "Usage: /namecolor <player> <color>!");
              return true;
            }
        }
       
        @EventHandler
        public void onNameTag(PlayerReceiveNameTagEvent event) {
            event.setTag(tags.get(event.getNamedPlayer().getName()) + event.getNamedPlayer().getName());
        }
    }
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 31, 2016
  6. Offline

    microgeek

    All of these issues could have been resolved by reading the JavaDocs on Bukkit, and/or learning proper Java before trying to program with it.
     
  7. Offline

    linkrock4

    But do you have an idea why it doesnt work?
     
  8. Offline

    microgeek

    Sloppy, copy and pasted code maybe?
    :rolleyes:
     
  9. Offline

    linkrock4

    I did the Cleanup link in Eclipse which cleans everything in your Eclipse:
    Code:
    package net.skydevs.src;
     
    import java.util.HashMap;
     
    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.plugin.java.JavaPlugin;
    import org.kitteh.tag.PlayerReceiveNameTagEvent;
     
    public class LBName extends JavaPlugin implements Listener {
        HashMap<String, ChatColor> tags = new HashMap<String, ChatColor>();
     
        @Override
        public void onEnable() { // Server Starts
            getLogger().info("LBName has been enabled!");
        }
     
        @Override
        public void onDisable() { // Server Stops
            getLogger().info("LBName has been disabled!");
        }
       
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String Label,
                String[] args) {
       
        if(args.length == 3){
              String target = args[1];
              ChatColor color = ChatColor.getByChar(args[2]);
              tags.put(target, color);
              return true;
            } else {
            Player player = (Player) sender;
              player.sendMessage(ChatColor.RED + "Usage: /namecolor <player> <color>!");
              return true;
            }
        }
       
        @EventHandler
        public void onNameTag(PlayerReceiveNameTagEvent event) {
            event.setTag(tags.get(event.getNamedPlayer().getName()) + event.getNamedPlayer().getName());
        }
    }
     
  10. Offline

    ZeusAllMighty11

    You need a plugin.yml file with the command as well
     
  11. Offline

    linkrock4

    I do have that :p
    Code:
    name: LBName
    main: net.skydevs.src.LBName
    version: 1.0
     
    commands:
        NameColor:
          description: Change a players color :D
          usage: /namecolor <player> <color>
     
  12. Offline

    microgeek

    I was implying more copy and pasted than sloppy. Read over the code, and work it out yourself, it works wonders.
     
  13. Offline

    linkrock4

    This is the error i get if i try the command in the console:
    Code:
    [WARNING] Unexpected exception while parsing console command "namecolor"
    org.bukkit.command.CommandException: Unhandled exception executing command 'namecolor' in plugin LBName v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186)
        at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchCommand(CraftServer.java:514)
        at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchServerCommand(CraftServer.java:506)
        at net.minecraft.server.v1_4_R1.DedicatedServer.al(DedicatedServer.java:260)
        at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:225)
        at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494)
        at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427)
        at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
    Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_4_R1.command.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player
        at net.skydevs.src.LBName.onCommand(LBName.java:36)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
        ... 8 more
    2013-01-28 21:46:45 [INFO] Starting minecraft server version 1.4.7
    2013-01-28 21:46:45 [INFO] Loading properties
    2013-01-28 21:46:45 [INFO] Default game type: SURVIVAL
    2013-01-28 21:46:45 [INFO] Generating keypair
    2013-01-28 21:46:45 [INFO] Starting Minecraft server on *:25565
    2013-01-28 21:46:45 [INFO] This server is running CraftBukkit version git-Bukkit-1.4.7-R0.1-b2602jnks (MC: 1.4.7) (Implementing API version 1.4.7-R0.1)
    2013-01-28 21:46:46 [INFO] [LBWelcome] Loading LBWelcome v1.0
    2013-01-28 21:46:46 [INFO] [LBName] Loading LBName v1.0
    2013-01-28 21:46:46 [INFO] [Christmas] Loading Christmas v1.0
    2013-01-28 21:46:46 [INFO] [iEmotions] Loading iEmotions v2.0
    2013-01-28 21:46:46 [INFO] [TagAPI] Loading TagAPI v1.9.3
    2013-01-28 21:46:46 [INFO] Preparing level "world"
    2013-01-28 21:46:46 [INFO] Preparing start region for level 0 (Seed: 1062995574074118813)
    2013-01-28 21:46:46 [INFO] ----- Bukkit Auto Updater -----
    2013-01-28 21:46:46 [INFO] It appears that you're running a Beta Build, when you've specified in bukkit.yml that you prefer to run Recommended Builds.
    2013-01-28 21:46:46 [INFO] If you would like to be kept informed about new Beta Build releases, it is recommended that you change 'preferred-channel' in your bukkit.yml to 'beta'.
    2013-01-28 21:46:46 [INFO] With that set, you will be told whenever a new version is available for download, so that you can always keep up to date and secure with the latest fixes.
    2013-01-28 21:46:46 [INFO] If you would like to disable this warning, simply set 'suggest-channels' to false in bukkit.yml.
    2013-01-28 21:46:46 [INFO] ----- ------------------- -----
    2013-01-28 21:46:47 [INFO] Preparing spawn area: 24%
    2013-01-28 21:46:48 [INFO] Preparing spawn area: 32%
    2013-01-28 21:46:49 [INFO] Preparing spawn area: 36%
    2013-01-28 21:46:50 [INFO] Preparing spawn area: 44%
    2013-01-28 21:46:51 [INFO] Preparing spawn area: 52%
    2013-01-28 21:46:52 [INFO] Preparing spawn area: 61%
    2013-01-28 21:46:53 [INFO] Preparing spawn area: 65%
    2013-01-28 21:46:54 [INFO] Preparing spawn area: 73%
    2013-01-28 21:46:55 [INFO] Preparing spawn area: 81%
    2013-01-28 21:46:56 [INFO] Preparing start region for level 1 (Seed: 1062995574074118813)
    2013-01-28 21:46:56 [INFO] Preparing spawn area: 4%
    2013-01-28 21:46:57 [INFO] Preparing spawn area: 81%
    2013-01-28 21:46:58 [INFO] Preparing start region for level 2 (Seed: 1062995574074118813)
    2013-01-28 21:46:58 [INFO] Preparing spawn area: 52%
    2013-01-28 21:46:58 [INFO] [LBWelcome] Enabling LBWelcome v1.0
    2013-01-28 21:46:58 [INFO] [LBWelcome] LB Welcome has been enabled!
    2013-01-28 21:46:58 [INFO] [LBName] Enabling LBName v1.0
    2013-01-28 21:46:58 [INFO] [LBName] LBName has been enabled!
    2013-01-28 21:46:58 [INFO] [Christmas] Enabling Christmas v1.0
    2013-01-28 21:46:58 [INFO] [Christmas] Christmas Plugin has been enabled!
    2013-01-28 21:46:58 [INFO] [Christmas] Checking already loaded chunks for snowy areas...
    2013-01-28 21:46:59 [INFO] [iEmotions] Enabling iEmotions v2.0
    2013-01-28 21:46:59 [INFO] [iEmotions] iEmotions has been enabled!
    2013-01-28 21:46:59 [INFO] [TagAPI] Enabling TagAPI v1.9.3
    2013-01-28 21:46:59 [INFO] [TagAPI] Using hooks for CraftBukkit v1_4_R1
    2013-01-28 21:46:59 [INFO] Server permissions file permissions.yml is empty, ignoring it
    2013-01-28 21:46:59 [INFO] Done (13.915s)! For help, type "help" or "?"
    2013-01-28 21:47:01 [WARNING] Unexpected exception while parsing console command "namecolor"
    org.bukkit.command.CommandException: Unhandled exception executing command 'namecolor' in plugin LBName v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186)
        at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchCommand(CraftServer.java:514)
        at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchServerCommand(CraftServer.java:506)
        at net.minecraft.server.v1_4_R1.DedicatedServer.al(DedicatedServer.java:260)
        at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:225)
        at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494)
        at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427)
        at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
    Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_4_R1.command.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player
        at net.skydevs.src.LBName.onCommand(LBName.java:36)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
        ... 8 more
    
    If i try it ingame nothing happens, it only sends me: Usage: /namecolor <player> <color>!
     
  14. Offline

    ZeusAllMighty11

    You need to check if(sender instanceof Player) to make sure console can't do it.
     
  15. Offline

    CubixCoders

    You check if the args are 3 words long. E.g. /namecolor <name> <color> is only 2 args. /namecolor doesn't count as an arg so the command never gets ran. Use /namecolor blah red anything and it should work.
     
  16. Offline

    linkrock4

    It should honestly work right now but it doesnt... wtf
    Code:
    package net.skydevs.src;
    import java.util.HashMap;
     
    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.plugin.java.JavaPlugin;
    import org.kitteh.tag.PlayerReceiveNameTagEvent;
     
    public class LBName extends JavaPlugin implements Listener {
        HashMap<String, ChatColor> tags = new HashMap<String, ChatColor>();
     
        @Override
        public void onEnable() { // Server Starts
            getLogger().info("LBName has been enabled!");
        }
     
        @Override
        public void onDisable() { // Server Stops
            getLogger().info("LBName has been disabled!");
        }
       
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String Label,
                String[] args) {
       
        if(args.length == 2){
              String target = args[1];
              ChatColor color = ChatColor.getByChar(args[1]);
              tags.put(target, color);
              return true;
            } else {
                Player player = (Player) sender;
              player.sendMessage(ChatColor.RED + "Usage: /namecolor <player> <color>!");
              return true;
            }
        }
     
        @EventHandler
        public void onNameTag(PlayerReceiveNameTagEvent event) {
            event.setTag(tags.get(event.getNamedPlayer().getName()) + event.getNamedPlayer().getName());
        }
    }
     
  17. Offline

    chasechocolate

    Did you see what ZeusAllMighty11 said?
    Code:java
    1. package net.skydevs.src;
    2. import java.util.HashMap;
    3.  
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.plugin.java.JavaPlugin;
    11. import org.kitteh.tag.PlayerReceiveNameTagEvent;
    12.  
    13. public class LBName extends JavaPlugin implements Listener {
    14. HashMap<String, ChatColor> tags = new HashMap<String, ChatColor>();
    15.  
    16. @Override
    17. public void onEnable() { // Server Starts
    18. getLogger().info("LBName has been enabled!");
    19. }
    20.  
    21. @Override
    22. public void onDisable() { // Server Stops
    23. getLogger().info("LBName has been disabled!");
    24. }
    25.  
    26. @Override
    27. public boolean onCommand(CommandSender sender, Command cmd, String Label,
    28. String[] args) {
    29.  
    30. if(!(sender instanceof Player)){
    31. sender.sendMessage(ChatColor.RED + "Player only!");
    32. return true;
    33. }
    34. if(args.length == 3){
    35. String target = args[1];
    36. ChatColor color = ChatColor.getByChar(args[2]);
    37. tags.put(target, color);
    38. return true;
    39. } else {
    40. Player player = (Player) sender;
    41. player.sendMessage(ChatColor.RED + "Usage: /namecolor <player> <color>!");
    42. return true;
    43. }
    44. }
    45.  
    46. @EventHandler
    47. public void onNameTag(PlayerReceiveNameTagEvent event) {
    48. event.setTag(tags.get(event.getNamedPlayer().getName()) + event.getNamedPlayer().getName());
    49. }
    50. }
     
    Codex Arcanum likes this.
  18. Offline

    ZeusAllMighty11

Thread Status:
Not open for further replies.

Share This Page