diff --git a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java index 405fe5dc0..fe1913af7 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java @@ -228,6 +228,8 @@ public interface ISettings extends IConf { boolean isWorldHomePermissions(); + int getMaxTreeCommandRange(); + boolean registerBackInListener(); boolean getDisableItemPickupWhileAfk(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index 47eecc985..18a42e8bb 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -1212,6 +1212,11 @@ public class Settings implements net.ess3.api.ISettings { return registerBackInListener; } + @Override + public int getMaxTreeCommandRange() { + return config.getInt("tree-command-range-limit", 300); + } + private boolean _registerBackInListener() { return config.getBoolean("register-back-in-listener", false); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbigtree.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbigtree.java index 99219083a..d76863b6f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbigtree.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbigtree.java @@ -32,7 +32,7 @@ public class Commandbigtree extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final Location loc = LocationUtil.getTarget(user.getBase()).add(0, 1, 0); + final Location loc = LocationUtil.getTarget(user.getBase(), ess.getSettings().getMaxTreeCommandRange()).add(0, 1, 0); if (loc.getBlock().getType().isSolid()) { throw new Exception(tl("bigTreeFailure")); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtree.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtree.java index 16fb6865f..6496b9626 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtree.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtree.java @@ -38,7 +38,7 @@ public class Commandtree extends EssentialsCommand { } } - final Location loc = LocationUtil.getTarget(user.getBase()).add(0, 1, 0); + final Location loc = LocationUtil.getTarget(user.getBase(), ess.getSettings().getMaxTreeCommandRange()).add(0, 1, 0); if (loc.getBlock().getType().isSolid()) { throw new Exception(tl("treeFailure")); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/utils/LocationUtil.java b/Essentials/src/main/java/com/earth2me/essentials/utils/LocationUtil.java index ae84c2aa4..2d1dce809 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/utils/LocationUtil.java +++ b/Essentials/src/main/java/com/earth2me/essentials/utils/LocationUtil.java @@ -84,9 +84,13 @@ public final class LocationUtil { } public static Location getTarget(final LivingEntity entity) throws Exception { + return getTarget(entity, 300); + } + + public static Location getTarget(final LivingEntity entity, final int maxDistance) throws Exception { Block block = null; try { - block = entity.getTargetBlock(TRANSPARENT_MATERIALS, 300); + block = entity.getTargetBlock(TRANSPARENT_MATERIALS, maxDistance); } catch (final NoSuchMethodError ignored) { } // failing now :( if (block == null) { diff --git a/Essentials/src/main/resources/config.yml b/Essentials/src/main/resources/config.yml index bd96fcaf4..85a2cf628 100644 --- a/Essentials/src/main/resources/config.yml +++ b/Essentials/src/main/resources/config.yml @@ -593,6 +593,9 @@ repair-enchanted: true # Warning: Mixing and overleveling some enchantments can cause issues with clients, servers and plugins. unsafe-enchantments: false +# The maximum range from the player that the /tree and /bigtree commands can spawn trees. +tree-command-range-limit: 300 + #Do you want Essentials to keep track of previous location for /back in the teleport listener? #If you set this to true any plugin that uses teleport will have the previous location registered. register-back-in-listener: false