SkillresetCommand.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.gmail.nossr50.commands.experience;
  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandSender;
  4. import org.bukkit.entity.Player;
  5. import com.gmail.nossr50.mcMMO;
  6. import com.gmail.nossr50.datatypes.skills.SkillType;
  7. import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent;
  8. import com.gmail.nossr50.locale.LocaleLoader;
  9. import com.gmail.nossr50.util.Permissions;
  10. import com.gmail.nossr50.util.commands.CommandUtils;
  11. import com.gmail.nossr50.util.player.UserManager;
  12. import com.gmail.nossr50.util.skills.SkillUtils;
  13. public class SkillresetCommand extends ExperienceCommand {
  14. private CommandSender sender;
  15. private Command command;
  16. private int argsLength;
  17. @Override
  18. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  19. this.command = command;
  20. this.sender = sender;
  21. argsLength = args.length;
  22. switch (args.length) {
  23. case 1:
  24. if (CommandUtils.noConsoleUsage(sender)) {
  25. return true;
  26. }
  27. if (!Permissions.skillreset(sender)) {
  28. sender.sendMessage(command.getPermissionMessage());
  29. return true;
  30. }
  31. if (isInvalidSkill(sender, args[0])) {
  32. return true;
  33. }
  34. player = (Player) sender;
  35. mcMMOPlayer = UserManager.getPlayer(player);
  36. profile = mcMMOPlayer.getProfile();
  37. editValues();
  38. return true;
  39. case 2:
  40. if (!Permissions.skillresetOthers(sender)) {
  41. sender.sendMessage(command.getPermissionMessage());
  42. return true;
  43. }
  44. if (isInvalidSkill(sender, args[1])) {
  45. return true;
  46. }
  47. mcMMOPlayer = UserManager.getPlayer(args[0]);
  48. // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
  49. if (mcMMOPlayer == null) {
  50. profile = mcMMO.getDatabaseManager().loadPlayerProfile(args[0], false);
  51. if (CommandUtils.unloadedProfile(sender, profile)) {
  52. return true;
  53. }
  54. editValues();
  55. profile.save(); // Since this is a temporary profile, we save it here.
  56. }
  57. else {
  58. profile = mcMMOPlayer.getProfile();
  59. player = mcMMOPlayer.getPlayer();
  60. editValues();
  61. }
  62. handleSenderMessage(sender, args[0]);
  63. return true;
  64. default:
  65. return false;
  66. }
  67. }
  68. @Override
  69. protected boolean permissionsCheckSelf(CommandSender sender) {
  70. return false;
  71. }
  72. @Override
  73. protected boolean permissionsCheckOthers(CommandSender sender) {
  74. return false;
  75. }
  76. @Override
  77. protected void handleCommand(SkillType skill) {
  78. if (argsLength == 1 && !Permissions.skillreset(sender, skill) || (argsLength == 2 && !Permissions.skillresetOthers(sender, skill))) {
  79. sender.sendMessage(command.getPermissionMessage());
  80. return;
  81. }
  82. profile.modifySkill(skill, 0);
  83. if (player != null) {
  84. mcMMO.p.getServer().getPluginManager().callEvent(new McMMOPlayerLevelUpEvent(player, skill, 0 - profile.getSkillLevel(skill)));
  85. }
  86. }
  87. @Override
  88. protected void handlePlayerMessageAll() {
  89. player.sendMessage(LocaleLoader.getString("Commands.Reset.All"));
  90. }
  91. @Override
  92. protected void handlePlayerMessageSkill() {
  93. player.sendMessage(LocaleLoader.getString("Commands.Reset.Single", SkillUtils.getSkillName(skill)));
  94. }
  95. }