diff --git a/Changelog.txt b/Changelog.txt index f68ef281d..5c9479afd 100644 --- a/Changelog.txt +++ b/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) diff --git a/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java b/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java index 6f3565fac..72a797ea3 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java +++ b/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());