Browse Source

Convert /skillreset to Bukkit command methods. Also refactored the name
to SkillresetCommand to fall in line with the naming of all other
command executor classes.

GJ 12 năm trước cách đây
mục cha
commit
5f306447a0

+ 10 - 0
src/main/java/com/gmail/nossr50/commands/CommandRegistrationHelper.java

@@ -11,6 +11,7 @@ import com.gmail.nossr50.commands.admin.AddxpCommand;
 import com.gmail.nossr50.commands.admin.McgodCommand;
 import com.gmail.nossr50.commands.admin.McrefreshCommand;
 import com.gmail.nossr50.commands.admin.MmoeditCommand;
+import com.gmail.nossr50.commands.admin.SkillresetCommand;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.acrobatics.AcrobaticsCommand;
 import com.gmail.nossr50.skills.archery.ArcheryCommand;
@@ -160,4 +161,13 @@ public final class CommandRegistrationHelper {
         command.setUsage(LocaleLoader.getString("Commands.Usage.3", "mmoedit", "[" + LocaleLoader.getString("Commands.Usage.Player") + "]", "<" + LocaleLoader.getString("Commands.Usage.Skill") + ">", "<" + LocaleLoader.getString("Commands.Usage.Level") + ">"));
         command.setExecutor(new MmoeditCommand());
     }
+
+    public static void registerSkillresetCommand() {
+        PluginCommand command = mcMMO.p.getCommand("skillreset");
+        command.setDescription(LocaleLoader.getString("Commands.Description.skillreset"));
+        command.setPermission("mcmmo.commands.skillreset");
+        command.setPermissionMessage(permissionsMessage);
+        command.setUsage(LocaleLoader.getString("Commands.Usage.2", "skillreset", "[" + LocaleLoader.getString("Commands.Usage.Player") + "]", "<" + LocaleLoader.getString("Commands.Usage.Skill") + ">"));
+        command.setExecutor(new SkillresetCommand());
+    }
 }

+ 0 - 97
src/main/java/com/gmail/nossr50/commands/admin/SkillResetCommand.java

@@ -1,97 +0,0 @@
-package com.gmail.nossr50.commands.admin;
-
-import org.bukkit.OfflinePlayer;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.commands.CommandHelper;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.utilities.SkillTools;
-import com.gmail.nossr50.skills.utilities.SkillType;
-import com.gmail.nossr50.util.Misc;
-import com.gmail.nossr50.util.Users;
-
-public class SkillResetCommand implements CommandExecutor {
-    @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
-        OfflinePlayer modifiedPlayer;
-        PlayerProfile profile;
-        SkillType skill;
-        String usage = LocaleLoader.getString("Commands.Usage.2", "skillreset", "[" + LocaleLoader.getString("Commands.Usage.Player") + "]", "<" + LocaleLoader.getString("Commands.Usage.Skill") + ">");
-
-        switch (args.length) {
-        case 1:
-            if (sender instanceof Player) {
-                if (!SkillTools.isSkill(args[0])) {
-                    sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
-                    return true;
-                }
-
-                skill = SkillTools.getSkillType(args[0]);
-
-                if (CommandHelper.noCommandPermissions((Player) sender, "mcmmo.commands.skillreset." + skill.toString().toLowerCase())) {
-                    return true;
-                }
-
-                modifiedPlayer = (Player) sender;
-                profile = Users.getPlayer((Player) sender).getProfile();
-                profile.modifySkill(skill, 0);
-
-                if (skill == SkillType.ALL) {
-                    sender.sendMessage(LocaleLoader.getString("Commands.Reset.All"));
-                }
-                else {
-                    sender.sendMessage(LocaleLoader.getString("Commands.Reset.Single", Misc.getCapitalized(skill.toString())));
-                }
-            }
-            else {
-                sender.sendMessage(usage);
-            }
-
-            return true;
-
-        case 2:
-            modifiedPlayer = mcMMO.p.getServer().getOfflinePlayer(args[0]);
-            profile = Users.getPlayer(args[0]).getProfile();
-
-            // TODO:Not sure if we actually need a null check here
-            if (profile == null || !profile.isLoaded()) {
-                sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
-                return true;
-            }
-
-            if (!SkillTools.isSkill(args[1])) {
-                sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
-                return true;
-            }
-
-            skill = SkillTools.getSkillType(args[1]);
-
-            if (CommandHelper.noCommandPermissions(sender, "mcmmo.commands.skillreset.others." + skill.toString().toLowerCase())) {
-                return true;
-            }
-
-            profile.modifySkill(skill, 0);
-
-            if (modifiedPlayer.isOnline()) {
-                if (skill == SkillType.ALL) {
-                    ((Player)modifiedPlayer).sendMessage(LocaleLoader.getString("Commands.Reset.All"));
-                }
-                else {
-                    ((Player)modifiedPlayer).sendMessage(LocaleLoader.getString("Commands.Reset.Single", Misc.getCapitalized(skill.toString())));
-                }
-            }
-
-            sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.2", Misc.getCapitalized(skill.toString()), args[0]));
-            return true;
-
-        default:
-            sender.sendMessage(usage);
-            return true;
-        }
-    }
-}

+ 129 - 0
src/main/java/com/gmail/nossr50/commands/admin/SkillresetCommand.java

@@ -0,0 +1,129 @@
+package com.gmail.nossr50.commands.admin;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.datatypes.McMMOPlayer;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.LocaleLoader;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
+import com.gmail.nossr50.util.Misc;
+import com.gmail.nossr50.util.Permissions;
+import com.gmail.nossr50.util.Users;
+
+public class SkillresetCommand implements CommandExecutor {
+    @Override
+    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+        PlayerProfile profile;
+        SkillType skill;
+
+        switch (args.length) {
+        case 1:
+            if (!(sender instanceof Player)) {
+                return false;
+            }
+
+            if (!SkillTools.isSkill(args[0])) {
+                sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
+                return true;
+            }
+
+            skill = SkillTools.getSkillType(args[0]);
+
+            if (skill != SkillType.ALL && !Permissions.hasPermission(sender, "mcmmo.commands.skillreset." + skill.toString().toLowerCase())) {
+                sender.sendMessage(command.getPermissionMessage());
+                return true;
+            }
+
+            profile = Users.getPlayer((Player) sender).getProfile();
+
+            if (skill == SkillType.ALL) {
+                for (SkillType type : SkillType.values()) {
+                    if (type != SkillType.ALL) {
+                        if (Permissions.hasPermission(sender, "mcmmo.commands.skillreset." + type.toString().toLowerCase())) {
+                            profile.modifySkill(type, 0);
+                            sender.sendMessage(LocaleLoader.getString("Commands.Reset.Single", Misc.getCapitalized(type.toString())));
+                        }
+                    }
+                }
+            }
+            else {
+                profile.modifySkill(skill, 0);
+                sender.sendMessage(LocaleLoader.getString("Commands.Reset.Single", Misc.getCapitalized(skill.toString())));
+            }
+
+            return true;
+
+        case 2:
+            if (!SkillTools.isSkill(args[1])) {
+                sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
+                return true;
+            }
+
+            skill = SkillTools.getSkillType(args[1]);
+
+            if (skill != SkillType.ALL && !Permissions.hasPermission(sender, "mcmmo.commands.skillreset.others." + skill.toString().toLowerCase())) {
+                sender.sendMessage(command.getPermissionMessage());
+                return true;
+            }
+
+            McMMOPlayer mcMMOPlayer = Users.getPlayer(args[0]);
+
+            // 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.
+            if (mcMMOPlayer == null) {
+                profile = new PlayerProfile(args[0], false);
+
+                if (!profile.isLoaded()) {
+                    sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
+                    return true;
+                }
+
+                if (skill == SkillType.ALL) {
+                    for (SkillType type : SkillType.values()) {
+                        if (type != SkillType.ALL) {
+                            if (Permissions.hasPermission(sender, "mcmmo.commands.skillreset.others" + type.toString().toLowerCase())) {
+                                profile.modifySkill(type, 0);
+                                sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.2", Misc.getCapitalized(type.toString()), args[0]));
+                            }
+                        }
+                    }
+                }
+                else {
+                    profile.modifySkill(skill, 0);
+                    sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.2", Misc.getCapitalized(skill.toString()), args[0]));
+                }
+
+                profile.save(); // Since this is a temporary profile, we save it here.
+            }
+            else {
+                profile = mcMMOPlayer.getProfile();
+                Player player = mcMMOPlayer.getPlayer();
+
+                if (skill == SkillType.ALL) {
+                    for (SkillType type : SkillType.values()) {
+                        if (type != SkillType.ALL) {
+                            if (Permissions.hasPermission(sender, "mcmmo.commands.skillreset.others" + type.toString().toLowerCase())) {
+                                profile.modifySkill(type, 0);
+                                sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.2", Misc.getCapitalized(type.toString()), args[0]));
+                                player.sendMessage(LocaleLoader.getString("Commands.Reset.Single", Misc.getCapitalized(type.toString())));
+                            }
+                        }
+                    }
+                }
+                else {
+                    profile.modifySkill(skill, 0);
+                    sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.2", Misc.getCapitalized(skill.toString()), args[0]));
+                    player.sendMessage(LocaleLoader.getString("Commands.Reset.Single", Misc.getCapitalized(skill.toString())));
+                }
+            }
+
+            return true;
+
+        default:
+            return false;
+        }
+    }
+}

+ 1 - 2
src/main/java/com/gmail/nossr50/mcMMO.java

@@ -25,7 +25,6 @@ import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory;
 import com.gmail.nossr50.chat.commands.ACommand;
 import com.gmail.nossr50.chat.commands.PCommand;
 import com.gmail.nossr50.commands.CommandRegistrationHelper;
-import com.gmail.nossr50.commands.admin.SkillResetCommand;
 import com.gmail.nossr50.commands.admin.XprateCommand;
 import com.gmail.nossr50.commands.player.InspectCommand;
 import com.gmail.nossr50.commands.player.McabilityCommand;
@@ -456,7 +455,7 @@ public class mcMMO extends JavaPlugin {
         getCommand("inspect").setExecutor(new InspectCommand());
         getCommand("xprate").setExecutor(new XprateCommand());
         getCommand("mmoupdate").setExecutor(new MmoupdateCommand());
-        getCommand("skillreset").setExecutor(new SkillResetCommand());
+        CommandRegistrationHelper.registerSkillresetCommand();
 
         // Spout commands
         getCommand("xplock").setExecutor(new XplockCommand());