[Vault] Runtime AbstractMethodError

Discussion in 'Plugin Development' started by Géraud, Jul 20, 2014.

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

    Géraud

    Hi everyone! I'm actually trying to make a plugin to give penalties to players using Vault to extort money from players. All seems to work but when I try to use withdrawPlayer() from my variable "econ", an AbstractMethodError is thrown in Minecraft console.

    Code:

    BlehPenalty.java (main class)
    Code:java
    1. File file;
    2. private FileConfiguration fileConfig;
    3.  
    4. private static ArrayList<Player> punished = new ArrayList<Player>();
    5. private static ArrayList<Player> late = new ArrayList<Player>();
    6. private static ArrayList<Integer> penalty = new ArrayList<Integer>();
    7.  
    8. @Override
    9. public void onEnable() {
    10. plugin = this;
    11. log.info("[BlehPenalty] BlehPenalty chargé, fin prêt à coller quelques amendes.");
    12. if (!setupEconomy() ) {
    13. log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
    14. getServer().getPluginManager().disablePlugin(this);
    15. return;
    16. }
    17. this.loadConfigFile();
    18. }
    19.  
    20. private boolean setupEconomy() {
    21. if (getServer().getPluginManager().getPlugin("Vault") == null) {
    22. log.info("BLEH");
    23. return false;
    24. }
    25. RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
    26. if (rsp == null) {
    27. log.info("PLOP");
    28. return false;
    29. }
    30. econ = rsp.getProvider();
    31. return econ != null;
    32. }
    33.  
    34. @Override
    35. public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
    36. try {
    37. return Handler.onCommand(sender, command, commandLabel, args);
    38. } catch (Exception ex) {
    39. log.severe(ex.toString());
    40. }
    41.  
    42. return false;
    43. }
    44.  
    45. // The rest of my class. Blah blah blah.
    46.  


    CommandPay.java (class where Vault is used)
    Code:java
    1. public class CommandPay {
    2.  
    3.  
    4. public static boolean doCommand(CommandSender sender, String[] args) throws Exception {
    5. if (args.length <= 1) {
    6. sender.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] Utilisation : /bp pay <yes/no>");
    7. } else {
    8. UUID target = UUIDFetcher.getUUIDOf(sender.getName());
    9. Player theplayer = Bukkit.getPlayer(target);
    10.  
    11. if (BlehPenalty.isPunished(theplayer) || BlehPenalty.isLate(theplayer)) {
    12.  
    13. if (BlehPenalty.isPunished(theplayer)) {
    14. switch (args[1]) {
    15. case "yes":
    16. sender.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] Vous avez payé votre amende avec succès !");
    17. EconomyResponse r = BlehPenalty.econ.withdrawPlayer(Bukkit.getOfflinePlayer(target), BlehPenalty.getPenaltyValue(theplayer));
    18. if(r.transactionSuccess()) {
    19. sender.sendMessage(String.format("You perdez %s et avez désormais %s", BlehPenalty.econ.format(r.amount), BlehPenalty.econ.format(r.balance)));
    20. } else {
    21. sender.sendMessage(String.format("An error occured: %s", r.errorMessage));
    22. }
    23. for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    24. if (onlinePlayer.hasPermission("blehpenalty.penalty")) {
    25. onlinePlayer.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] "+sender.getName()+" vient juste de s'acquitter de son amende !");
    26. }
    27. }
    28. break;
    29. case "no":
    30. sender.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] Vous venez de refuser de payer votre amende !");
    31. for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    32. if (onlinePlayer.hasPermission("blehpenalty.penalty")) {
    33. onlinePlayer.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] ALERTE !! "+sender.getName()+" vient juste de refuser de payer son amende !");
    34. }
    35. }
    36. break;
    37. default:
    38. sender.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] Le paramètre doit être soit \"yes\", soit \"no\" !");
    39. break;
    40. }
    41. }
    42.  
    43. if (BlehPenalty.isLate(theplayer)) {
    44. switch (args[1]) {
    45. case "yes":
    46. sender.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] Vous avez payé votre amende avec retard...");
    47. BlehPenalty.econ.withdrawPlayer(Bukkit.getOfflinePlayer(target), BlehPenalty.getPenaltyValue(theplayer));
    48. for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    49. if (onlinePlayer.hasPermission("blehpenalty.penalty")) {
    50. onlinePlayer.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] ALERTE !! "+sender.getName()+" vient juste de s'acquitter de son amende en retard...");
    51. }
    52. }
    53. break;
    54. case "no":
    55. sender.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] Vous venez de refuser de payer votre amende !");
    56. for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    57. if (onlinePlayer.hasPermission("blehpenalty.penalty")) {
    58. onlinePlayer.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] ALERTE !! "+sender.getName()+" vient juste de refuser de payer son amende en retard ! Il est dissident !!");
    59. }
    60. }
    61. break;
    62. default:
    63. sender.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] Le paramètre doit être soit \"yes\", soit \"no\" !");
    64. break;
    65. }
    66. }
    67.  
    68. } else {
    69. sender.sendMessage(ChatColor.DARK_AQUA+"[BlehPenalty] Vous n'êtes ni amendé ni retardataire, inutile de payer quoi que ce soit donc.");
    70. }
    71.  
    72. }
    73. return true;
    74. }
    75.  
    76. }
    77.  


    Could anyone help me find a solution? :)
    I'll give you my error code after I have took a screen of it.

    Otherwise I know my english is not perfect. You probably noted that I'm french so be indulgent please :)
     
Thread Status:
Not open for further replies.

Share This Page