Browse Source

Add Clean Cuts to Woodcutting

nossr50 4 years ago
parent
commit
addf9b0431

+ 10 - 6
Changelog.txt

@@ -11,7 +11,7 @@ Version 2.1.175
     Added 'mcmmo.ability.excavation.mastery' permission node
     Added 'mcmmo.ability.excavation.mastery' permission node
     Added 'mcmmo.ability.fishing.mastery' permission node
     Added 'mcmmo.ability.fishing.mastery' permission node
     Added 'mcmmo.ability.herbalism.mastery' permission node
     Added 'mcmmo.ability.herbalism.mastery' permission node
-    Added 'mcmmo.ability.mining.mastery' permission node
+    Added 'mcmmo.ability.mining.motherlode' permission node
     Added 'mcmmo.ability.repair.mastery' permission node
     Added 'mcmmo.ability.repair.mastery' permission node
     Added 'mcmmo.ability.salvage.mastery' permission node
     Added 'mcmmo.ability.salvage.mastery' permission node
     Added 'mcmmo.ability.smelting.mastery' permission node
     Added 'mcmmo.ability.smelting.mastery' permission node
@@ -19,13 +19,13 @@ Version 2.1.175
     Added 'mcmmo.ability.swords.mastery' permission node
     Added 'mcmmo.ability.swords.mastery' permission node
     Added 'mcmmo.ability.taming.mastery' permission node
     Added 'mcmmo.ability.taming.mastery' permission node
     Added 'mcmmo.ability.unarmed.mastery' permission node
     Added 'mcmmo.ability.unarmed.mastery' permission node
-    Added 'mcmmo.ability.woodcutting.mastery' permission node
+    Added 'mcmmo.ability.woodcutting.cleancuts' permission node
     Added 'Mining.SubSkill.MotherLode.Name' to locale
     Added 'Mining.SubSkill.MotherLode.Name' to locale
     Added 'Mining.SubSkill.MotherLode.Stat' to locale
     Added 'Mining.SubSkill.MotherLode.Stat' to locale
     Added 'Mining.SubSkill.MotherLode.Description' to locale
     Added 'Mining.SubSkill.MotherLode.Description' to locale
-    Added 'Woodcutting.SubSkill.Mastery.Name' to locale
-    Added 'Woodcutting.SubSkill.Mastery.Stat' to locale
-    Added 'Woodcutting.SubSkill.Mastery.Description' to locale
+    Added 'Woodcutting.SubSkill.CleanCuts.Name' to locale
+    Added 'Woodcutting.SubSkill.CleanCuts.Stat' to locale
+    Added 'Woodcutting.SubSkill.CleanCuts.Description' to locale
 
 
     Added 'General.PowerLevel.Skill_Mastery.Enabled' to config.yml which is used to enable or disable the mastery skills (will also disable the new power level command)
     Added 'General.PowerLevel.Skill_Mastery.Enabled' to config.yml which is used to enable or disable the mastery skills (will also disable the new power level command)
 
 
@@ -39,10 +39,14 @@ Version 2.1.175
     The section below assumes RetroMode, if you are using Standard mode (1-100) just divide level examples by 10.
     The section below assumes RetroMode, if you are using Standard mode (1-100) just divide level examples by 10.
 
 
     Mastery Skills
     Mastery Skills
-    Mining (Mastery Triple Drops): With default settings, when players hit level 1,000 they will unlock this sub-skill, it will add a 1% chance to get triple drops while mining (this can be edited in advanced.yml), this skill maxes out at 10.0% chance at level 10,000.
+    Mining / Mother Lode: With default settings, when players hit level 1,000 they will unlock this sub-skill, it will add a 1% chance to get triple drops while mining (this can be edited in advanced.yml), this skill maxes out at 10.0% chance at level 10,000.
     This skill respects double drop settings from the config files.
     This skill respects double drop settings from the config files.
     Double Drops only occur if the Triple Drops fail, these two skills do not stack.
     Double Drops only occur if the Triple Drops fail, these two skills do not stack.
 
 
+    Woodcutting / Clean Cuts: With default settings, when players hit level 1,000 they will unlock this sub-skill, it will add a 1% chance to get triple drops while woodcutting or using Tree Feller (this can be edited in advanced.yml), this skill maxes out at 10.0% chance at level 10,000.
+    This skill respects double drop settings from the config files.
+    Double Drops (Harvest Lumber) will only get checked if the Triple Drops fail for players that have Clean Cuts unlocked, these two skills do not stack.
+
     New Power Level Command
     New Power Level Command
     This power level command gives you a view of all your current masteries, it also provides a summary of your power level.
     This power level command gives you a view of all your current masteries, it also provides a summary of your power level.
 
 

+ 13 - 10
src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java

@@ -18,8 +18,8 @@ import java.util.List;
 public class MiningCommand extends SkillCommand {
 public class MiningCommand extends SkillCommand {
     private String doubleDropChance;
     private String doubleDropChance;
     private String doubleDropChanceLucky;
     private String doubleDropChanceLucky;
-    private String masteryTripleDropChance;
-    private String masteryTripleDropChanceLucky;
+    private String tripleDropChance;
+    private String tripleDropChanceLucky;
     private String superBreakerLength;
     private String superBreakerLength;
     private String superBreakerLengthEndurance;
     private String superBreakerLengthEndurance;
 
 
@@ -32,6 +32,7 @@ public class MiningCommand extends SkillCommand {
 
 
     private boolean canSuperBreaker;
     private boolean canSuperBreaker;
     private boolean canDoubleDrop;
     private boolean canDoubleDrop;
+    private boolean canTripleDrop;
     private boolean canBlast;
     private boolean canBlast;
     private boolean canBiggerBombs;
     private boolean canBiggerBombs;
     private boolean canDemoExpert;
     private boolean canDemoExpert;
@@ -55,10 +56,10 @@ public class MiningCommand extends SkillCommand {
         }
         }
 
 
         // Mastery TRIPLE DROPS
         // Mastery TRIPLE DROPS
-        if (Permissions.canUseSubSkill(player, SubSkillType.MINING_MOTHER_LODE)) {
+        if (canTripleDrop) {
             String[] masteryTripleDropStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.MINING_MOTHER_LODE);
             String[] masteryTripleDropStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.MINING_MOTHER_LODE);
-            masteryTripleDropChance = masteryTripleDropStrings[0];
-            masteryTripleDropChanceLucky = masteryTripleDropStrings[1];
+            tripleDropChance = masteryTripleDropStrings[0];
+            tripleDropChanceLucky = masteryTripleDropStrings[1];
         }
         }
 
 
         
         
@@ -83,6 +84,7 @@ public class MiningCommand extends SkillCommand {
         canBlast = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_BLAST_MINING) && Permissions.remoteDetonation(player);
         canBlast = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_BLAST_MINING) && Permissions.remoteDetonation(player);
         canDemoExpert = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_DEMOLITIONS_EXPERTISE) && Permissions.demolitionsExpertise(player);
         canDemoExpert = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_DEMOLITIONS_EXPERTISE) && Permissions.demolitionsExpertise(player);
         canDoubleDrop = Permissions.canUseSubSkill(player, SubSkillType.MINING_DOUBLE_DROPS);
         canDoubleDrop = Permissions.canUseSubSkill(player, SubSkillType.MINING_DOUBLE_DROPS);
+        canTripleDrop = Permissions.canUseSubSkill(player, SubSkillType.MINING_MOTHER_LODE);
         canSuperBreaker = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_SUPER_BREAKER) && Permissions.superBreaker(player);
         canSuperBreaker = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_SUPER_BREAKER) && Permissions.superBreaker(player);
     }
     }
 
 
@@ -105,17 +107,18 @@ public class MiningCommand extends SkillCommand {
             //messages.add(LocaleLoader.getString("Mining.Effect.Decrease", blastDamageDecrease));
             //messages.add(LocaleLoader.getString("Mining.Effect.Decrease", blastDamageDecrease));
         }
         }
 
 
-        if(Permissions.canUseSubSkill(player, SubSkillType.MINING_MOTHER_LODE)) {
-            messages.add(getStatMessage(SubSkillType.MINING_MOTHER_LODE, masteryTripleDropChance)
-                    + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", masteryTripleDropChanceLucky) : ""));
-        }
-        
         if (canDoubleDrop) {
         if (canDoubleDrop) {
             messages.add(getStatMessage(SubSkillType.MINING_DOUBLE_DROPS, doubleDropChance)
             messages.add(getStatMessage(SubSkillType.MINING_DOUBLE_DROPS, doubleDropChance)
                     + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
                     + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
             //messages.add(LocaleLoader.getString("Mining.Effect.DropChance", doubleDropChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
             //messages.add(LocaleLoader.getString("Mining.Effect.DropChance", doubleDropChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
         }
         }
 
 
+        if(canTripleDrop) {
+            messages.add(getStatMessage(SubSkillType.MINING_MOTHER_LODE, tripleDropChance)
+                    + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", tripleDropChanceLucky) : ""));
+        }
+
+
         if (canSuperBreaker) {
         if (canSuperBreaker) {
             messages.add(getStatMessage(SubSkillType.MINING_SUPER_BREAKER, superBreakerLength)
             messages.add(getStatMessage(SubSkillType.MINING_SUPER_BREAKER, superBreakerLength)
                     + (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", superBreakerLengthEndurance) : ""));
                     + (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", superBreakerLengthEndurance) : ""));

+ 21 - 4
src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java

@@ -17,15 +17,18 @@ public class WoodcuttingCommand extends SkillCommand {
     private String treeFellerLength;
     private String treeFellerLength;
     private String treeFellerLengthEndurance;
     private String treeFellerLengthEndurance;
     private String doubleDropChance;
     private String doubleDropChance;
+    private String tripleDropChance;
     private String doubleDropChanceLucky;
     private String doubleDropChanceLucky;
+    private String tripleDropChanceLucky;
 
 
     private boolean canTreeFell;
     private boolean canTreeFell;
     private boolean canLeafBlow;
     private boolean canLeafBlow;
     private boolean canDoubleDrop;
     private boolean canDoubleDrop;
+    private boolean canTripleDrop;
     private boolean canKnockOnWood;
     private boolean canKnockOnWood;
-    private boolean canSplinter;
-    private boolean canBarkSurgeon;
-    private boolean canNaturesBounty;
+//    private boolean canSplinter;
+//    private boolean canBarkSurgeon;
+//    private boolean canNaturesBounty;
 
 
     public WoodcuttingCommand() {
     public WoodcuttingCommand() {
         super(PrimarySkillType.WOODCUTTING);
         super(PrimarySkillType.WOODCUTTING);
@@ -37,6 +40,13 @@ public class WoodcuttingCommand extends SkillCommand {
         if (canDoubleDrop) {
         if (canDoubleDrop) {
             setDoubleDropClassicChanceStrings(player);
             setDoubleDropClassicChanceStrings(player);
         }
         }
+
+        //Clean Cuts
+        if(canTripleDrop) {
+            String[] tripleDropStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.WOODCUTTING_CLEAN_CUTS);
+            tripleDropChance = tripleDropStrings[0];
+            tripleDropChanceLucky = tripleDropStrings[1];
+        }
         
         
         // TREE FELLER
         // TREE FELLER
         if (canTreeFell) {
         if (canTreeFell) {
@@ -55,7 +65,8 @@ public class WoodcuttingCommand extends SkillCommand {
     @Override
     @Override
     protected void permissionsCheck(Player player) {
     protected void permissionsCheck(Player player) {
         canTreeFell = RankUtils.hasUnlockedSubskill(player, SubSkillType.WOODCUTTING_TREE_FELLER) && Permissions.treeFeller(player);
         canTreeFell = RankUtils.hasUnlockedSubskill(player, SubSkillType.WOODCUTTING_TREE_FELLER) && Permissions.treeFeller(player);
-        canDoubleDrop = Permissions.canUseSubSkill(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) && !skill.getDoubleDropsDisabled() && RankUtils.getRank(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) >= 1;
+        canDoubleDrop = Permissions.canUseSubSkill(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) && !skill.getDoubleDropsDisabled();
+        canTripleDrop = Permissions.canUseSubSkill(player, SubSkillType.WOODCUTTING_CLEAN_CUTS) && !skill.getDoubleDropsDisabled();
         canLeafBlow = Permissions.canUseSubSkill(player, SubSkillType.WOODCUTTING_LEAF_BLOWER);
         canLeafBlow = Permissions.canUseSubSkill(player, SubSkillType.WOODCUTTING_LEAF_BLOWER);
         canKnockOnWood = canTreeFell && Permissions.canUseSubSkill(player, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD);
         canKnockOnWood = canTreeFell && Permissions.canUseSubSkill(player, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD);
         /*canSplinter = canUseSubskill(player, SubSkillType.WOODCUTTING_SPLINTER);
         /*canSplinter = canUseSubskill(player, SubSkillType.WOODCUTTING_SPLINTER);
@@ -72,6 +83,12 @@ public class WoodcuttingCommand extends SkillCommand {
                     + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
                     + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
         }
         }
 
 
+        if(canTripleDrop) {
+            messages.add(getStatMessage(SubSkillType.WOODCUTTING_CLEAN_CUTS, tripleDropChance)
+                    + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", tripleDropChanceLucky) : ""));
+        }
+
+
         if (canKnockOnWood) {
         if (canKnockOnWood) {
             String lootNote;
             String lootNote;
 
 

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java

@@ -63,7 +63,7 @@ public enum PrimarySkillType {
     UNARMED(UnarmedManager.class, Color.BLACK, SuperAbilityType.BERSERK, ToolType.FISTS,
     UNARMED(UnarmedManager.class, Color.BLACK, SuperAbilityType.BERSERK, ToolType.FISTS,
             ImmutableList.of(SubSkillType.UNARMED_MASTERY, SubSkillType.UNARMED_BERSERK, SubSkillType.UNARMED_UNARMED_LIMIT_BREAK, SubSkillType.UNARMED_BLOCK_CRACKER, SubSkillType.UNARMED_ARROW_DEFLECT, SubSkillType.UNARMED_DISARM, SubSkillType.UNARMED_STEEL_ARM_STYLE, SubSkillType.UNARMED_IRON_GRIP)),
             ImmutableList.of(SubSkillType.UNARMED_MASTERY, SubSkillType.UNARMED_BERSERK, SubSkillType.UNARMED_UNARMED_LIMIT_BREAK, SubSkillType.UNARMED_BLOCK_CRACKER, SubSkillType.UNARMED_ARROW_DEFLECT, SubSkillType.UNARMED_DISARM, SubSkillType.UNARMED_STEEL_ARM_STYLE, SubSkillType.UNARMED_IRON_GRIP)),
     WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, SuperAbilityType.TREE_FELLER, ToolType.AXE,
     WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, SuperAbilityType.TREE_FELLER, ToolType.AXE,
-            ImmutableList.of(SubSkillType.WOODCUTTING_MASTERY, SubSkillType.WOODCUTTING_LEAF_BLOWER, SubSkillType.WOODCUTTING_TREE_FELLER, SubSkillType.WOODCUTTING_HARVEST_LUMBER, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD));
+            ImmutableList.of(SubSkillType.WOODCUTTING_CLEAN_CUTS, SubSkillType.WOODCUTTING_LEAF_BLOWER, SubSkillType.WOODCUTTING_TREE_FELLER, SubSkillType.WOODCUTTING_HARVEST_LUMBER, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD));
 
 
     private final Class<? extends SkillManager> managerClass;
     private final Class<? extends SkillManager> managerClass;
     private final Color skillColor;
     private final Color skillColor;

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java

@@ -119,7 +119,7 @@ public enum SubSkillType {
 /*    WOODCUTTING_NATURES_BOUNTY(3),
 /*    WOODCUTTING_NATURES_BOUNTY(3),
     WOODCUTTING_SPLINTER(3),*/
     WOODCUTTING_SPLINTER(3),*/
     WOODCUTTING_TREE_FELLER(1),
     WOODCUTTING_TREE_FELLER(1),
-    WOODCUTTING_MASTERY(1);
+    WOODCUTTING_CLEAN_CUTS(1);
 
 
     private final int numRanks;
     private final int numRanks;
     //TODO: SuperAbilityType should also contain flags for active by default? Not sure if it should work that way.
     //TODO: SuperAbilityType should also contain flags for active by default? Not sure if it should work that way.

+ 1 - 1
src/main/java/com/gmail/nossr50/listeners/BlockListener.java

@@ -358,7 +358,7 @@ public class BlockListener implements Listener {
                 woodcuttingManager.processWoodcuttingBlockXP(blockState);
                 woodcuttingManager.processWoodcuttingBlockXP(blockState);
 
 
                 //Check for bonus drops
                 //Check for bonus drops
-                woodcuttingManager.processHarvestLumber(blockState);
+                woodcuttingManager.processBonusDropCheck(blockState);
             }
             }
         }
         }
 
 

+ 30 - 10
src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java

@@ -36,6 +36,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.List;
 import java.util.Set;
 import java.util.Set;
 
 
+//TODO: Seems to not be using the item drop event for bonus drops, may want to change that.. or may not be able to be changed?
 public class WoodcuttingManager extends SkillManager {
 public class WoodcuttingManager extends SkillManager {
     private boolean treeFellerReachedThreshold = false;
     private boolean treeFellerReachedThreshold = false;
     private static int treeFellerThreshold; //TODO: Shared setting, will be removed in 2.2
     private static int treeFellerThreshold; //TODO: Shared setting, will be removed in 2.2
@@ -68,21 +69,40 @@ public class WoodcuttingManager extends SkillManager {
                 && ItemUtils.isAxe(heldItem);
                 && ItemUtils.isAxe(heldItem);
     }
     }
 
 
-    private boolean checkHarvestLumberActivation(@NotNull Material material) {
-        return Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.WOODCUTTING_HARVEST_LUMBER)
-                && RankUtils.hasReachedRank(1, getPlayer(), SubSkillType.WOODCUTTING_HARVEST_LUMBER)
-                && RandomChanceUtil.isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.WOODCUTTING_HARVEST_LUMBER, getPlayer())
-                && Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.WOODCUTTING, material);
+    private boolean checkHarvestLumberActivation() {
+        return RandomChanceUtil.isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.WOODCUTTING_HARVEST_LUMBER, getPlayer());
+    }
+
+    private boolean checkCleanCutsActivation() {
+        return RandomChanceUtil.isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.WOODCUTTING_CLEAN_CUTS, getPlayer());
     }
     }
 
 
     /**
     /**
-     * Begins Woodcutting
+     * Processes bonus drops for a block
      *
      *
      * @param blockState Block being broken
      * @param blockState Block being broken
      */
      */
-    public void processHarvestLumber(@NotNull BlockState blockState) {
-        if (checkHarvestLumberActivation(blockState.getType())) {
-            spawnHarvestLumberBonusDrops(blockState);
+    public void processBonusDropCheck(@NotNull BlockState blockState) {
+        //TODO: Why isn't this using the item drop event? Potentially because of Tree Feller? This should be adjusted either way.
+        if(Config.getInstance().getDoubleDropsEnabled(PrimarySkillType.WOODCUTTING, blockState.getType())) {
+            //Mastery enabled for player
+            if(Permissions.canUseSubSkill(getPlayer(), SubSkillType.WOODCUTTING_CLEAN_CUTS)) {
+                if(checkCleanCutsActivation()) {
+                    //Triple drops
+                    spawnHarvestLumberBonusDrops(blockState);
+                    spawnHarvestLumberBonusDrops(blockState);
+                } else {
+                    //Harvest Lumber Check
+                    if(checkHarvestLumberActivation()) {
+                        spawnHarvestLumberBonusDrops(blockState);
+                    }
+                }
+            //No Mastery (no Clean Cuts)
+            } else if (Permissions.canUseSubSkill(getPlayer(), SubSkillType.WOODCUTTING_HARVEST_LUMBER)) {
+                if(checkHarvestLumberActivation()) {
+                    spawnHarvestLumberBonusDrops(blockState);
+                }
+            }
         }
         }
     }
     }
 
 
@@ -299,7 +319,7 @@ public class WoodcuttingManager extends SkillManager {
                 Misc.spawnItemsFromCollection(Misc.getBlockCenter(blockState), block.getDrops(), ItemSpawnReason.TREE_FELLER_DISPLACED_BLOCK);
                 Misc.spawnItemsFromCollection(Misc.getBlockCenter(blockState), block.getDrops(), ItemSpawnReason.TREE_FELLER_DISPLACED_BLOCK);
 
 
                 //Bonus Drops / Harvest lumber checks
                 //Bonus Drops / Harvest lumber checks
-                processHarvestLumber(blockState);
+                processBonusDropCheck(blockState);
             } else if (BlockUtils.isNonWoodPartOfTree(blockState)) {
             } else if (BlockUtils.isNonWoodPartOfTree(blockState)) {
                 //Drop displaced non-woodcutting XP blocks
                 //Drop displaced non-woodcutting XP blocks
 
 

+ 0 - 12
src/main/java/com/gmail/nossr50/util/random/RandomChanceUtil.java

@@ -112,13 +112,6 @@ public class RandomChanceUtil {
         return rollDice(chanceOfSuccess, 100);
         return rollDice(chanceOfSuccess, 100);
     }
     }
 
 
-
-    /*public static double getRandomChanceExecutionChance(RandomChanceSkill randomChance)
-    {
-        double chanceOfSuccess = calculateChanceOfSuccess(randomChance);
-        return chanceOfSuccess;
-    }*/
-
     /**
     /**
      * Gets the Static Chance for something to activate
      * Gets the Static Chance for something to activate
      *
      *
@@ -141,11 +134,6 @@ public class RandomChanceUtil {
         return chanceOfSuccess;
         return chanceOfSuccess;
     }
     }
 
 
-    /*private static double calculateChanceOfSuccess(RandomChanceStatic randomChance) {
-        double chanceOfSuccess = getChanceOfSuccess(randomChance.getXPos(), randomChance.getProbabilityCap());
-        return chanceOfSuccess;
-    }*/
-
     public static double calculateChanceOfSuccess(@NotNull RandomChanceSkill randomChance) {
     public static double calculateChanceOfSuccess(@NotNull RandomChanceSkill randomChance) {
         double skillLevel = randomChance.getSkillLevel();
         double skillLevel = randomChance.getSkillLevel();
         double maximumProbability = randomChance.getProbabilityCap();
         double maximumProbability = randomChance.getProbabilityCap();

+ 8 - 1
src/main/resources/advanced.yml

@@ -590,9 +590,16 @@ Skills:
             Knock_On_Wood:
             Knock_On_Wood:
                 Add_XP_Orbs_To_Drops: true
                 Add_XP_Orbs_To_Drops: true
 
 
+        # Triple Drops
+        CleanCuts:
+            # ChanceMax: Maximum chance of receiving double drops (100 = 100%)
+            # MaxBonusLevel: Level when the maximum chance of receiving double drops is reached
+            ChanceMax: 10.0
+            MaxBonusLevel:
+                Standard: 1000
+                RetroMode: 10000
         # Double Drops
         # Double Drops
         HarvestLumber:
         HarvestLumber:
-            # ChanceMax & MaxBonusLevel are only used for Classic, I'll make that more clear in the future.
             # ChanceMax: Maximum chance of receiving double drops (100 = 100%)
             # ChanceMax: Maximum chance of receiving double drops (100 = 100%)
             # MaxBonusLevel: Level when the maximum chance of receiving double drops is reached
             # MaxBonusLevel: Level when the maximum chance of receiving double drops is reached
             ChanceMax: 100.0
             ChanceMax: 100.0

+ 4 - 4
src/main/resources/locale/locale_en_US.properties

@@ -314,7 +314,7 @@ Mining.SubSkill.DoubleDrops.Description=Double the normal loot
 Mining.SubSkill.DoubleDrops.Stat=Double Drop Chance
 Mining.SubSkill.DoubleDrops.Stat=Double Drop Chance
 Mining.SubSkill.MotherLode.Name=Mother Lode
 Mining.SubSkill.MotherLode.Name=Mother Lode
 Mining.SubSkill.MotherLode.Description=Triple the normal loot
 Mining.SubSkill.MotherLode.Description=Triple the normal loot
-Mining.SubSkill.MotherLode.Stat=Mother Lode Chance
+Mining.SubSkill.MotherLode.Stat=Triple Drop Chance
 Mining.SubSkill.BlastMining.Name=Blast Mining
 Mining.SubSkill.BlastMining.Name=Blast Mining
 Mining.SubSkill.BlastMining.Description=Bonuses to mining with TNT
 Mining.SubSkill.BlastMining.Description=Bonuses to mining with TNT
 Mining.SubSkill.BlastMining.Stat=Blast Mining:&a Rank {0}/{1} &7({2})
 Mining.SubSkill.BlastMining.Stat=Blast Mining:&a Rank {0}/{1} &7({2})
@@ -544,9 +544,9 @@ Woodcutting.SubSkill.KnockOnWood.Loot.Rank2=Standard loot from trees and experie
 Woodcutting.SubSkill.HarvestLumber.Name=Harvest Lumber
 Woodcutting.SubSkill.HarvestLumber.Name=Harvest Lumber
 Woodcutting.SubSkill.HarvestLumber.Description=Skillfully extract up to double the Lumber
 Woodcutting.SubSkill.HarvestLumber.Description=Skillfully extract up to double the Lumber
 Woodcutting.SubSkill.HarvestLumber.Stat=Double Drop Chance
 Woodcutting.SubSkill.HarvestLumber.Stat=Double Drop Chance
-Woodcutting.SubSkill.Mastery.Name=Clean Cuts
-Woodcutting.SubSkill.Mastery.Description=Masterfully extract up to triple the Lumber
-Woodcutting.SubSkill.Mastery.Stat=Triple Drop Chance
+Woodcutting.SubSkill.CleanCuts.Name=Clean Cuts
+Woodcutting.SubSkill.CleanCuts.Description=Masterfully extract up to triple the Lumber
+Woodcutting.SubSkill.CleanCuts.Stat=Triple Drop Chance
 Woodcutting.SubSkill.Splinter.Name=Splinter
 Woodcutting.SubSkill.Splinter.Name=Splinter
 Woodcutting.SubSkill.Splinter.Description=Cut down trees more efficiently.
 Woodcutting.SubSkill.Splinter.Description=Cut down trees more efficiently.
 Woodcutting.SubSkill.BarkSurgeon.Name=Bark Surgeon
 Woodcutting.SubSkill.BarkSurgeon.Name=Bark Surgeon

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

@@ -768,8 +768,8 @@ permissions:
             mcmmo.ability.woodcutting.knockonwood: true
             mcmmo.ability.woodcutting.knockonwood: true
             mcmmo.ability.woodcutting.leafblower: true
             mcmmo.ability.woodcutting.leafblower: true
             mcmmo.ability.woodcutting.treefeller: true
             mcmmo.ability.woodcutting.treefeller: true
-            mcmmo.ability.woodcutting.mastery: true
-    mcmmo.ability.woodcutting.mastery:
+            mcmmo.ability.woodcutting.cleancuts: true
+    mcmmo.ability.woodcutting.cleancuts:
         description: Allows access to end game progression for Woodcutting
         description: Allows access to end game progression for Woodcutting
     mcmmo.ability.woodcutting.knockonwood:
     mcmmo.ability.woodcutting.knockonwood:
         description: Allows access to Knock on Wood subskill
         description: Allows access to Knock on Wood subskill