what am i doing wrong

Discussion in 'Plugin Development' started by kamakarzy, May 12, 2013.

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

    kamakarzy

    can someone please tell me why i have this error

    Code:java
    1. package com.gmail.nomad856.kamakarzy;
    2.  
    3. import java.util.HashMap;
    4. import java.util.logging.Logger;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.ChatColor;
    8. import org.bukkit.EntityEffect;
    9. import org.bukkit.Location;
    10. import org.bukkit.command.Command;
    11. import org.bukkit.command.CommandSender;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.entity.Wolf;
    14. import org.bukkit.plugin.PluginDescriptionFile;
    15. import org.bukkit.plugin.java.JavaPlugin;
    16. import org.bukkit.scheduler.BukkitRunnable;
    17.  
    18. public class Main extends JavaPlugin {
    19. public final Logger logger = Logger.getLogger("Minecraft");
    20. public static Main plugin;
    21. public HashMap<String, String> marriage = new HashMap<String, String>();
    22. public huggsconfigManager manager;
    23.  
    24. public huggsconfig config;
    25. public huggsconfig messages;
    26.  
    27. @Override
    28. public void onEnable() {
    29. getServer().getLogger();
    30. this.manager = new huggsconfigManager(this);
    31.  
    32. this.config = manager.getNewConfig("marriges.yml");
    33.  
    34. this.config.saveConfig();
    35. getConfig().options().copyDefaults(true);
    36. saveConfig();
    37. }
    38.  
    39. @Override
    40. public void onDisable() {
    41. getServer().getLogger();
    42. }
    43.  
    44. public void hearts(Player p) {
    45. Wolf o = p.getWorld().spawn(p.getLocation(), Wolf.class);
    46. o.playEffect(EntityEffect.WOLF_HEARTS);
    47. o.remove();
    48. }
    49.  
    50. public void Villager(Player p) {
    51. org.bukkit.entity.Villager v = p.getWorld().spawn(p.getLocation(),
    52. org.bukkit.entity.Villager.class);
    53. v.setBaby();
    54. }
    55.  
    56. public boolean onCommand(CommandSender sender, Command cmd,
    57. String commandLabel, String[] args) {
    58.  
    59. if (cmd.getName().equalsIgnoreCase("hugs")) {
    60. if (sender instanceof Player) {
    61. if (args.length > 0) {
    62. Player target = Bukkit.getPlayer(args[0]);
    63. if (target != null) {
    64. final Player player = (Player) sender;
    65. Location playerLoc = player.getLocation();
    66. Location targetLoc = target.getLocation();
    67.  
    68. if (playerLoc.getWorld().getUID()
    69. .equals(targetLoc.getWorld().getUID())) {
    70. if (playerLoc.distanceSquared(targetLoc) < 4)
    71. if (player
    72. .hasPermission(new Permisssions().hug)) {
    73. {
    74. BukkitRunnable run = new BukkitRunnable() {
    75. private int count = 0;
    76.  
    77. @Override
    78. public void run() {
    79. if (count >= getConfig()
    80. .getInt("Hug_Time")) {
    81. this.cancel();
    82. return;
    83. }
    84. hearts(player);
    85. count++;
    86.  
    87. }
    88.  
    89. };
    90. run.runTaskTimer(this, 0L, 20L);
    91.  
    92. target.sendMessage((ChatColor
    93. .translateAlternateColorCodes(
    94. '&',
    95. getConfig()
    96. .getString(
    97. "Reciever_Message")
    98. .replace(
    99. "%P",
    100. target.getName())
    101. .replace(
    102. "%S",
    103. sender.getName()))));
    104. player.sendMessage((ChatColor
    105. .translateAlternateColorCodes(
    106. '&',
    107. getConfig()
    108. .getString(
    109. "Sender_Message")
    110. .replace(
    111. "%P",
    112. target.getName())
    113. .replace(
    114. "%S",
    115. sender.getName()))));
    116. return true;
    117. }
    118. } else {
    119. player.sendMessage(ChatColor.RED
    120. + "YOU DO NOT HAVE PERMISSION TO HUG");
    121. return true;
    122. }
    123. else {
    124. sender.sendMessage(target.getDisplayName()
    125. + ChatColor.RED + " is too far away.");
    126. return true;
    127. }
    128. } else {
    129. sender.sendMessage(target.getDisplayName()
    130. + ChatColor.RED
    131. + " is not in the same world as you.");
    132. return true;
    133. }
    134. } else {
    135. sender.sendMessage(ChatColor.RED
    136. + "Can't find player: " + args[0]);
    137. return true;
    138. }
    139. } else {
    140. return false; // print usage
    141. }
    142. } else {
    143. sender.sendMessage("This command can only be used by a player.");
    144. return true;
    145. }
    146. } else if (cmd.getName().equalsIgnoreCase("kiss")) {
    147. if (sender instanceof Player) {
    148. if (args.length > 0) {
    149. Player target = Bukkit.getPlayer(args[0]);
    150.  
    151. if (target != null) {
    152. final Player player = (Player) sender;
    153. Location playerLoc = player.getLocation();
    154. Location targetLoc = target.getLocation();
    155.  
    156. if (playerLoc.getWorld().getUID()
    157. .equals(targetLoc.getWorld().getUID())) {
    158. if (playerLoc.distanceSquared(targetLoc) < 4)
    159. if (player
    160. .hasPermission(new Permisssions().kiss)) {
    161. {
    162. BukkitRunnable run = new BukkitRunnable() {
    163.  
    164. private int count = 0;
    165.  
    166. @Override
    167. public void run() {
    168. if (count >= getConfig()
    169. .getInt("Kiss_Time")) {
    170. this.cancel();
    171. return;
    172. }
    173. hearts(player);
    174. count++;
    175.  
    176. }
    177.  
    178. };
    179. run.runTaskTimer(this, 0L, 20L);
    180.  
    181. if (getConfig().get("SPAWN_BABY")
    182. .equals(true)) {
    183. Villager(player);
    184. }
    185. target.sendMessage(ChatColor
    186. .translateAlternateColorCodes(
    187. '&',
    188. getConfig()
    189. .getString(
    190. "Kiss_Message_Reciever")
    191. .replace(
    192. "%P",
    193. target.getName())
    194. .replace(
    195. "%S",
    196. sender.getName())));
    197. player.sendMessage((ChatColor
    198. .translateAlternateColorCodes(
    199. '&',
    200. getConfig()
    201. .getString(
    202. "Kiss_Message_Sender")
    203. .replace(
    204. "%P",
    205. target.getName())
    206. .replace(
    207. "%S",
    208. sender.getName()))));
    209. }
    210. } else {
    211. player.sendMessage(ChatColor.RED
    212. + "YOU DO NOT HAVE PERMISSION TO HUG");
    213. return true;
    214. }
    215. else {
    216. sender.sendMessage(target.getDisplayName()
    217. + ChatColor.RED + " is too far away.");
    218. return true;
    219. }
    220. } else {
    221. sender.sendMessage(target.getDisplayName()
    222. + ChatColor.RED
    223. + " is not in the same world as you.");
    224. return true;
    225. }
    226. } else {
    227. sender.sendMessage(ChatColor.RED
    228. + "Can't find player: " + args[0]);
    229. return true;
    230. }
    231. } else {
    232. return false;
    233. }
    234. } else {
    235. sender.sendMessage("This command can only be used by a player.");
    236. return true;
    237. }
    238. } else if (cmd.getName().equalsIgnoreCase("willyoumarryme")) {
    239. if (sender instanceof Player) {
    240. if (args.length > 0) {
    241. Player target = Bukkit.getPlayer(args[0]);
    242.  
    243. if (target != null) {
    244. final Player player = (Player) sender;
    245. Location playerLoc = player.getLocation();
    246. Location targetLoc = target.getLocation();
    247.  
    248. if (playerLoc.getWorld().getUID()
    249. .equals(targetLoc.getWorld().getUID())) {
    250. if (playerLoc.distanceSquared(targetLoc) < 4)
    251. if (player
    252. .hasPermission(new Permisssions().marry)) {
    253. if(this.config.contains(player.getName())){
    254. player.sendMessage("YOU CANNOT PERFORM BIGAMY ON THIS SERVER");
    255. }else{
    256. marriage.put(player.getName(),
    257. target.getName());
    258. target.sendMessage("will you marry me love"
    259. + player);
    260. }
    261.  
    262. } else {
    263. player.sendMessage(ChatColor.RED
    264. + "YOU DO NOT HAVE PERMISSION TO MARRY");
    265. return true;
    266. }
    267. else {
    268. sender.sendMessage(target.getDisplayName()
    269. + ChatColor.RED + " is too far away.");
    270. return true;
    271. }
    272. } else {
    273. sender.sendMessage(target.getDisplayName()
    274. + ChatColor.RED
    275. + " is not in the same world as you.");
    276. return true;
    277. }
    278. } else {
    279. sender.sendMessage(ChatColor.RED
    280. + "Can't find player: " + args[0]);
    281. return true;
    282. }
    283. } else {
    284. return false;
    285. }
    286. } else {
    287. sender.sendMessage("This command can only be used by a player.");
    288. return true;
    289. }
    290. //} else if (cmd.getName().equalsIgnoreCase("ido")) {
    291. // Player player = (Player) sender;
    292. // if (sender instanceof Player) {
    293. // if (target != null) {
    294. // final Player player = (Player) sender;
    295. // Location playerLoc = player.getLocation();
    296. // Location targetLoc = target.getLocation();
    297. // if (args.length > 0) {
    298. // player.sendMessage(ChatColor.RED + "Incorrect usage");
    299. // } else {
    300. // String target = marriage.get(player.getName());
    301. // this.config.set(target, "is Married");
    302. // marrige.remove(target);
    303. // }
    304. // } else {
    305. // sender.sendMessage("Can only be used by player");
    306. // }
    307. // } else if (cmd.getName().equalsIgnoreCase("no")) {
    308. // Player player = (Player) sender;
    309. // if (sender instanceof Player) {
    310. // if (args.length > 0) {
    311. // player.sendMessage(ChatColor.RED + "Incorrect usage");
    312. // } else {
    313. // marriage.remove(player.getName());
    314. // }
    315. // } else {
    316. // sender.sendMessage("Can only be used by player");
    317. // }
    318. // }
    319. }
    320. return true;
    321. }
    322. }


    Code:
    2013-05-12 12:50:43 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'ido' in plugin Hugs v1.3
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
        at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:523)
        at net.minecraft.server.v1_5_R3.PlayerConnection.handleCommand(PlayerConnection.java:965)
        at net.minecraft.server.v1_5_R3.PlayerConnection.chat(PlayerConnection.java:883)
        at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java:840)
        at net.minecraft.server.v1_5_R3.Packet3Chat.handle(Packet3Chat.java:44)
        at net.minecraft.server.v1_5_R3.NetworkManager.b(NetworkManager.java:292)
        at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java:109)
        at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)
        at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:30)
        at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:581)
        at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)
        at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
        at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
        at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
    Caused by: java.lang.IllegalArgumentException: Cannot set to an empty path
        at org.apache.commons.lang.Validate.notEmpty(Validate.java:363)
        at org.bukkit.configuration.MemorySection.set(MemorySection.java:159)
        at com.gmail.nomad856.kamakarzy.huggsconfig.set(huggsconfig.java:94)
        at com.gmail.nomad856.kamakarzy.Main.onCommand(Main.java:301)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
        ... 15 more
     
  2. Offline

    gomeow

    You need to show us the full code for us to be able to help you
     
  3. Offline

    CubieX

    As the stack trace says, there is something wrong in your onCommand method in line 301.
    "Caused by: java.lang.IllegalArgumentException: Cannot set to an empty path"

    Could you show us where this is?

    Also, please do not use "System.out.println".
    Use "Bukkit.getLogger().info("my fancy message");" instead.
     
  4. Offline

    gomeow

    CubieX
    Just use JavaPlugin#getLogger() instead
     
  5. Offline

    CubieX

    What's that? Never seen this kind of notation before. oO
    I think I'll do it like md_5 suggested it. ;)
     
  6. Offline

    kamakarzy

    gomeow CubieX added full class and also changed the things you have mentioned
     
  7. Offline

    gomeow

    CubieX
    Simply means getLogger() is a method of JavaPlugin.
    For example, PluginManager#registerEvents would mean registerEvents() is a method of PluginManager
     
    TheGreenGamerHD likes this.
  8. Offline

    CubieX

    Code:
    } else {
    // String target = marriage.get(player.getName());
    // this.config.set(target, "is Married");
    // marrige.remove(target);
    // }
    This is Line 299 to 303.
    Seems like there is no key for this players name in your marriages.yml
    String target = marriage.get(player.getName());
    This string is null and this is why you get the error in line 301 where you try to set a value for this key.

    Check your marriages.yml and make sure, the players name is in it, before using this.config.set(target, "is Married");
     
  9. Offline

    kamakarzy

    CubieX it shouldnt be checking the yml it should be checking the hashmap
     
  10. Offline

    CubieX

    Indeed. :p
     
Thread Status:
Not open for further replies.

Share This Page