mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-04 02:53:43 +01:00 
			
		
		
		
	Merge branches 'tridentsxbows' and 'master' of github.com:mcMMO-Dev/mcMMO into tridentsxbows
This commit is contained in:
		@@ -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.
 | 
					    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.
 | 
					    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
 | 
					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 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
 | 
					    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
 | 
					Version 2.1.181
 | 
				
			||||||
    mcMMO no longer pointlessly tries to check for missing UUIDs for FlatFile database
 | 
					    mcMMO no longer pointlessly tries to check for missing UUIDs for FlatFile database
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,64 +1,64 @@
 | 
				
			|||||||
package com.gmail.nossr50.commands.hardcore;
 | 
					//package com.gmail.nossr50.commands.hardcore;
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
import com.gmail.nossr50.config.Config;
 | 
					//import com.gmail.nossr50.config.Config;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 | 
					//import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 | 
				
			||||||
import com.gmail.nossr50.locale.LocaleLoader;
 | 
					//import com.gmail.nossr50.locale.LocaleLoader;
 | 
				
			||||||
import com.gmail.nossr50.mcMMO;
 | 
					//import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
import com.gmail.nossr50.util.Permissions;
 | 
					//import com.gmail.nossr50.util.Permissions;
 | 
				
			||||||
import org.bukkit.command.CommandSender;
 | 
					//import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
public class HardcoreCommand extends HardcoreModeCommand {
 | 
					//public class HardcoreCommand extends HardcoreModeCommand {
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected boolean checkTogglePermissions(CommandSender sender) {
 | 
					//    protected boolean checkTogglePermissions(CommandSender sender) {
 | 
				
			||||||
        return Permissions.hardcoreToggle(sender);
 | 
					//        return Permissions.hardcoreToggle(sender);
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected boolean checkModifyPermissions(CommandSender sender) {
 | 
					//    protected boolean checkModifyPermissions(CommandSender sender) {
 | 
				
			||||||
        return Permissions.hardcoreModify(sender);
 | 
					//        return Permissions.hardcoreModify(sender);
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected boolean checkEnabled(PrimarySkillType skill) {
 | 
					//    protected boolean checkEnabled(PrimarySkillType skill) {
 | 
				
			||||||
        if (skill == null) {
 | 
					//        if (skill == null) {
 | 
				
			||||||
            for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
 | 
					//            for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
 | 
				
			||||||
                if (!primarySkillType.getHardcoreStatLossEnabled()) {
 | 
					//                if (!primarySkillType.getHardcoreStatLossEnabled()) {
 | 
				
			||||||
                    return false;
 | 
					//                    return false;
 | 
				
			||||||
                }
 | 
					//                }
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
            return true;
 | 
					//            return true;
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
        return skill.getHardcoreStatLossEnabled();
 | 
					//        return skill.getHardcoreStatLossEnabled();
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected void enable(PrimarySkillType skill) {
 | 
					//    protected void enable(PrimarySkillType skill) {
 | 
				
			||||||
        toggle(true, skill);
 | 
					//        toggle(true, skill);
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected void disable(PrimarySkillType skill) {
 | 
					//    protected void disable(PrimarySkillType skill) {
 | 
				
			||||||
        toggle(false, skill);
 | 
					//        toggle(false, skill);
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected void modify(CommandSender sender, double newPercentage) {
 | 
					//    protected void modify(CommandSender sender, double newPercentage) {
 | 
				
			||||||
        Config.getInstance().setHardcoreDeathStatPenaltyPercentage(newPercentage);
 | 
					//        Config.getInstance().setHardcoreDeathStatPenaltyPercentage(newPercentage);
 | 
				
			||||||
        sender.sendMessage(LocaleLoader.getString("Hardcore.DeathStatLoss.PercentageChanged", percent.format(newPercentage / 100.0D)));
 | 
					//        sender.sendMessage(LocaleLoader.getString("Hardcore.DeathStatLoss.PercentageChanged", percent.format(newPercentage / 100.0D)));
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    private void toggle(boolean enable, PrimarySkillType skill) {
 | 
					//    private void toggle(boolean enable, PrimarySkillType skill) {
 | 
				
			||||||
        if (skill == null) {
 | 
					//        if (skill == null) {
 | 
				
			||||||
            for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
 | 
					//            for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
 | 
				
			||||||
                primarySkillType.setHardcoreStatLossEnabled(enable);
 | 
					//                primarySkillType.setHardcoreStatLossEnabled(enable);
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
        else {
 | 
					//        else {
 | 
				
			||||||
            skill.setHardcoreStatLossEnabled(enable);
 | 
					//            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())));
 | 
					//        mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Mode." + (enable ? "Enabled" : "Disabled"), LocaleLoader.getString("Hardcore.DeathStatLoss.Name"), (skill == null ? "all skills" : skill.getName())));
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
}
 | 
					//}
 | 
				
			||||||
@@ -1,64 +1,64 @@
 | 
				
			|||||||
package com.gmail.nossr50.commands.hardcore;
 | 
					//package com.gmail.nossr50.commands.hardcore;
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
import com.gmail.nossr50.config.Config;
 | 
					//import com.gmail.nossr50.config.Config;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 | 
					//import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 | 
				
			||||||
import com.gmail.nossr50.locale.LocaleLoader;
 | 
					//import com.gmail.nossr50.locale.LocaleLoader;
 | 
				
			||||||
import com.gmail.nossr50.mcMMO;
 | 
					//import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
import com.gmail.nossr50.util.Permissions;
 | 
					//import com.gmail.nossr50.util.Permissions;
 | 
				
			||||||
import org.bukkit.command.CommandSender;
 | 
					//import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
public class VampirismCommand extends HardcoreModeCommand {
 | 
					//public class VampirismCommand extends HardcoreModeCommand {
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected boolean checkTogglePermissions(CommandSender sender) {
 | 
					//    protected boolean checkTogglePermissions(CommandSender sender) {
 | 
				
			||||||
        return Permissions.vampirismToggle(sender);
 | 
					//        return Permissions.vampirismToggle(sender);
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected boolean checkModifyPermissions(CommandSender sender) {
 | 
					//    protected boolean checkModifyPermissions(CommandSender sender) {
 | 
				
			||||||
        return Permissions.vampirismModify(sender);
 | 
					//        return Permissions.vampirismModify(sender);
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected boolean checkEnabled(PrimarySkillType skill) {
 | 
					//    protected boolean checkEnabled(PrimarySkillType skill) {
 | 
				
			||||||
        if (skill == null) {
 | 
					//        if (skill == null) {
 | 
				
			||||||
            for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
 | 
					//            for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
 | 
				
			||||||
                if (!primarySkillType.getHardcoreVampirismEnabled()) {
 | 
					//                if (!primarySkillType.getHardcoreVampirismEnabled()) {
 | 
				
			||||||
                    return false;
 | 
					//                    return false;
 | 
				
			||||||
                }
 | 
					//                }
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
            return true;
 | 
					//            return true;
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
        return skill.getHardcoreVampirismEnabled();
 | 
					//        return skill.getHardcoreVampirismEnabled();
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected void enable(PrimarySkillType skill) {
 | 
					//    protected void enable(PrimarySkillType skill) {
 | 
				
			||||||
        toggle(true, skill);
 | 
					//        toggle(true, skill);
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected void disable(PrimarySkillType skill) {
 | 
					//    protected void disable(PrimarySkillType skill) {
 | 
				
			||||||
        toggle(false, skill);
 | 
					//        toggle(false, skill);
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    @Override
 | 
					//    @Override
 | 
				
			||||||
    protected void modify(CommandSender sender, double newPercentage) {
 | 
					//    protected void modify(CommandSender sender, double newPercentage) {
 | 
				
			||||||
        Config.getInstance().setHardcoreVampirismStatLeechPercentage(newPercentage);
 | 
					//        Config.getInstance().setHardcoreVampirismStatLeechPercentage(newPercentage);
 | 
				
			||||||
        sender.sendMessage(LocaleLoader.getString("Hardcore.Vampirism.PercentageChanged", percent.format(newPercentage / 100.0D)));
 | 
					//        sender.sendMessage(LocaleLoader.getString("Hardcore.Vampirism.PercentageChanged", percent.format(newPercentage / 100.0D)));
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    private void toggle(boolean enable, PrimarySkillType skill) {
 | 
					//    private void toggle(boolean enable, PrimarySkillType skill) {
 | 
				
			||||||
        if (skill == null) {
 | 
					//        if (skill == null) {
 | 
				
			||||||
            for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
 | 
					//            for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
 | 
				
			||||||
                primarySkillType.setHardcoreVampirismEnabled(enable);
 | 
					//                primarySkillType.setHardcoreVampirismEnabled(enable);
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
        else {
 | 
					//        else {
 | 
				
			||||||
            skill.setHardcoreVampirismEnabled(enable);
 | 
					//            skill.setHardcoreVampirismEnabled(enable);
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
        mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Mode." + (enable ? "Enabled" : "Disabled"), LocaleLoader.getString("Hardcore.Vampirism.Name"), (skill == null ? "all skills" : skill)));
 | 
					//        mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Mode." + (enable ? "Enabled" : "Disabled"), LocaleLoader.getString("Hardcore.Vampirism.Name"), (skill == null ? "all skills" : skill)));
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
}
 | 
					//}
 | 
				
			||||||
@@ -27,7 +27,12 @@ public abstract class McMMOPlayerExperienceEvent extends PlayerEvent implements
 | 
				
			|||||||
    protected McMMOPlayerExperienceEvent(Player player, PrimarySkillType skill, XPGainReason xpGainReason) {
 | 
					    protected McMMOPlayerExperienceEvent(Player player, PrimarySkillType skill, XPGainReason xpGainReason) {
 | 
				
			||||||
        super(player);
 | 
					        super(player);
 | 
				
			||||||
        this.skill = skill;
 | 
					        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;
 | 
					        this.xpGainReason = xpGainReason;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -149,6 +149,11 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public static FixedMetadataValue metadataValue;
 | 
					    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() {
 | 
					    public mcMMO() {
 | 
				
			||||||
        p = this;
 | 
					        p = this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -263,6 +268,24 @@ public class mcMMO extends JavaPlugin {
 | 
				
			|||||||
                else
 | 
					                else
 | 
				
			||||||
                    metrics.addCustomChart(new SimplePie("leveling_system", () -> "Standard"));
 | 
					                    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) {
 | 
					        catch (Throwable t) {
 | 
				
			||||||
            getLogger().severe("There was an error while enabling mcMMO!");
 | 
					            getLogger().severe("There was an error while enabling mcMMO!");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,7 @@ import org.bukkit.scheduler.BukkitRunnable;
 | 
				
			|||||||
public class SaveTimerTask extends BukkitRunnable {
 | 
					public class SaveTimerTask extends BukkitRunnable {
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void run() {
 | 
					    public void run() {
 | 
				
			||||||
 | 
					        mcMMO.p.debug("[User Data] Saving...");
 | 
				
			||||||
        // All player data will be saved periodically through this
 | 
					        // All player data will be saved periodically through this
 | 
				
			||||||
        int count = 1;
 | 
					        int count = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 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 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 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 */
 | 
					    /* ACTIVATION PERKS */
 | 
				
			||||||
    public static boolean twelveSecondActivationBoost(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.activationtime.twelveseconds"); }
 | 
					    public static boolean twelveSecondActivationBoost(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.activationtime.twelveseconds"); }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,8 +11,6 @@ import com.gmail.nossr50.commands.experience.AddlevelsCommand;
 | 
				
			|||||||
import com.gmail.nossr50.commands.experience.AddxpCommand;
 | 
					import com.gmail.nossr50.commands.experience.AddxpCommand;
 | 
				
			||||||
import com.gmail.nossr50.commands.experience.MmoeditCommand;
 | 
					import com.gmail.nossr50.commands.experience.MmoeditCommand;
 | 
				
			||||||
import com.gmail.nossr50.commands.experience.SkillresetCommand;
 | 
					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.PartyCommand;
 | 
				
			||||||
import com.gmail.nossr50.commands.party.teleport.PtpCommand;
 | 
					import com.gmail.nossr50.commands.party.teleport.PtpCommand;
 | 
				
			||||||
import com.gmail.nossr50.commands.player.*;
 | 
					import com.gmail.nossr50.commands.player.*;
 | 
				
			||||||
@@ -369,25 +367,25 @@ public final class CommandRegistrationManager {
 | 
				
			|||||||
        command.setExecutor(new PtpCommand());
 | 
					        command.setExecutor(new PtpCommand());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static void registerHardcoreCommand() {
 | 
					//    private static void registerHardcoreCommand() {
 | 
				
			||||||
        PluginCommand command = mcMMO.p.getCommand("hardcore");
 | 
					//        PluginCommand command = mcMMO.p.getCommand("hardcore");
 | 
				
			||||||
        command.setDescription(LocaleLoader.getString("Commands.Description.hardcore"));
 | 
					//        command.setDescription(LocaleLoader.getString("Commands.Description.hardcore"));
 | 
				
			||||||
        command.setPermission("mcmmo.commands.hardcore;mcmmo.commands.hardcore.toggle;mcmmo.commands.hardcore.modify");
 | 
					//        command.setPermission("mcmmo.commands.hardcore;mcmmo.commands.hardcore.toggle;mcmmo.commands.hardcore.modify");
 | 
				
			||||||
        command.setPermissionMessage(permissionsMessage);
 | 
					//        command.setPermissionMessage(permissionsMessage);
 | 
				
			||||||
        command.setUsage(LocaleLoader.getString("Commands.Usage.1", "hardcore", "[on|off]"));
 | 
					//        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.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "hardcore", "<" + LocaleLoader.getString("Commands.Usage.Rate") + ">"));
 | 
				
			||||||
        command.setExecutor(new HardcoreCommand());
 | 
					//        command.setExecutor(new HardcoreCommand());
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    private static void registerVampirismCommand() {
 | 
					//    private static void registerVampirismCommand() {
 | 
				
			||||||
        PluginCommand command = mcMMO.p.getCommand("vampirism");
 | 
					//        PluginCommand command = mcMMO.p.getCommand("vampirism");
 | 
				
			||||||
        command.setDescription(LocaleLoader.getString("Commands.Description.vampirism"));
 | 
					//        command.setDescription(LocaleLoader.getString("Commands.Description.vampirism"));
 | 
				
			||||||
        command.setPermission("mcmmo.commands.vampirism;mcmmo.commands.vampirism.toggle;mcmmo.commands.vampirism.modify");
 | 
					//        command.setPermission("mcmmo.commands.vampirism;mcmmo.commands.vampirism.toggle;mcmmo.commands.vampirism.modify");
 | 
				
			||||||
        command.setPermissionMessage(permissionsMessage);
 | 
					//        command.setPermissionMessage(permissionsMessage);
 | 
				
			||||||
        command.setUsage(LocaleLoader.getString("Commands.Usage.1", "vampirism", "[on|off]"));
 | 
					//        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.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "vampirism", "<" + LocaleLoader.getString("Commands.Usage.Rate") + ">"));
 | 
				
			||||||
        command.setExecutor(new VampirismCommand());
 | 
					//        command.setExecutor(new VampirismCommand());
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static void registerMcnotifyCommand() {
 | 
					    private static void registerMcnotifyCommand() {
 | 
				
			||||||
        PluginCommand command = mcMMO.p.getCommand("mcnotify");
 | 
					        PluginCommand command = mcMMO.p.getCommand("mcnotify");
 | 
				
			||||||
@@ -469,8 +467,8 @@ public final class CommandRegistrationManager {
 | 
				
			|||||||
        registerSkillresetCommand();
 | 
					        registerSkillresetCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Hardcore Commands
 | 
					        // Hardcore Commands
 | 
				
			||||||
        registerHardcoreCommand();
 | 
					//        registerHardcoreCommand();
 | 
				
			||||||
        registerVampirismCommand();
 | 
					//        registerVampirismCommand();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Party Commands
 | 
					        // Party Commands
 | 
				
			||||||
        registerPartyCommand();
 | 
					        registerPartyCommand();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -125,7 +125,8 @@ public class ScoreboardWrapper {
 | 
				
			|||||||
            try {
 | 
					            try {
 | 
				
			||||||
                cooldownTask.cancel();
 | 
					                cooldownTask.cancel();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Throwable ignored) {
 | 
					            catch (Exception e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            cooldownTask = null;
 | 
					            cooldownTask = null;
 | 
				
			||||||
@@ -429,8 +430,9 @@ public class ScoreboardWrapper {
 | 
				
			|||||||
        try {
 | 
					        try {
 | 
				
			||||||
            updateTask.cancel();
 | 
					            updateTask.cancel();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        catch (Throwable ignored) {
 | 
					        catch (Exception e) {
 | 
				
			||||||
        } // catch NullPointerException and IllegalStateException and any Error; don't care
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        updateTask = null;
 | 
					        updateTask = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -159,14 +159,14 @@ commands:
 | 
				
			|||||||
    mcpurge:
 | 
					    mcpurge:
 | 
				
			||||||
        description: Purge users with 0 powerlevel and/or who haven't connected in several months from the server DB.
 | 
					        description: Purge users with 0 powerlevel and/or who haven't connected in several months from the server DB.
 | 
				
			||||||
        permission: mcmmo.commands.mcpurge
 | 
					        permission: mcmmo.commands.mcpurge
 | 
				
			||||||
    hardcore:
 | 
					#    hardcore:
 | 
				
			||||||
        aliases: [mchardcore]
 | 
					#        aliases: [mchardcore]
 | 
				
			||||||
        description: Modify the mcMMO hardcore percentage or toggle hardcore mode on/off
 | 
					#        description: Modify the mcMMO hardcore percentage or toggle hardcore mode on/off
 | 
				
			||||||
        permission: mcmmo.commands.hardcore
 | 
					#        permission: mcmmo.commands.hardcore
 | 
				
			||||||
    vampirism:
 | 
					#    vampirism:
 | 
				
			||||||
        aliases: [mcvampirism]
 | 
					#        aliases: [mcvampirism]
 | 
				
			||||||
        description: Modify the mcMMO vampirism percentage or toggle vampirism mode on/off
 | 
					#        description: Modify the mcMMO vampirism percentage or toggle vampirism mode on/off
 | 
				
			||||||
        permission: mcmmo.commands.vampirism
 | 
					#        permission: mcmmo.commands.vampirism
 | 
				
			||||||
    mcnotify:
 | 
					    mcnotify:
 | 
				
			||||||
        aliases: [notify]
 | 
					        aliases: [notify]
 | 
				
			||||||
        description: Toggle mcMMO abilities chat display notifications on/off
 | 
					        description: Toggle mcMMO abilities chat display notifications on/off
 | 
				
			||||||
@@ -868,7 +868,7 @@ permissions:
 | 
				
			|||||||
            mcmmo.commands.addxp: true
 | 
					            mcmmo.commands.addxp: true
 | 
				
			||||||
            mcmmo.commands.addxp.others: true
 | 
					            mcmmo.commands.addxp.others: true
 | 
				
			||||||
            mcmmo.commands.defaults: true
 | 
					            mcmmo.commands.defaults: true
 | 
				
			||||||
            mcmmo.commands.hardcore.all: true
 | 
					#            mcmmo.commands.hardcore.all: true
 | 
				
			||||||
            mcmmo.commands.inspect.far: true
 | 
					            mcmmo.commands.inspect.far: true
 | 
				
			||||||
            mcmmo.commands.inspect.hidden: true
 | 
					            mcmmo.commands.inspect.hidden: true
 | 
				
			||||||
            mcmmo.commands.mcability.others: true
 | 
					            mcmmo.commands.mcability.others: true
 | 
				
			||||||
@@ -888,7 +888,7 @@ permissions:
 | 
				
			|||||||
            mcmmo.commands.ptp.world.all: true
 | 
					            mcmmo.commands.ptp.world.all: true
 | 
				
			||||||
            mcmmo.commands.reloadlocale: true
 | 
					            mcmmo.commands.reloadlocale: true
 | 
				
			||||||
            mcmmo.commands.skillreset.all: true
 | 
					            mcmmo.commands.skillreset.all: true
 | 
				
			||||||
            mcmmo.commands.vampirism.all: true
 | 
					#            mcmmo.commands.vampirism.all: true
 | 
				
			||||||
            mcmmo.commands.xprate.all: true
 | 
					            mcmmo.commands.xprate.all: true
 | 
				
			||||||
    mcmmo.commands.acrobatics:
 | 
					    mcmmo.commands.acrobatics:
 | 
				
			||||||
        description: Allows access to the acrobatics command
 | 
					        description: Allows access to the acrobatics command
 | 
				
			||||||
@@ -910,23 +910,23 @@ permissions:
 | 
				
			|||||||
        description: Allows access to the excavation command
 | 
					        description: Allows access to the excavation command
 | 
				
			||||||
    mcmmo.commands.fishing:
 | 
					    mcmmo.commands.fishing:
 | 
				
			||||||
        description: Allows access to the fishing command
 | 
					        description: Allows access to the fishing command
 | 
				
			||||||
    mcmmo.commands.hardcore.*:
 | 
					#    mcmmo.commands.hardcore.*:
 | 
				
			||||||
        default: false
 | 
					#        default: false
 | 
				
			||||||
        description: Implies access to all mcmmo.commands.hardcore permissions
 | 
					#        description: Implies access to all mcmmo.commands.hardcore permissions
 | 
				
			||||||
        children:
 | 
					#        children:
 | 
				
			||||||
            mcmmo.commands.hardcore.all: true
 | 
					#            mcmmo.commands.hardcore.all: true
 | 
				
			||||||
    mcmmo.commands.hardcore.all:
 | 
					#    mcmmo.commands.hardcore.all:
 | 
				
			||||||
        description: Implies access to all mcmmo.commands.hardcore permissions
 | 
					#        description: Implies access to all mcmmo.commands.hardcore permissions
 | 
				
			||||||
        children:
 | 
					#        children:
 | 
				
			||||||
            mcmmo.commands.hardcore: true
 | 
					#            mcmmo.commands.hardcore: true
 | 
				
			||||||
            mcmmo.commands.hardcore.modify: true
 | 
					#            mcmmo.commands.hardcore.modify: true
 | 
				
			||||||
            mcmmo.commands.hardcore.toggle: true
 | 
					#            mcmmo.commands.hardcore.toggle: true
 | 
				
			||||||
    mcmmo.commands.hardcore:
 | 
					#    mcmmo.commands.hardcore:
 | 
				
			||||||
        description: Allows access to the hardcore command
 | 
					#        description: Allows access to the hardcore command
 | 
				
			||||||
    mcmmo.commands.hardcore.modify:
 | 
					#    mcmmo.commands.hardcore.modify:
 | 
				
			||||||
        description: Allows access to the hardcore command to modify the hardcore rate
 | 
					#        description: Allows access to the hardcore command to modify the hardcore rate
 | 
				
			||||||
    mcmmo.commands.hardcore.toggle:
 | 
					#    mcmmo.commands.hardcore.toggle:
 | 
				
			||||||
        description: Allows access to the hardcore command to toggle hardcore on/off
 | 
					#        description: Allows access to the hardcore command to toggle hardcore on/off
 | 
				
			||||||
    mcmmo.commands.herbalism:
 | 
					    mcmmo.commands.herbalism:
 | 
				
			||||||
        description: Allows access to the herbalism command
 | 
					        description: Allows access to the herbalism command
 | 
				
			||||||
    mcmmo.commands.inspect.*:
 | 
					    mcmmo.commands.inspect.*:
 | 
				
			||||||
@@ -1298,23 +1298,23 @@ permissions:
 | 
				
			|||||||
        description: Allows access to the taming command
 | 
					        description: Allows access to the taming command
 | 
				
			||||||
    mcmmo.commands.unarmed:
 | 
					    mcmmo.commands.unarmed:
 | 
				
			||||||
        description: Allows access to the unarmed command
 | 
					        description: Allows access to the unarmed command
 | 
				
			||||||
    mcmmo.commands.vampirism.*:
 | 
					#    mcmmo.commands.vampirism.*:
 | 
				
			||||||
        default: false
 | 
					#        default: false
 | 
				
			||||||
        description: Implies access to all mcmmo.commands.vampirism permissions
 | 
					#        description: Implies access to all mcmmo.commands.vampirism permissions
 | 
				
			||||||
        children:
 | 
					#        children:
 | 
				
			||||||
            mcmmo.commands.vampirism.all: true
 | 
					#            mcmmo.commands.vampirism.all: true
 | 
				
			||||||
    mcmmo.commands.vampirism.all:
 | 
					#    mcmmo.commands.vampirism.all:
 | 
				
			||||||
        description: Implies access to all mcmmo.commands.vampirism permissions
 | 
					#        description: Implies access to all mcmmo.commands.vampirism permissions
 | 
				
			||||||
        children:
 | 
					#        children:
 | 
				
			||||||
            mcmmo.commands.vampirism: true
 | 
					#            mcmmo.commands.vampirism: true
 | 
				
			||||||
            mcmmo.commands.vampirism.modify: true
 | 
					#            mcmmo.commands.vampirism.modify: true
 | 
				
			||||||
            mcmmo.commands.vampirism.toggle: true
 | 
					#            mcmmo.commands.vampirism.toggle: true
 | 
				
			||||||
    mcmmo.commands.vampirism:
 | 
					#    mcmmo.commands.vampirism:
 | 
				
			||||||
        description: Allows access to the vampirism command
 | 
					#        description: Allows access to the vampirism command
 | 
				
			||||||
    mcmmo.commands.vampirism.modify:
 | 
					#    mcmmo.commands.vampirism.modify:
 | 
				
			||||||
        description: Allows access to the vampirism command to modify the vampirism rate
 | 
					#        description: Allows access to the vampirism command to modify the vampirism rate
 | 
				
			||||||
    mcmmo.commands.vampirism.toggle:
 | 
					#    mcmmo.commands.vampirism.toggle:
 | 
				
			||||||
        description: Allows access to the vampirism command to toggle vampirism on/off
 | 
					#        description: Allows access to the vampirism command to toggle vampirism on/off
 | 
				
			||||||
    mcmmo.commands.woodcutting:
 | 
					    mcmmo.commands.woodcutting:
 | 
				
			||||||
        description: Allows access to the woodcutting command
 | 
					        description: Allows access to the woodcutting command
 | 
				
			||||||
    mcmmo.commands.xprate.*:
 | 
					    mcmmo.commands.xprate.*:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user