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
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 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
@ -8,9 +9,8 @@ Version 2.1.202
Updated zh_CN locale (thanks GhostDC)
Added some settings for over fishing (Settings are in experience.yml under Fishing_ExploitFix_Options - thanks tunagohan)
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
Tweaked the visual/audio effect for Rupture

View File

@ -238,7 +238,10 @@ public class BlockListener implements Listener {
WorldCompatibilityLayer worldCompatibilityLayer = mcMMO.getCompatibilityManager().getWorldCompatibilityLayer();
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 */
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;
}
public static boolean isPartOfTree(Block rayCast) {
return hasWoodcuttingXP(rayCast.getState()) || isNonWoodPartOfTree(rayCast.getType());
public static boolean isPartOfTree(Block block) {
return hasWoodcuttingXP(block.getState()) || isNonWoodPartOfTree(block.getType());
}
public static boolean isWithinWorldBounds(@NotNull WorldCompatibilityLayer worldCompatibilityLayer, @NotNull Block block) {