From d542098f8adbc43deaad85afc4e688a27c99e7f4 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Sat, 13 Apr 2019 13:17:28 -0700 Subject: [PATCH] New salvage enchant bypass permission node --- Changelog.txt | 5 +++++ .../commands/skills/RepairCommand.java | 2 +- .../nossr50/skills/repair/RepairManager.java | 2 +- .../skills/salvage/SalvageManager.java | 4 ++++ .../com/gmail/nossr50/util/Permissions.java | 5 +++++ src/main/resources/plugin.yml | 19 +++++++++++++++++++ 6 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 5608b6582..9dc8c1b07 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -10,8 +10,13 @@ Key: Version 2.1.42 Fixed McMMOPlayerNotFoundException being thrown instead of null (API) UserManager.getPlayer() returns null again (oopsie) + Added new perk permission node `mcmmo.perks.bypass.salvageenchant` - guarantees full enchantment return for Salvage + Added alternative permission node `mcmmo.perks.bypass.repairenchant` - guarantees full enchantment return for Repair + Added new wildcard perk `mcmmo.perks.bypass.*` and `mcmmo.perks.bypass.all` (either of these will grant all new mcmmo.perks.bypass perk permissions) NOTE: Sorry about that, when trying to improve Bungee Cord compatibility I made a big oopsie! + NOTE: Repair's new perk permission works in the exact same way as mcmmo.bypass.arcanebypass, bypass perk permissions will all eventually be moved to `mcmmo.perks.bypass` + NOTE: Expect perk permissions to all be moved to `mcmmo.perks.X` in the near future Version 2.1.41 Fixed NullPointerException errors when trying to grab PlayerProfiles for players who have not loaded diff --git a/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java index cd41d6ac8..1e590e644 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java @@ -86,7 +86,7 @@ public class RepairCommand extends SkillCommand { canRepairString = Permissions.repairMaterialType(player, MaterialType.STRING); canRepairLeather = Permissions.repairMaterialType(player, MaterialType.LEATHER); canRepairWood = Permissions.repairMaterialType(player, MaterialType.WOOD); - arcaneBypass = Permissions.arcaneBypass(player); + arcaneBypass = (Permissions.arcaneBypass(player) || Permissions.hasRepairEnchantBypassPerk(player)); } @Override diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java index 9ad9a96a6..9120f83f7 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java @@ -139,7 +139,7 @@ public class RepairManager extends SkillManager { } // Handle the enchants - if (ArcaneForging.arcaneForgingEnchantLoss) { + if (ArcaneForging.arcaneForgingEnchantLoss && !Permissions.hasRepairEnchantBypassPerk(player)) { addEnchants(item); } diff --git a/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java b/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java index 68471b948..5227f824c 100644 --- a/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java +++ b/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java @@ -182,6 +182,9 @@ public class SalvageManager extends SkillManager { }*/ public double getExtractFullEnchantChance() { + if(Permissions.hasSalvageEnchantBypassPerk(getPlayer())) + return 100.0D; + return AdvancedConfig.getInstance().getArcaneSalvageExtractFullEnchantsChance(getArcaneSalvageRank()); } @@ -205,6 +208,7 @@ public class SalvageManager extends SkillManager { for (Entry enchant : enchants.entrySet()) { if (!Salvage.arcaneSalvageEnchantLoss + || Permissions.hasSalvageEnchantBypassPerk(player) || RandomChanceUtil.checkRandomChanceExecutionSuccess(new RandomChanceSkillStatic(getExtractFullEnchantChance(), getPlayer(), SubSkillType.SALVAGE_ARCANE_SALVAGE))) { enchantMeta.addStoredEnchant(enchant.getKey(), enchant.getValue(), true); } diff --git a/src/main/java/com/gmail/nossr50/util/Permissions.java b/src/main/java/com/gmail/nossr50/util/Permissions.java index cda3cf831..dbbeef94f 100644 --- a/src/main/java/com/gmail/nossr50/util/Permissions.java +++ b/src/main/java/com/gmail/nossr50/util/Permissions.java @@ -106,6 +106,11 @@ public final class Permissions { * PERKS */ + /* BYPASS PERKS */ + + public static boolean hasRepairEnchantBypassPerk(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.bypass.repairenchant"); } + public static boolean hasSalvageEnchantBypassPerk(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.bypass.salvageenchant"); } + public static boolean lucky(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.lucky." + skill.toString().toLowerCase()); } /* XP PERKS */ diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c7fb456a8..a42dbfbfd 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1328,6 +1328,8 @@ permissions: default: false description: implies access to all mcmmo perks children: + mcmmo.perks.bypass.salvageenchant: true + mcmmo.perks.bypass.repairenchant: true mcmmo.perks.activationtime.all: true mcmmo.perks.cooldowns.all: true mcmmo.perks.lucky.all: true @@ -1344,6 +1346,23 @@ permissions: mcmmo.perks.activationtime.eightseconds: true mcmmo.perks.activationtime.fourseconds: true mcmmo.perks.activationtime.twelveseconds: true + mcmmo.perks.bypass.*: + default: false + description: Perks that bypass certain RNG elements and guarantee success + children: + mcmmo.perks.bypass.all: true + mcmmo.perks.bypass.all: + default: false + description: Perks that bypass certain RNG elements and guarantee success + children: + mcmmo.perks.bypass.repairenchant: true + mcmmo.perks.bypass.salvageenchant: true + mcmmo.perks.bypass.repairenchant: + default: false + description: Guarantees repairing without enchantment degradation + mcmmo.perks.bypass.salvageenchant: + default: false + description: Guarantees salvage will return the best legal enchantment book mcmmo.perks.activationtime.eightseconds: default: false description: Increases activation time by 8 seconds