SkillresetCommand.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.gmail.nossr50.commands.admin;
  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandExecutor;
  4. import org.bukkit.command.CommandSender;
  5. import org.bukkit.entity.Player;
  6. import com.gmail.nossr50.datatypes.McMMOPlayer;
  7. import com.gmail.nossr50.datatypes.PlayerProfile;
  8. import com.gmail.nossr50.locale.LocaleLoader;
  9. import com.gmail.nossr50.skills.utilities.SkillTools;
  10. import com.gmail.nossr50.skills.utilities.SkillType;
  11. import com.gmail.nossr50.util.StringUtils;
  12. import com.gmail.nossr50.util.Users;
  13. public class SkillresetCommand implements CommandExecutor {
  14. @Override
  15. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  16. PlayerProfile profile;
  17. boolean allSkills = false;
  18. SkillType skill = null;
  19. String skillName = "";
  20. switch (args.length) {
  21. case 1:
  22. if (!sender.hasPermission("mcmmo.commands.skillreset")) {
  23. sender.sendMessage(command.getPermissionMessage());
  24. return true;
  25. }
  26. if (!(sender instanceof Player)) {
  27. return false;
  28. }
  29. if (args[0].equalsIgnoreCase("all")) {
  30. allSkills = true;
  31. }
  32. else if (!SkillTools.isSkill(args[0])) {
  33. sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
  34. return true;
  35. }
  36. profile = Users.getPlayer((Player) sender).getProfile();
  37. if (allSkills) {
  38. for (SkillType skillType : SkillType.values()) {
  39. if (skillType.isChildSkill()) {
  40. continue;
  41. }
  42. if (!sender.hasPermission("mcmmo.commands.skillreset." + SkillTools.getSkillName(skillType).toLowerCase())) {
  43. sender.sendMessage(command.getPermissionMessage());
  44. continue;
  45. }
  46. profile.modifySkill(skillType, 0);
  47. }
  48. sender.sendMessage(LocaleLoader.getString("Commands.Reset.All"));
  49. }
  50. else {
  51. skill = SkillType.getSkill(args[0]);
  52. skillName = SkillTools.getSkillName(skill);
  53. if (!sender.hasPermission("mcmmo.commands.skillreset." + skillName.toLowerCase())) {
  54. sender.sendMessage(command.getPermissionMessage());
  55. return true;
  56. }
  57. profile.modifySkill(skill, 0);
  58. sender.sendMessage(LocaleLoader.getString("Commands.Reset.Single", StringUtils.getCapitalized(skillName)));
  59. }
  60. return true;
  61. case 2:
  62. if (!sender.hasPermission("mcmmo.commands.skillreset.others")) {
  63. sender.sendMessage(command.getPermissionMessage());
  64. return true;
  65. }
  66. if (args[1].equalsIgnoreCase("all")) {
  67. allSkills = true;
  68. }
  69. else if (!SkillTools.isSkill(args[1])) {
  70. sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
  71. return true;
  72. }
  73. if (!allSkills) {
  74. skill = SkillType.getSkill(args[1]);
  75. skillName = SkillTools.getSkillName(skill);
  76. if (!sender.hasPermission("mcmmo.commands.skillreset.others." + skillName.toLowerCase())) {
  77. sender.sendMessage(command.getPermissionMessage());
  78. return true;
  79. }
  80. }
  81. McMMOPlayer mcMMOPlayer = Users.getPlayer(args[0]);
  82. // 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.
  83. if (mcMMOPlayer == null) {
  84. profile = new PlayerProfile(args[0], false);
  85. if (!profile.isLoaded()) {
  86. sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
  87. return true;
  88. }
  89. if (allSkills) {
  90. for (SkillType skillType : SkillType.values()) {
  91. if (skillType.isChildSkill()) {
  92. continue;
  93. }
  94. if (!sender.hasPermission("mcmmo.commands.skillreset.others." + SkillTools.getSkillName(skillType).toLowerCase())) {
  95. sender.sendMessage(command.getPermissionMessage());
  96. continue;
  97. }
  98. profile.modifySkill(skillType, 0);
  99. }
  100. }
  101. else {
  102. profile.modifySkill(skill, 0);
  103. }
  104. profile.save(); // Since this is a temporary profile, we save it here.
  105. }
  106. else {
  107. profile = mcMMOPlayer.getProfile();
  108. if (allSkills) {
  109. for (SkillType skillType : SkillType.values()) {
  110. if (skillType.isChildSkill()) {
  111. continue;
  112. }
  113. if (!sender.hasPermission("mcmmo.commands.skillreset.others." + SkillTools.getSkillName(skillType).toLowerCase())) {
  114. sender.sendMessage(command.getPermissionMessage());
  115. continue;
  116. }
  117. profile.modifySkill(skillType, 0);
  118. }
  119. mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.Reset.All"));
  120. }
  121. else {
  122. profile.modifySkill(skill, 0);
  123. mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.Reset.Single", StringUtils.getCapitalized(skillName)));
  124. }
  125. }
  126. if (allSkills) {
  127. sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.2", args[0]));
  128. }
  129. else {
  130. sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.2", StringUtils.getCapitalized(skillName), args[0]));
  131. }
  132. return true;
  133. default:
  134. return false;
  135. }
  136. }
  137. }