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.
This is how I would do it: Code:java HashMap<String, ChatColor> tags = new HashMap<String, ChatColor>();//In your onCommand boolean: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;}//In your PlayerReceiveNameTagEvent set the tag by using:event.setTag(tags.get(event.getNamedPlayer().getName()) + event.getNamedPlayer().getName());
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?
Thanks very much guys 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.
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.
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()); } }
I do have that Code: name: LBName main: net.skydevs.src.LBName version: 1.0 commands: NameColor: description: Change a players color :D usage: /namecolor <player> <color>
I was implying more copy and pasted than sloppy. Read over the code, and work it out yourself, it works wonders.
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>!
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.
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()); } }
Did you see what ZeusAllMighty11 said? Code:java 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(!(sender instanceof Player)){ sender.sendMessage(ChatColor.RED + "Player only!"); return true; } 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()); }}