From ae538d8c7215bae9cd705549ac2de2fce83fb599 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Mon, 29 Mar 2021 16:09:47 -0700 Subject: [PATCH] Sweet berry bush exploit fix --- Changelog.txt | 1 + .../nossr50/listeners/PlayerListener.java | 42 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index aee814a51..dbbeff792 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -2,6 +2,7 @@ Version 2.1.183 Updated Russian locale (thanks ImDaniX) Added Donkeys to beat lore (thanks QuantumToasted) Alchemy guide now correctly labels Rabbit's foot for potion of leaping (thanks mldriscoll) + Fixed a bug where sweet berry bushes would give XP in situations where they shouldn't Version 2.1.182 Players now receive XP from harvesting Sweet Berry bushes (double XP for harvesting fully grown berries) diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index 269d65967..f4938c319 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -824,30 +824,32 @@ public class PlayerListener implements Listener { } } - FakePlayerAnimationEvent fakeSwing = new FakePlayerAnimationEvent(event.getPlayer()); //PlayerAnimationEvent compat - if (herbalismManager.canGreenThumbBlock(blockState)) { - //call event for Green Thumb Block - if(!EventUtils.callSubSkillBlockEvent(player, SubSkillType.HERBALISM_GREEN_THUMB, block).isCancelled()) { - Bukkit.getPluginManager().callEvent(fakeSwing); - player.getInventory().getItemInMainHand().setAmount(heldItem.getAmount() - 1); - player.updateInventory(); - if (herbalismManager.processGreenThumbBlocks(blockState) && EventUtils.simulateBlockBreak(block, player, false)) { - blockState.update(true); + FakePlayerAnimationEvent fakeSwing = new FakePlayerAnimationEvent(event.getPlayer()); //PlayerAnimationEvent compat + if(!event.isCancelled() || event.useInteractedBlock() != Event.Result.DENY) { + if (herbalismManager.canGreenThumbBlock(blockState)) { + //call event for Green Thumb Block + if(!EventUtils.callSubSkillBlockEvent(player, SubSkillType.HERBALISM_GREEN_THUMB, block).isCancelled()) { + Bukkit.getPluginManager().callEvent(fakeSwing); + player.getInventory().getItemInMainHand().setAmount(heldItem.getAmount() - 1); + player.updateInventory(); + if (herbalismManager.processGreenThumbBlocks(blockState) && EventUtils.simulateBlockBreak(block, player, false)) { + blockState.update(true); + } } } - } - /* SHROOM THUMB CHECK */ - else if (herbalismManager.canUseShroomThumb(blockState)) { - if(!EventUtils.callSubSkillBlockEvent(player, SubSkillType.HERBALISM_SHROOM_THUMB, block).isCancelled()) { - Bukkit.getPluginManager().callEvent(fakeSwing); - event.setCancelled(true); - if (herbalismManager.processShroomThumb(blockState) - && EventUtils.simulateBlockBreak(block, player, false)) { - blockState.update(true); + /* SHROOM THUMB CHECK */ + else if (herbalismManager.canUseShroomThumb(blockState)) { + if(!EventUtils.callSubSkillBlockEvent(player, SubSkillType.HERBALISM_SHROOM_THUMB, block).isCancelled()) { + Bukkit.getPluginManager().callEvent(fakeSwing); + event.setCancelled(true); + if (herbalismManager.processShroomThumb(blockState) + && EventUtils.simulateBlockBreak(block, player, false)) { + blockState.update(true); + } } + } else { + herbalismManager.processBerryBushHarvesting(blockState); } - } else { - herbalismManager.processBerryBushHarvesting(blockState); } break;