Azalea trees bone mealed into existence no longer get marked unnatural

Fixes #4640
This commit is contained in:
nossr50 2021-10-05 11:58:31 -07:00
parent e55ce00d62
commit a2e10dbd0c
3 changed files with 18 additions and 6 deletions

View File

@ -1,4 +1,5 @@
Version 2.1.202 Version 2.1.202
Fixed a bug where mcMMO marked bonemealed Azalea trees as unnatural (and thus did not give XP or get affected by Tree Feller)
Added Amethyst_Block to experience.yml for Mining Added Amethyst_Block to experience.yml for Mining
Added Flowering Azalea Leaves to Tree Feller's white list Added Flowering Azalea Leaves to Tree Feller's white list
Fixed a bug where mcMMO didn't appropriately flag blocks as natural in some tree growing events Fixed a bug where mcMMO didn't appropriately flag blocks as natural in some tree growing events
@ -8,9 +9,8 @@ Version 2.1.202
Updated zh_CN locale (thanks GhostDC) Updated zh_CN locale (thanks GhostDC)
Added some settings for over fishing (Settings are in experience.yml under Fishing_ExploitFix_Options - thanks tunagohan) Added some settings for over fishing (Settings are in experience.yml under Fishing_ExploitFix_Options - thanks tunagohan)
NOTES: NOTES:
This means tree feller will destroy flowering azalea leaves during its ability This means tree feller will correctly traverse flowering azalea leaves during its ability
Version 2.1.201 Version 2.1.201
Tweaked the visual/audio effect for Rupture Tweaked the visual/audio effect for Rupture

View File

@ -238,7 +238,10 @@ public class BlockListener implements Listener {
WorldCompatibilityLayer worldCompatibilityLayer = mcMMO.getCompatibilityManager().getWorldCompatibilityLayer(); WorldCompatibilityLayer worldCompatibilityLayer = mcMMO.getCompatibilityManager().getWorldCompatibilityLayer();
if(BlockUtils.isWithinWorldBounds(worldCompatibilityLayer, block)) { if(BlockUtils.isWithinWorldBounds(worldCompatibilityLayer, block)) {
mcMMO.getPlaceStore().setTrue(blockState); //NOTE: BlockMultiPlace has its own logic so don't handle anything that would overlap
if (!(event instanceof BlockMultiPlaceEvent)) {
mcMMO.getPlaceStore().setTrue(blockState);
}
} }
@ -276,7 +279,16 @@ public class BlockListener implements Listener {
/* Check if the blocks placed should be monitored so they do not give out XP in the future */ /* Check if the blocks placed should be monitored so they do not give out XP in the future */
if(BlockUtils.isWithinWorldBounds(worldCompatibilityLayer, block)) { if(BlockUtils.isWithinWorldBounds(worldCompatibilityLayer, block)) {
mcMMO.getPlaceStore().setTrue(blockState); //Updated: 10/5/2021
//Note: For some reason Azalea trees trigger this event but no other tree does (as of 10/5/2021) but if this changes in the future we may need to update this
if(BlockUtils.isPartOfTree(event.getBlockPlaced())) {
return;
}
//Track unnatural blocks
for(BlockState replacedStates : event.getReplacedBlockStates()) {
mcMMO.getPlaceStore().setTrue(replacedStates);
}
} }
} }
} }

View File

@ -285,8 +285,8 @@ public final class BlockUtils {
return true; return true;
} }
public static boolean isPartOfTree(Block rayCast) { public static boolean isPartOfTree(Block block) {
return hasWoodcuttingXP(rayCast.getState()) || isNonWoodPartOfTree(rayCast.getType()); return hasWoodcuttingXP(block.getState()) || isNonWoodPartOfTree(block.getType());
} }
public static boolean isWithinWorldBounds(@NotNull WorldCompatibilityLayer worldCompatibilityLayer, @NotNull Block block) { public static boolean isWithinWorldBounds(@NotNull WorldCompatibilityLayer worldCompatibilityLayer, @NotNull Block block) {