浏览代码

Merge branches 'tridentsxbows' and 'master' of github.com:mcMMO-Dev/mcMMO into tridentsxbows

nossr50 4 年之前
父节点
当前提交
3bda73de2e

+ 9 - 1
Changelog.txt

@@ -104,9 +104,17 @@ Version 2.2.000
     About the removed party features, all the features I removed I consider poor quality features and I don't think they belong in mcMMO. Feel free to yell at me in discord if you disagree.
     I don't know what genius decided to make parties public by default, when I found out that parties had been changed to such a system I could barely contain my disgust. Parties are back to being private, you get invited by a party leader or party officer. That is the only way to join a party.
 Version 2.1.182
+    You can now use '.all' (for example: mcmmo.perks.xp.customboost.all) to give an XP perk to all skills
+    Removed hardcore and vampirism commands, these commands are dangerous, just modify the config file if you want to use hardcore / vampirism
     Fixed several errors in de locale (Thanks TheBusyBiscuit & w1tcherrr)
-    Fixed a bug where double smelt never succeeded if the furnace was empty
+    Fixed a bug where double smelt never succeeded if the furnace was empty (but worked normally afterwards)
     Added some safety so that mcMMO automatic save interval is never more frequent than 1 minute
+    Removed a few silent exceptions for scoreboards & mcMMO
+    Added warning about UltraPermissions to mcMMO
+    Fixed a potential NPE in McMMOPlayerExperienceEvent
+
+    NOTES:
+    mcMMO will do a better job reporting if something went wrong with scoreboards, which may lead to improved plugin compatibility between mcMMO and other plugins touching scoreboards.
 
 Version 2.1.181
     mcMMO no longer pointlessly tries to check for missing UUIDs for FlatFile database

+ 64 - 64
src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreCommand.java

@@ -1,64 +1,64 @@
-package com.gmail.nossr50.commands.hardcore;
-
-import com.gmail.nossr50.config.Config;
-import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
-import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.util.Permissions;
-import org.bukkit.command.CommandSender;
-
-public class HardcoreCommand extends HardcoreModeCommand {
-    @Override
-    protected boolean checkTogglePermissions(CommandSender sender) {
-        return Permissions.hardcoreToggle(sender);
-    }
-
-    @Override
-    protected boolean checkModifyPermissions(CommandSender sender) {
-        return Permissions.hardcoreModify(sender);
-    }
-
-    @Override
-    protected boolean checkEnabled(PrimarySkillType skill) {
-        if (skill == null) {
-            for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
-                if (!primarySkillType.getHardcoreStatLossEnabled()) {
-                    return false;
-                }
-            }
-
-            return true;
-        }
-
-        return skill.getHardcoreStatLossEnabled();
-    }
-
-    @Override
-    protected void enable(PrimarySkillType skill) {
-        toggle(true, skill);
-    }
-
-    @Override
-    protected void disable(PrimarySkillType skill) {
-        toggle(false, skill);
-    }
-
-    @Override
-    protected void modify(CommandSender sender, double newPercentage) {
-        Config.getInstance().setHardcoreDeathStatPenaltyPercentage(newPercentage);
-        sender.sendMessage(LocaleLoader.getString("Hardcore.DeathStatLoss.PercentageChanged", percent.format(newPercentage / 100.0D)));
-    }
-
-    private void toggle(boolean enable, PrimarySkillType skill) {
-        if (skill == null) {
-            for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
-                primarySkillType.setHardcoreStatLossEnabled(enable);
-            }
-        }
-        else {
-            skill.setHardcoreStatLossEnabled(enable);
-        }
-
-        mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Mode." + (enable ? "Enabled" : "Disabled"), LocaleLoader.getString("Hardcore.DeathStatLoss.Name"), (skill == null ? "all skills" : skill.getName())));
-    }
-}
+//package com.gmail.nossr50.commands.hardcore;
+//
+//import com.gmail.nossr50.config.Config;
+//import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
+//import com.gmail.nossr50.locale.LocaleLoader;
+//import com.gmail.nossr50.mcMMO;
+//import com.gmail.nossr50.util.Permissions;
+//import org.bukkit.command.CommandSender;
+//
+//public class HardcoreCommand extends HardcoreModeCommand {
+//    @Override
+//    protected boolean checkTogglePermissions(CommandSender sender) {
+//        return Permissions.hardcoreToggle(sender);
+//    }
+//
+//    @Override
+//    protected boolean checkModifyPermissions(CommandSender sender) {
+//        return Permissions.hardcoreModify(sender);
+//    }
+//
+//    @Override
+//    protected boolean checkEnabled(PrimarySkillType skill) {
+//        if (skill == null) {
+//            for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
+//                if (!primarySkillType.getHardcoreStatLossEnabled()) {
+//                    return false;
+//                }
+//            }
+//
+//            return true;
+//        }
+//
+//        return skill.getHardcoreStatLossEnabled();
+//    }
+//
+//    @Override
+//    protected void enable(PrimarySkillType skill) {
+//        toggle(true, skill);
+//    }
+//
+//    @Override
+//    protected void disable(PrimarySkillType skill) {
+//        toggle(false, skill);
+//    }
+//
+//    @Override
+//    protected void modify(CommandSender sender, double newPercentage) {
+//        Config.getInstance().setHardcoreDeathStatPenaltyPercentage(newPercentage);
+//        sender.sendMessage(LocaleLoader.getString("Hardcore.DeathStatLoss.PercentageChanged", percent.format(newPercentage / 100.0D)));
+//    }
+//
+//    private void toggle(boolean enable, PrimarySkillType skill) {
+//        if (skill == null) {
+//            for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
+//                primarySkillType.setHardcoreStatLossEnabled(enable);
+//            }
+//        }
+//        else {
+//            skill.setHardcoreStatLossEnabled(enable);
+//        }
+//
+//        mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Mode." + (enable ? "Enabled" : "Disabled"), LocaleLoader.getString("Hardcore.DeathStatLoss.Name"), (skill == null ? "all skills" : skill.getName())));
+//    }
+//}

+ 64 - 64
src/main/java/com/gmail/nossr50/commands/hardcore/VampirismCommand.java

@@ -1,64 +1,64 @@
-package com.gmail.nossr50.commands.hardcore;
-
-import com.gmail.nossr50.config.Config;
-import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
-import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.util.Permissions;
-import org.bukkit.command.CommandSender;
-
-public class VampirismCommand extends HardcoreModeCommand {
-    @Override
-    protected boolean checkTogglePermissions(CommandSender sender) {
-        return Permissions.vampirismToggle(sender);
-    }
-
-    @Override
-    protected boolean checkModifyPermissions(CommandSender sender) {
-        return Permissions.vampirismModify(sender);
-    }
-
-    @Override
-    protected boolean checkEnabled(PrimarySkillType skill) {
-        if (skill == null) {
-            for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
-                if (!primarySkillType.getHardcoreVampirismEnabled()) {
-                    return false;
-                }
-            }
-
-            return true;
-        }
-
-        return skill.getHardcoreVampirismEnabled();
-    }
-
-    @Override
-    protected void enable(PrimarySkillType skill) {
-        toggle(true, skill);
-    }
-
-    @Override
-    protected void disable(PrimarySkillType skill) {
-        toggle(false, skill);
-    }
-
-    @Override
-    protected void modify(CommandSender sender, double newPercentage) {
-        Config.getInstance().setHardcoreVampirismStatLeechPercentage(newPercentage);
-        sender.sendMessage(LocaleLoader.getString("Hardcore.Vampirism.PercentageChanged", percent.format(newPercentage / 100.0D)));
-    }
-
-    private void toggle(boolean enable, PrimarySkillType skill) {
-        if (skill == null) {
-            for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
-                primarySkillType.setHardcoreVampirismEnabled(enable);
-            }
-        }
-        else {
-            skill.setHardcoreVampirismEnabled(enable);
-        }
-
-        mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Mode." + (enable ? "Enabled" : "Disabled"), LocaleLoader.getString("Hardcore.Vampirism.Name"), (skill == null ? "all skills" : skill)));
-    }
-}
+//package com.gmail.nossr50.commands.hardcore;
+//
+//import com.gmail.nossr50.config.Config;
+//import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
+//import com.gmail.nossr50.locale.LocaleLoader;
+//import com.gmail.nossr50.mcMMO;
+//import com.gmail.nossr50.util.Permissions;
+//import org.bukkit.command.CommandSender;
+//
+//public class VampirismCommand extends HardcoreModeCommand {
+//    @Override
+//    protected boolean checkTogglePermissions(CommandSender sender) {
+//        return Permissions.vampirismToggle(sender);
+//    }
+//
+//    @Override
+//    protected boolean checkModifyPermissions(CommandSender sender) {
+//        return Permissions.vampirismModify(sender);
+//    }
+//
+//    @Override
+//    protected boolean checkEnabled(PrimarySkillType skill) {
+//        if (skill == null) {
+//            for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
+//                if (!primarySkillType.getHardcoreVampirismEnabled()) {
+//                    return false;
+//                }
+//            }
+//
+//            return true;
+//        }
+//
+//        return skill.getHardcoreVampirismEnabled();
+//    }
+//
+//    @Override
+//    protected void enable(PrimarySkillType skill) {
+//        toggle(true, skill);
+//    }
+//
+//    @Override
+//    protected void disable(PrimarySkillType skill) {
+//        toggle(false, skill);
+//    }
+//
+//    @Override
+//    protected void modify(CommandSender sender, double newPercentage) {
+//        Config.getInstance().setHardcoreVampirismStatLeechPercentage(newPercentage);
+//        sender.sendMessage(LocaleLoader.getString("Hardcore.Vampirism.PercentageChanged", percent.format(newPercentage / 100.0D)));
+//    }
+//
+//    private void toggle(boolean enable, PrimarySkillType skill) {
+//        if (skill == null) {
+//            for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
+//                primarySkillType.setHardcoreVampirismEnabled(enable);
+//            }
+//        }
+//        else {
+//            skill.setHardcoreVampirismEnabled(enable);
+//        }
+//
+//        mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Mode." + (enable ? "Enabled" : "Disabled"), LocaleLoader.getString("Hardcore.Vampirism.Name"), (skill == null ? "all skills" : skill)));
+//    }
+//}

+ 6 - 1
src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java

@@ -27,7 +27,12 @@ public abstract class McMMOPlayerExperienceEvent extends PlayerEvent implements
     protected McMMOPlayerExperienceEvent(Player player, PrimarySkillType skill, XPGainReason xpGainReason) {
         super(player);
         this.skill = skill;
-        this.skillLevel = mcMMO.getUserManager().getPlayer(player).getSkillLevel(skill);
+
+        if(UserManager.getPlayer(player) != null) {
+            this.skillLevel = mcMMO.getUserManager().getPlayer(player).getSkillLevel(skill);
+        } else {
+            this.skillLevel = 0;
+        }
         this.xpGainReason = xpGainReason;
     }
 

+ 23 - 0
src/main/java/com/gmail/nossr50/mcMMO.java

@@ -149,6 +149,11 @@ public class mcMMO extends JavaPlugin {
 
     public static FixedMetadataValue metadataValue;
 
+    public static final String ULTRA_PERMISSONS = "UltraPermissons";
+    public static final String UP_WARNING_2 = "Stop using " + ULTRA_PERMISSONS + " with mcMMO immediately!";
+    public static final String UP_WARNING_1 = "mcMMO has detected " + ULTRA_PERMISSONS + " on your server, users have reported a severe plugin conflict between these two plugins which severely degrades server performance";
+    public static final String UP_WARNING_3 = "The author of UltraPermissions has passed away and its unlikely this issue will ever be solved";
+
     public mcMMO() {
         p = this;
     }
@@ -263,6 +268,24 @@ public class mcMMO extends JavaPlugin {
                 else
                     metrics.addCustomChart(new SimplePie("leveling_system", () -> "Standard"));
             }
+
+            //Can't confirm this bug myself as the plugin is premium
+//            //TODO: Remove this when ChatControlRed fixes itself
+//            if(pluginManager.getPlugin("ChatControlRed") != null) {
+//                getLogger().severe("mcMMO has detected ChatControlRed on your server, users have reported a severe plugin conflict between these two plugins which degrades server performance and wastes many server resources.");
+//                getLogger().severe("It is HIGHLY RECOMMENDED that you do --NOT-- use ChatControlRed until this issue is resolved!");
+//            }
+            if(pluginManager.getPlugin(ULTRA_PERMISSONS) != null) {
+                Bukkit.getScheduler().runTaskTimer(this, () -> {
+                    getLogger().severe(UP_WARNING_1);
+                    getLogger().severe(UP_WARNING_2);
+                    getLogger().severe(UP_WARNING_3);
+
+                    Bukkit.broadcastMessage(UP_WARNING_1);
+                    Bukkit.broadcastMessage(UP_WARNING_2);
+                    Bukkit.broadcastMessage(UP_WARNING_3);
+                    }, 0L, 1200L);
+            }
         }
         catch (Throwable t) {
             getLogger().severe("There was an error while enabling mcMMO!");

+ 1 - 0
src/main/java/com/gmail/nossr50/runnables/SaveTimerTask.java

@@ -7,6 +7,7 @@ import org.bukkit.scheduler.BukkitRunnable;
 public class SaveTimerTask extends BukkitRunnable {
     @Override
     public void run() {
+        mcMMO.p.debug("[User Data] Saving...");
         // All player data will be saved periodically through this
         int count = 1;
 

+ 6 - 1
src/main/java/com/gmail/nossr50/util/Permissions.java

@@ -126,7 +126,12 @@ public final class Permissions {
     public static boolean doubleXp(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.double." + skill.toString().toLowerCase(Locale.ENGLISH)); }
     public static boolean oneAndOneHalfXp(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.50percentboost." + skill.toString().toLowerCase(Locale.ENGLISH)); }
     public static boolean oneAndOneTenthXp(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.10percentboost." + skill.toString().toLowerCase(Locale.ENGLISH)); }
-    public static boolean customXpBoost(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.customboost." + skill.toString().toLowerCase(Locale.ENGLISH)); }
+
+    public static boolean customXpBoost(Permissible permissible, PrimarySkillType skill) {
+        return permissible.hasPermission("mcmmo.perks.xp.customboost.all")
+            ||permissible.hasPermission("mcmmo.perks.xp.customboost." + skill.toString().toLowerCase(Locale.ENGLISH));
+    }
+
 
     /* ACTIVATION PERKS */
     public static boolean twelveSecondActivationBoost(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.activationtime.twelveseconds"); }

+ 21 - 23
src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java

@@ -11,8 +11,6 @@ import com.gmail.nossr50.commands.experience.AddlevelsCommand;
 import com.gmail.nossr50.commands.experience.AddxpCommand;
 import com.gmail.nossr50.commands.experience.MmoeditCommand;
 import com.gmail.nossr50.commands.experience.SkillresetCommand;
-import com.gmail.nossr50.commands.hardcore.HardcoreCommand;
-import com.gmail.nossr50.commands.hardcore.VampirismCommand;
 import com.gmail.nossr50.commands.party.PartyCommand;
 import com.gmail.nossr50.commands.party.teleport.PtpCommand;
 import com.gmail.nossr50.commands.player.*;
@@ -369,25 +367,25 @@ public final class CommandRegistrationManager {
         command.setExecutor(new PtpCommand());
     }
 
-    private static void registerHardcoreCommand() {
-        PluginCommand command = mcMMO.p.getCommand("hardcore");
-        command.setDescription(LocaleLoader.getString("Commands.Description.hardcore"));
-        command.setPermission("mcmmo.commands.hardcore;mcmmo.commands.hardcore.toggle;mcmmo.commands.hardcore.modify");
-        command.setPermissionMessage(permissionsMessage);
-        command.setUsage(LocaleLoader.getString("Commands.Usage.1", "hardcore", "[on|off]"));
-        command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "hardcore", "<" + LocaleLoader.getString("Commands.Usage.Rate") + ">"));
-        command.setExecutor(new HardcoreCommand());
-    }
-
-    private static void registerVampirismCommand() {
-        PluginCommand command = mcMMO.p.getCommand("vampirism");
-        command.setDescription(LocaleLoader.getString("Commands.Description.vampirism"));
-        command.setPermission("mcmmo.commands.vampirism;mcmmo.commands.vampirism.toggle;mcmmo.commands.vampirism.modify");
-        command.setPermissionMessage(permissionsMessage);
-        command.setUsage(LocaleLoader.getString("Commands.Usage.1", "vampirism", "[on|off]"));
-        command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "vampirism", "<" + LocaleLoader.getString("Commands.Usage.Rate") + ">"));
-        command.setExecutor(new VampirismCommand());
-    }
+//    private static void registerHardcoreCommand() {
+//        PluginCommand command = mcMMO.p.getCommand("hardcore");
+//        command.setDescription(LocaleLoader.getString("Commands.Description.hardcore"));
+//        command.setPermission("mcmmo.commands.hardcore;mcmmo.commands.hardcore.toggle;mcmmo.commands.hardcore.modify");
+//        command.setPermissionMessage(permissionsMessage);
+//        command.setUsage(LocaleLoader.getString("Commands.Usage.1", "hardcore", "[on|off]"));
+//        command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "hardcore", "<" + LocaleLoader.getString("Commands.Usage.Rate") + ">"));
+//        command.setExecutor(new HardcoreCommand());
+//    }
+//
+//    private static void registerVampirismCommand() {
+//        PluginCommand command = mcMMO.p.getCommand("vampirism");
+//        command.setDescription(LocaleLoader.getString("Commands.Description.vampirism"));
+//        command.setPermission("mcmmo.commands.vampirism;mcmmo.commands.vampirism.toggle;mcmmo.commands.vampirism.modify");
+//        command.setPermissionMessage(permissionsMessage);
+//        command.setUsage(LocaleLoader.getString("Commands.Usage.1", "vampirism", "[on|off]"));
+//        command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "vampirism", "<" + LocaleLoader.getString("Commands.Usage.Rate") + ">"));
+//        command.setExecutor(new VampirismCommand());
+//    }
 
     private static void registerMcnotifyCommand() {
         PluginCommand command = mcMMO.p.getCommand("mcnotify");
@@ -469,8 +467,8 @@ public final class CommandRegistrationManager {
         registerSkillresetCommand();
 
         // Hardcore Commands
-        registerHardcoreCommand();
-        registerVampirismCommand();
+//        registerHardcoreCommand();
+//        registerVampirismCommand();
 
         // Party Commands
         registerPartyCommand();

+ 5 - 3
src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java

@@ -125,7 +125,8 @@ public class ScoreboardWrapper {
             try {
                 cooldownTask.cancel();
             }
-            catch (Throwable ignored) {
+            catch (Exception e) {
+                e.printStackTrace();
             }
 
             cooldownTask = null;
@@ -429,8 +430,9 @@ public class ScoreboardWrapper {
         try {
             updateTask.cancel();
         }
-        catch (Throwable ignored) {
-        } // catch NullPointerException and IllegalStateException and any Error; don't care
+        catch (Exception e) {
+            e.printStackTrace();
+        }
 
         updateTask = null;
 

+ 44 - 44
src/main/resources/plugin.yml

@@ -159,14 +159,14 @@ commands:
     mcpurge:
         description: Purge users with 0 powerlevel and/or who haven't connected in several months from the server DB.
         permission: mcmmo.commands.mcpurge
-    hardcore:
-        aliases: [mchardcore]
-        description: Modify the mcMMO hardcore percentage or toggle hardcore mode on/off
-        permission: mcmmo.commands.hardcore
-    vampirism:
-        aliases: [mcvampirism]
-        description: Modify the mcMMO vampirism percentage or toggle vampirism mode on/off
-        permission: mcmmo.commands.vampirism
+#    hardcore:
+#        aliases: [mchardcore]
+#        description: Modify the mcMMO hardcore percentage or toggle hardcore mode on/off
+#        permission: mcmmo.commands.hardcore
+#    vampirism:
+#        aliases: [mcvampirism]
+#        description: Modify the mcMMO vampirism percentage or toggle vampirism mode on/off
+#        permission: mcmmo.commands.vampirism
     mcnotify:
         aliases: [notify]
         description: Toggle mcMMO abilities chat display notifications on/off
@@ -868,7 +868,7 @@ permissions:
             mcmmo.commands.addxp: true
             mcmmo.commands.addxp.others: true
             mcmmo.commands.defaults: true
-            mcmmo.commands.hardcore.all: true
+#            mcmmo.commands.hardcore.all: true
             mcmmo.commands.inspect.far: true
             mcmmo.commands.inspect.hidden: true
             mcmmo.commands.mcability.others: true
@@ -888,7 +888,7 @@ permissions:
             mcmmo.commands.ptp.world.all: true
             mcmmo.commands.reloadlocale: true
             mcmmo.commands.skillreset.all: true
-            mcmmo.commands.vampirism.all: true
+#            mcmmo.commands.vampirism.all: true
             mcmmo.commands.xprate.all: true
     mcmmo.commands.acrobatics:
         description: Allows access to the acrobatics command
@@ -910,23 +910,23 @@ permissions:
         description: Allows access to the excavation command
     mcmmo.commands.fishing:
         description: Allows access to the fishing command
-    mcmmo.commands.hardcore.*:
-        default: false
-        description: Implies access to all mcmmo.commands.hardcore permissions
-        children:
-            mcmmo.commands.hardcore.all: true
-    mcmmo.commands.hardcore.all:
-        description: Implies access to all mcmmo.commands.hardcore permissions
-        children:
-            mcmmo.commands.hardcore: true
-            mcmmo.commands.hardcore.modify: true
-            mcmmo.commands.hardcore.toggle: true
-    mcmmo.commands.hardcore:
-        description: Allows access to the hardcore command
-    mcmmo.commands.hardcore.modify:
-        description: Allows access to the hardcore command to modify the hardcore rate
-    mcmmo.commands.hardcore.toggle:
-        description: Allows access to the hardcore command to toggle hardcore on/off
+#    mcmmo.commands.hardcore.*:
+#        default: false
+#        description: Implies access to all mcmmo.commands.hardcore permissions
+#        children:
+#            mcmmo.commands.hardcore.all: true
+#    mcmmo.commands.hardcore.all:
+#        description: Implies access to all mcmmo.commands.hardcore permissions
+#        children:
+#            mcmmo.commands.hardcore: true
+#            mcmmo.commands.hardcore.modify: true
+#            mcmmo.commands.hardcore.toggle: true
+#    mcmmo.commands.hardcore:
+#        description: Allows access to the hardcore command
+#    mcmmo.commands.hardcore.modify:
+#        description: Allows access to the hardcore command to modify the hardcore rate
+#    mcmmo.commands.hardcore.toggle:
+#        description: Allows access to the hardcore command to toggle hardcore on/off
     mcmmo.commands.herbalism:
         description: Allows access to the herbalism command
     mcmmo.commands.inspect.*:
@@ -1298,23 +1298,23 @@ permissions:
         description: Allows access to the taming command
     mcmmo.commands.unarmed:
         description: Allows access to the unarmed command
-    mcmmo.commands.vampirism.*:
-        default: false
-        description: Implies access to all mcmmo.commands.vampirism permissions
-        children:
-            mcmmo.commands.vampirism.all: true
-    mcmmo.commands.vampirism.all:
-        description: Implies access to all mcmmo.commands.vampirism permissions
-        children:
-            mcmmo.commands.vampirism: true
-            mcmmo.commands.vampirism.modify: true
-            mcmmo.commands.vampirism.toggle: true
-    mcmmo.commands.vampirism:
-        description: Allows access to the vampirism command
-    mcmmo.commands.vampirism.modify:
-        description: Allows access to the vampirism command to modify the vampirism rate
-    mcmmo.commands.vampirism.toggle:
-        description: Allows access to the vampirism command to toggle vampirism on/off
+#    mcmmo.commands.vampirism.*:
+#        default: false
+#        description: Implies access to all mcmmo.commands.vampirism permissions
+#        children:
+#            mcmmo.commands.vampirism.all: true
+#    mcmmo.commands.vampirism.all:
+#        description: Implies access to all mcmmo.commands.vampirism permissions
+#        children:
+#            mcmmo.commands.vampirism: true
+#            mcmmo.commands.vampirism.modify: true
+#            mcmmo.commands.vampirism.toggle: true
+#    mcmmo.commands.vampirism:
+#        description: Allows access to the vampirism command
+#    mcmmo.commands.vampirism.modify:
+#        description: Allows access to the vampirism command to modify the vampirism rate
+#    mcmmo.commands.vampirism.toggle:
+#        description: Allows access to the vampirism command to toggle vampirism on/off
     mcmmo.commands.woodcutting:
         description: Allows access to the woodcutting command
     mcmmo.commands.xprate.*: