From 77ffee25154844b536e9fdbe61b6285fed766402 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Fri, 23 Aug 2019 13:08:04 -0600 Subject: [PATCH] Fixed a bug where Tree Feller only rewarded 1 XP per block --- Changelog.txt | 1 + .../skills/woodcutting/WoodcuttingManager.java | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) 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());