Browse Source

Fixed a bug where Tree Feller only rewarded 1 XP per block

nossr50 5 năm trước cách đây
mục cha
commit
77ffee2515

+ 1 - 0
Changelog.txt

@@ -1,4 +1,5 @@
 Version 2.1.103
+    Fixed a bug where Tree Feller was only rewarding 1 XP per log broken no matter the circumstances
     Fixed an issue with salvage checking the incorrect level requirement
     Updated Italian locale (thanks Leomixer17)
     Fixed grammar in one of the Salvage strings (thanks QuantumToasted)

+ 13 - 3
src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java

@@ -266,6 +266,7 @@ public class WoodcuttingManager extends SkillManager {
         int processedLogCount = 0;
 
         for (BlockState blockState : treeFellerBlocks) {
+            int beforeXP = xp;
             Block block = blockState.getBlock();
 
             if (!EventUtils.simulateBlockBreak(block, player, true)) {
@@ -295,12 +296,21 @@ public class WoodcuttingManager extends SkillManager {
 
             blockState.setType(Material.AIR);
             blockState.update(true);
-            processedLogCount+=1;
+
+            //Update only when XP changes
+            processedLogCount = updateProcessedLogCount(xp, processedLogCount, beforeXP);
         }
 
         applyXpGain(xp, XPGainReason.PVE);
     }
 
+    private int updateProcessedLogCount(int xp, int processedLogCount, int beforeXP) {
+        if(beforeXP != xp)
+            processedLogCount+=1;
+
+        return processedLogCount;
+    }
+
     /**
      * Retrieves the experience reward from logging via Tree Feller
      * Experience is reduced per log processed so far
@@ -318,8 +328,8 @@ public class WoodcuttingManager extends SkillManager {
             return 0;
 
         if(ExperienceConfig.getInstance().isTreeFellerXPReduced()) {
-            int reducedXP = 1 + (woodCount * 5);
-            rawXP = Math.max(1, rawXP - reducedXP);
+            int reducedXP = rawXP - (woodCount * 5);
+            rawXP = Math.max(1, reducedXP);
             return rawXP;
         } else {
             return ExperienceConfig.getInstance().getXp(PrimarySkillType.WOODCUTTING, blockState.getType());