diff --git a/randomteleport-plugin/src/main/java/de/themoep/randomteleport/RandomTeleport.java b/randomteleport-plugin/src/main/java/de/themoep/randomteleport/RandomTeleport.java index e8ec7ec..672603b 100644 --- a/randomteleport-plugin/src/main/java/de/themoep/randomteleport/RandomTeleport.java +++ b/randomteleport-plugin/src/main/java/de/themoep/randomteleport/RandomTeleport.java @@ -258,7 +258,7 @@ public class RandomTeleport extends JavaPlugin implements RandomTeleportAPI { private void initValidators() { locationValidators.add(new WorldborderValidator()); - locationValidators.add(new HeightValidator()); + locationValidators.add(new HeightValidator(unsafeBlocks)); locationValidators.add(new ProtectionValidator()); locationValidators.add(new BlockValidator(safeBlocks)); } diff --git a/randomteleport-plugin/src/main/java/de/themoep/randomteleport/searcher/validators/HeightValidator.java b/randomteleport-plugin/src/main/java/de/themoep/randomteleport/searcher/validators/HeightValidator.java index cbcd9be..d85cabf 100644 --- a/randomteleport-plugin/src/main/java/de/themoep/randomteleport/searcher/validators/HeightValidator.java +++ b/randomteleport-plugin/src/main/java/de/themoep/randomteleport/searcher/validators/HeightValidator.java @@ -20,13 +20,21 @@ package de.themoep.randomteleport.searcher.validators; import de.themoep.randomteleport.searcher.RandomSearcher; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import java.util.Collections; +import java.util.EnumSet; + public class HeightValidator extends LocationValidator { - public HeightValidator() { + private final EnumSet unsafeBlocks; + + public HeightValidator(Material[] unsafeBlocks) { super("height"); + this.unsafeBlocks = EnumSet.noneOf(Material.class); + Collections.addAll(this.unsafeBlocks, unsafeBlocks); } @Override @@ -49,7 +57,7 @@ public class HeightValidator extends LocationValidator { return isSafe(block.getRelative(BlockFace.UP)) && isSafe(block.getRelative(BlockFace.UP, 2)); } - private static boolean isSafe(Block block) { - return block.isPassable() && !block.isLiquid(); + private boolean isSafe(Block block) { + return block.isPassable() && !block.isLiquid() && !unsafeBlocks.contains(block.getType()); } } diff --git a/randomteleport-plugin/src/main/resources/config.yml b/randomteleport-plugin/src/main/resources/config.yml index 1c6ecfe..7962d55 100644 --- a/randomteleport-plugin/src/main/resources/config.yml +++ b/randomteleport-plugin/src/main/resources/config.yml @@ -21,7 +21,7 @@ safe-blocks: - end_stone - netherrack -# Blocks unsafe when in "--force blocks" mode +# Blocks not to teleport on or into unsafe-blocks: - air - water @@ -96,6 +96,7 @@ unsafe-blocks: - dark_oak_door - end_rod - end_gateway +- powder_snow sign-variables: - "[RTP]"