diff --git a/common/src/main/java/fr/rakambda/fallingtree/common/config/ITreeConfiguration.java b/common/src/main/java/fr/rakambda/fallingtree/common/config/ITreeConfiguration.java index 40ba3878..7d3b43e6 100644 --- a/common/src/main/java/fr/rakambda/fallingtree/common/config/ITreeConfiguration.java +++ b/common/src/main/java/fr/rakambda/fallingtree/common/config/ITreeConfiguration.java @@ -68,6 +68,7 @@ public interface ITreeConfiguration{ boolean isBreakNetherTreeWarts(); boolean isBreakMangroveRoots(); + int getSearchAreaRadius(); @NotNull diff --git a/common/src/main/java/fr/rakambda/fallingtree/common/tree/Tree.java b/common/src/main/java/fr/rakambda/fallingtree/common/tree/Tree.java index 1a9cca11..0e6a08e5 100644 --- a/common/src/main/java/fr/rakambda/fallingtree/common/tree/Tree.java +++ b/common/src/main/java/fr/rakambda/fallingtree/common/tree/Tree.java @@ -1,5 +1,10 @@ package fr.rakambda.fallingtree.common.tree; +import fr.rakambda.fallingtree.common.wrapper.IBlockPos; +import fr.rakambda.fallingtree.common.wrapper.ILevel; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.Collection; import java.util.LinkedHashMap; @@ -10,11 +15,6 @@ import static java.util.Comparator.comparingInt; import static java.util.Objects.isNull; import static java.util.stream.Collectors.toSet; -import fr.rakambda.fallingtree.common.wrapper.IBlockPos; -import fr.rakambda.fallingtree.common.wrapper.ILevel; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import org.jetbrains.annotations.NotNull; @RequiredArgsConstructor public class Tree{ @@ -114,12 +114,19 @@ private Optional getTopMostPart(){ } @NotNull - public Collection getWarts(){ + public Collection getNetherWarts(){ return getParts().stream() .filter(part -> part.treePartType() == TreePartType.NETHER_WART) .collect(toSet()); } + @NotNull + public Collection getMangroveRoots(){ + return getParts().stream() + .filter(part -> part.treePartType() == TreePartType.MANGROVE_ROOTS) + .collect(toSet()); + } + @NotNull public Optional getStart(){ return getParts().stream() diff --git a/common/src/main/java/fr/rakambda/fallingtree/common/tree/breaking/ShiftDownTreeBreakingHandler.java b/common/src/main/java/fr/rakambda/fallingtree/common/tree/breaking/ShiftDownTreeBreakingHandler.java index 2154955e..d9b46e44 100644 --- a/common/src/main/java/fr/rakambda/fallingtree/common/tree/breaking/ShiftDownTreeBreakingHandler.java +++ b/common/src/main/java/fr/rakambda/fallingtree/common/tree/breaking/ShiftDownTreeBreakingHandler.java @@ -1,9 +1,5 @@ package fr.rakambda.fallingtree.common.tree.breaking; -import java.util.Collection; -import java.util.List; -import static fr.rakambda.fallingtree.common.tree.TreePartType.NETHER_WART; -import static java.util.Objects.isNull; import fr.rakambda.fallingtree.common.FallingTreeCommon; import fr.rakambda.fallingtree.common.tree.IBreakAttemptResult; import fr.rakambda.fallingtree.common.tree.SuccessResult; @@ -17,6 +13,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.List; +import static fr.rakambda.fallingtree.common.tree.TreePartType.MANGROVE_ROOTS; +import static fr.rakambda.fallingtree.common.tree.TreePartType.NETHER_WART; +import static java.util.Objects.isNull; @Log4j2 @RequiredArgsConstructor @@ -39,7 +40,10 @@ public IBreakAttemptResult breakTree(boolean isCancellable, @NotNull IPlayer pla var treePartLog = treePartLogOptional.get(); var level = tree.getLevel(); if(treePart.treePartType() == NETHER_WART && mod.getConfiguration().getTrees().isBreakNetherTreeWarts()){ - return breakElements(isCancellable, tree, level, player, tool, treePartLog, tree.getWarts()); + return breakElements(isCancellable, tree, level, player, tool, treePartLog, tree.getNetherWarts()); + } + else if(treePart.treePartType() == MANGROVE_ROOTS && mod.getConfiguration().getTrees().isBreakMangroveRoots()){ + return breakElements(isCancellable, tree, level, player, tool, treePartLog, tree.getMangroveRoots()); } else{ return breakElements(isCancellable, tree, level, player, tool, treePartLog, List.of());