Solved Unknown Command ....

Discussion in 'Plugin Development' started by Mathias Eklund, Jul 12, 2013.

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

    Mathias Eklund

    Hello, I get the Unknown command error when i execute the command /getip, it should work but it isn't, Is there anything wrong with the code? I will post the code and the plugin.yml :)

    Command Code. V
    Code:java
    1. if (cmd.getName().equalsIgnoreCase("getip")) {
    2. Player player = (Player) sender;
    3. if (sender.hasPermission("hammerfall.getip")) {
    4. if (args.length == 0) {
    5. sender.sendMessage(ChatColor.GRAY
    6. + "Must specify a target.");
    7. } else if (args.length == 1) {
    8. Player targetPlayer = player.getServer().getPlayer(args[0]);
    9. player.sendMessage(ChatColor.GRAY + " IP is "
    10. + targetPlayer.getAddress());
    11. }
    12. } else {
    13. sender.sendMessage(ChatColor.RED
    14. + "You don't have permissions for this command!");
    15. }
    16. }


    Plugin.yml V
    Code:
    name: HammerfallCmds
    version: 0.1
    description: The basic commands of the server
    author: DojmGubbeN
    main: me.dojmgubben.hammerfall.Hammerfall
    prefix: HFC
    commands:
      mute:
        description: Mute a player
        usage: /mute <player> [seconds]
      getip:
        description: Get's the ip of a player
        usage: /getip <player>
      unmute:
        description: Unmute a player
        usage: /unmute <player>
      rules:
        description: Shows the rules
        usage: /<command>
      butcher:
        description: Kill all the things
        usage: /<command>
      tpa:
        description: Request to teleport to a player
        usage: /tpa <player>
      tphere:
        description: Request a player teleports to you
        usage:  /tphere <player>
      tpaccept:
        description: accept a teleport request
        usage:  /tpaccept
      tpdeny:
        description: deny a teleport request
        usage:  /tpdeny
      suicide:
        description: Tired of living? SUICIDE!
        usage:  /suicide
      fly:
        description: Tired of waking? FLY!
        usage:  /fly <player> <time>
      spawn:
        description: Go to spawn.
        usage:  /spawn
    
     
  2. Offline

    kreashenz

    Are you registering the commands in a different class? Have you registered the command properly?
     
  3. Offline

    Mathias Eklund

    The command is in the main class, I can't post the whole main class for you too see more clearly :)


    Show Spoiler

    Code:java
    1. package me.dojmgubben.hammerfall;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.HashMap;
    5. import java.util.List;
    6. import java.util.logging.Logger;
    7.  
    8. import org.bukkit.Bukkit;
    9. import org.bukkit.ChatColor;
    10. import org.bukkit.command.Command;
    11. import org.bukkit.command.CommandSender;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.metadata.FixedMetadataValue;
    14. import org.bukkit.metadata.MetadataValue;
    15. import org.bukkit.plugin.PluginDescriptionFile;
    16. import org.bukkit.plugin.java.JavaPlugin;
    17.  
    18. public class Hammerfall extends JavaPlugin {
    19. public final static Logger logger = Logger.getLogger("Minecraft");
    20. public static Hammerfall plugin;
    21. private FlyCommand flycmd;
    22. HashMap<String, String> PS = new HashMap<String, String>();
    23. HashMap<String, Boolean> ToFrom = new HashMap<String, Boolean>();
    24. public final ArrayList<Player> users = new ArrayList<Player>();
    25.  
    26. public void onDisable() {
    27. PluginDescriptionFile pdfFile = getDescription();
    28. Hammerfall.logger.info(pdfFile.getName() + " has been disabled.");
    29. saveConfig();
    30. for (Player p : this.flycmd.flying) {
    31. p.setFlying(false);
    32. p.setAllowFlight(false);
    33. }
    34. }
    35.  
    36. public void onEnable() {
    37. PluginDescriptionFile pdfFile = getDescription();
    38. Hammerfall.logger.info(pdfFile.getName() + " Version: "
    39. + pdfFile.getVersion() + " has been enabled.");
    40. getConfig().options().copyDefaults(true);
    41. saveConfig();
    42. getServer().getPluginManager().registerEvents(new MuteListener(this),
    43. this);
    44. getCommand("mute").setExecutor(new MuteCommand(this));
    45. getCommand("unmute").setExecutor(new UnmuteCommand(this));
    46. this.flycmd = new FlyCommand(this);
    47. getCommand("fly").setExecutor(this.flycmd);
    48.  
    49.  
    50. }
    51.  
    52. public boolean onCommand(CommandSender sender, Command cmd, String label,
    53. String[] args) {
    54. if (cmd.getName().equalsIgnoreCase("rules")
    55. && sender.hasPermission("hammerfall.rules")) {
    56. if (args.length > 0) {
    57. if (args[0].equalsIgnoreCase(("survival"))) {
    58. Player player = (Player) sender;
    59. if (player.hasPermission("hammerfall.rules"))
    60. sender.sendMessage(ChatColor.GRAY
    61. + getConfig().getString("survival-rules"));
    62. else {
    63. sender.sendMessage(ChatColor.DARK_RED
    64. + "You don't have permission to do this!");
    65. }
    66.  
    67. }
    68. if (args[0].equalsIgnoreCase(("building"))) {
    69. Player player = (Player) sender;
    70. if (player.hasPermission("hammerfall.rules")) {
    71. sender.sendMessage(ChatColor.GRAY
    72. + getConfig().getString("building-rules"));
    73. } else {
    74. sender.sendMessage(ChatColor.DARK_RED
    75. + "You don't have permission to do this!");
    76. }
    77.  
    78. }
    79.  
    80. if (args[0].equalsIgnoreCase(("pvp"))) {
    81. Player player = (Player) sender;
    82. if (player.hasPermission("hammerfall.rules"))
    83. sender.sendMessage(ChatColor.GRAY
    84. + getConfig().getString("pvp-rules"));
    85.  
    86. else {
    87. sender.sendMessage(ChatColor.DARK_RED
    88. + "You don't have permission to do this!");
    89. }
    90.  
    91. }
    92. if (args[0].equalsIgnoreCase(("chat"))) {
    93. Player player = (Player) sender;
    94. if (player.hasPermission("hammerfall.rules"))
    95. sender.sendMessage(ChatColor.GRAY
    96. + getConfig().getString("chat-rules"));
    97.  
    98. else {
    99. sender.sendMessage(ChatColor.DARK_RED
    100. + "You don't have permission to do this!");
    101. }
    102.  
    103. }
    104. if (args[0].equalsIgnoreCase(("roleplay"))) {
    105. Player player = (Player) sender;
    106. if (player.hasPermission("hammerfall.rules"))
    107. sender.sendMessage(ChatColor.GRAY
    108. + getConfig().getString("roleplay-rules"));
    109. else {
    110. sender.sendMessage(ChatColor.DARK_RED
    111. + "You don't have permission to do this!");
    112. }
    113.  
    114. }
    115.  
    116. if (args[0].equalsIgnoreCase("help")
    117. || ((args[0].equalsIgnoreCase("?")))) {
    118. sender.sendMessage(ChatColor.LIGHT_PURPLE
    119. + "Displaying Rules options" + ChatColor.WHITE
    120. + ":");
    121. sender.sendMessage("");
    122. sender.sendMessage(ChatColor.GRAY + "/rules " + "survival");
    123. sender.sendMessage(ChatColor.GRAY + "/rules " + "building");
    124. sender.sendMessage(ChatColor.GRAY + "/rules " + "pvp");
    125. sender.sendMessage(ChatColor.GRAY + "/rules " + "chat");
    126. sender.sendMessage(ChatColor.GRAY + "/rules " + "roleplay");
    127. }
    128. } else {
    129. sender.sendMessage(ChatColor.LIGHT_PURPLE
    130. + "Displaying Rules options" + ChatColor.WHITE + ":");
    131. sender.sendMessage("");
    132. sender.sendMessage(ChatColor.GRAY + "/rules " + "survival");
    133. sender.sendMessage(ChatColor.GRAY + "/rules " + "building");
    134. sender.sendMessage(ChatColor.GRAY + "/rules " + "pvp");
    135. sender.sendMessage(ChatColor.GRAY + "/rules " + "chat");
    136. sender.sendMessage(ChatColor.GRAY + "/rules " + "roleplay");
    137. }
    138. return true;
    139.  
    140. }
    141. if (cmd.getName().equalsIgnoreCase("suicide")) {
    142. Player player = (Player) sender;
    143. if (sender.hasPermission("hammerfall.suicide")) {
    144. player.setHealth(0);
    145. }
    146. }
    147. // insert new commands here v
    148. if (cmd.getName().equalsIgnoreCase("getip")) {
    149. Player player = (Player) sender;
    150. if (sender.hasPermission("hammerfall.getip")) {
    151. if (args.length == 0) {
    152. sender.sendMessage(ChatColor.GRAY
    153. + "Must specify a target.");
    154. } else if (args.length == 1) {
    155. Player targetPlayer = player.getServer().getPlayer(args[0]);
    156. player.sendMessage(ChatColor.GRAY + " IP is "
    157. + targetPlayer.getAddress());
    158. }
    159. } else {
    160. sender.sendMessage(ChatColor.RED
    161. + "You don't have permissions for this command!");
    162. }
    163. }
    164. if (cmd.getName().equalsIgnoreCase("spawn")) {
    165. Player player = (Player) sender;
    166. if (sender.hasPermission("hammerfall.spawn")) {
    167. player.chat("/mv spawn");
    168. }
    169. if (cmd.getName().equalsIgnoreCase("tpa")) {
    170. if (args.length == 0)
    171. return false;
    172. if (args.length == 1)
    173. if ((sender instanceof Player)) {
    174. Player p = (Player) sender;
    175. if (p.hasPermission("Hammerfall.tpa")) {
    176. Player target = Bukkit.getServer().getPlayer(
    177. args[0]);
    178. if (target == null) {
    179. p.sendMessage(ChatColor.GRAY + args[0]
    180. + " is not online!");
    181. return true;
    182. }
    183. if (p.getLocation().getWorld().getName() == target
    184. .getLocation().getWorld().getName()) {
    185. PlayerCooldown pc = Cooldown.getCooldown(
    186. target.getName(), p.getName());
    187. if (pc == null) {
    188. Cooldown.addCooldown(
    189. target.getName(),
    190. p.getName(),
    191. getConfig().getInt("Cooldown") * 1000);
    192. p.sendMessage(ChatColor.GRAY
    193. + "Sending Request!");
    194. target.sendMessage(ChatColor.GRAY
    195. + p.getName()
    196. + " wants to teleport to you!");
    197. target.sendMessage(ChatColor.GRAY
    198. + p.getName()
    199. + " use /tpaccept or /tpdeny");
    200. this.PS.put(target.getName(), p.getName());
    201. this.ToFrom.put(target.getName(),
    202. Boolean.valueOf(true));
    203. return true;
    204. }
    205. if (pc.isOver()) {
    206. Cooldown.addCooldown(
    207. target.getName(),
    208. p.getName(),
    209. getConfig().getInt("Cooldown") * 1000);
    210. p.sendMessage(ChatColor.GRAY
    211. + "Sending Request!");
    212. target.sendMessage(ChatColor.GRAY
    213. + p.getName()
    214. + " wants to teleport to you!");
    215. target.sendMessage(ChatColor.GRAY
    216. + p.getName()
    217. + " use /tpaccept or /tpdeny");
    218. this.PS.put(target.getName(), p.getName());
    219. this.ToFrom.put(target.getName(),
    220. Boolean.valueOf(true));
    221. return true;
    222. }
    223. p.sendMessage(ChatColor.GRAY
    224. + "Please be patient.");
    225. return true;
    226. }
    227.  
    228. target.sendMessage(ChatColor.GRAY
    229. + p.getName()
    230. + args[0]
    231. + " is not in the same world as you! Cannot teleport!");
    232. return true;
    233. }
    234. } else {
    235. getLogger().info("Cannot be run from console!");
    236. return true;
    237. }
    238. } else if (cmd.getName().equalsIgnoreCase("tphere")) {
    239. if (args.length == 0)
    240. return false;
    241. if (args.length == 1)
    242. if ((sender instanceof Player)) {
    243. Player p = (Player) sender;
    244. if (p.hasPermission("Hammerfall.tphere")) {
    245. Player target = Bukkit.getServer().getPlayer(
    246. args[0]);
    247. if (target == null) {
    248. p.sendMessage(ChatColor.GRAY + args[0]
    249. + " is not online!");
    250. return true;
    251. }
    252. if (p.getLocation().getWorld().getName() == target
    253. .getLocation().getWorld().getName()) {
    254. PlayerCooldown pc = Cooldown.getCooldown(
    255. target.getName(), p.getName());
    256. if (pc == null) {
    257. Cooldown.addCooldown(
    258. target.getName(),
    259. p.getName(),
    260. getConfig().getInt("Cooldown") * 1000);
    261. p.sendMessage(ChatColor.GRAY
    262. + "Sending Request!");
    263. target.sendMessage(ChatColor.GRAY
    264. + p.getName()
    265. + " wants you to teleport to them!");
    266. target.sendMessage(ChatColor.GRAY
    267. + p.getName()
    268. + " use /tpaccept or /tpdeny");
    269. this.PS.put(target.getName(), p.getName());
    270. this.ToFrom.put(target.getName(),
    271. Boolean.valueOf(false));
    272. return true;
    273. }
    274. if (pc.isOver()) {
    275. Cooldown.addCooldown(
    276. target.getName(),
    277. p.getName(),
    278. getConfig().getInt("Cooldown") * 1000);
    279. p.sendMessage(ChatColor.GRAY
    280. + "Sending Request!");
    281. target.sendMessage(ChatColor.GRAY
    282. + p.getName()
    283. + " wants to teleport to you!");
    284. target.sendMessage(ChatColor.GRAY
    285. + p.getName()
    286. + " use /tpaccept or /tpdeny");
    287. this.PS.put(target.getName(), p.getName());
    288. this.ToFrom.put(target.getName(),
    289. Boolean.valueOf(false));
    290. return true;
    291. }
    292. p.sendMessage(ChatColor.GRAY
    293. + "Please be patient.");
    294. return true;
    295. }
    296.  
    297. target.sendMessage(ChatColor.GRAY
    298. + p.getName()
    299. + args[0]
    300. + " is not in the same world as you! Cannot teleport!");
    301. return true;
    302. }
    303. } else {
    304. getLogger().info("Cannot be run from console!");
    305. return true;
    306. }
    307. } else if (cmd.getName().equalsIgnoreCase("tpaccept")) {
    308. if (args.length == 0)
    309. if ((sender instanceof Player)) {
    310. Player p = (Player) sender;
    311. if (p.hasPermission("HammerfallTP.tpaccept")) {
    312. PlayerCooldown pc = Cooldown.getCooldown(
    313. p.getName(),
    314. (String) this.PS.get(p.getName()));
    315. if (pc == null) {
    316. p.sendMessage(ChatColor.GRAY
    317. + "You have no TP request!");
    318. return true;
    319. }
    320. if (pc.isOver()) {
    321. p.sendMessage(ChatColor.GRAY
    322. + "You have no TP request!");
    323. return true;
    324. }
    325. Player requester = Bukkit.getServer().getPlayer(
    326. (String) this.PS.get(p.getName()));
    327. if (requester == null) {
    328. p.sendMessage(ChatColor.GRAY + args[0]
    329. + " is no longer online!");
    330. return true;
    331. }
    332. if (p.getLocation().getWorld().getName() == requester
    333. .getLocation().getWorld().getName()) {
    334. if (((Boolean) this.ToFrom.get(p.getName()))
    335. .booleanValue()) {
    336. p.sendMessage(ChatColor.GRAY
    337. + "Teleporting...");
    338. requester.teleport(p);
    339. return true;
    340. }
    341. p.sendMessage(ChatColor.GRAY + "Teleporting...");
    342. p.teleport(requester);
    343. return true;
    344. }
    345.  
    346. p.sendMessage(ChatColor.GRAY
    347. + p.getName()
    348. + args[0]
    349. + " is not in the same world as you! Cannot teleport!");
    350. return true;
    351. }
    352.  
    353. } else {
    354. getLogger().info("Cannot be run from console!");
    355. return true;
    356. }
    357. } else if ((cmd.getName().equalsIgnoreCase("tpdeny"))
    358. && (args.length == 0)) {
    359. if ((sender instanceof Player)) {
    360. Player p = (Player) sender;
    361. if (p.hasPermission("hammerfall.tpdeny")) {
    362. PlayerCooldown pc = Cooldown.getCooldown(p.getName(),
    363. (String) this.PS.get(p.getName()));
    364. if (pc == null) {
    365. p.sendMessage(ChatColor.GRAY
    366. + "You have no TP request!");
    367. return true;
    368. }
    369. if (pc.isOver()) {
    370. p.sendMessage(ChatColor.GRAY
    371. + "You have no TP request!");
    372. return true;
    373. }
    374. Player target = Bukkit.getServer().getPlayer(
    375. (String) this.PS.get(p.getName()));
    376. if (target == null) {
    377. p.sendMessage(ChatColor.GRAY + "Request denied!");
    378. return true;
    379. }
    380. p.sendMessage(ChatColor.GRAY + "Request denied!");
    381. target.sendMessage(ChatColor.GRAY
    382. + "Your request was denied!");
    383. return true;
    384. }
    385. } else {
    386. getLogger().info("Cannot be run from console!");
    387. return true;
    388. }
    389.  
    390. }
    391. }
    392. return false;
    393. }
    394.  
    395. public void mute(Player player) {
    396. player.setMetadata("mute",
    397. new FixedMetadataValue(this, Boolean.valueOf(true)));
    398. }
    399.  
    400. public void muteForTime(Player player, long seconds) {
    401. mute(player);
    402. new UnmuteTask(this, player).runTaskLater(this, seconds * 20L);
    403. }
    404.  
    405. public void unmute(Player player) {
    406. player.setMetadata("mute",
    407. new FixedMetadataValue(this, Boolean.valueOf(false)));
    408. }
    409.  
    410. public boolean isMuted(Player player) {
    411. List<MetadataValue> values = player.getMetadata("mute");
    412. for (MetadataValue value : values) {
    413. if (value.getOwningPlugin().getDescription().getName()
    414. .equals(getDescription().getName())) {
    415. if (value.asBoolean()) {
    416. return true;
    417. }
    418. return false;
    419. }
    420. }
    421.  
    422. player.setMetadata("mute",
    423. new FixedMetadataValue(this, Boolean.valueOf(false)));
    424. return false;
    425. }
    426.  
    427. public boolean enabled(Player player) {
    428. return this.users.contains(player);
    429. }
    430.  
    431. public void ConfigReload() {
    432. reloadConfig();
    433. }
    434.  
    435. }

     
  4. Offline

    kreashenz

    I can't see why it's not working.. Are you exporting it correctly?
     
  5. Offline

    Mathias Eklund

    Yeah i am, i have no idea what is wrong with the shitz, thats why i'm asking here.
     
  6. Offline

    xTrollxDudex

    Mathias Eklund
    If you register command executors in your class you have to make it extend CommandExecutor or implement I don't remember.
    Why do you event need to register your commands in the class? You don't need to do that
     
  7. Offline

    Mathias Eklund

    Ok, i fixed it, just had to delete all plugins and re export them :)
     
Thread Status:
Not open for further replies.

Share This Page