diff --git a/Essentials/src/com/earth2me/essentials/Util.java b/Essentials/src/com/earth2me/essentials/Util.java index c1b0ed7bf..067c8115f 100644 --- a/Essentials/src/com/earth2me/essentials/Util.java +++ b/Essentials/src/com/earth2me/essentials/Util.java @@ -28,6 +28,8 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; public class Util @@ -221,6 +223,7 @@ public class Util // The player can stand inside these materials private static final Set AIR_MATERIALS = new HashSet(); + private static final HashSet AIR_MATERIALS_TARGET = new HashSet(); static { AIR_MATERIALS.add(Material.AIR.getId()); @@ -256,7 +259,21 @@ public class Util AIR_MATERIALS.add(Material.MELON_STEM.getId()); AIR_MATERIALS.add(Material.VINE.getId()); //TODO: Add 1.9 materials - + + for (Integer integer : AIR_MATERIALS) + { + AIR_MATERIALS_TARGET.add(integer.byteValue()); + } + AIR_MATERIALS_TARGET.add((byte)Material.WATER.getId()); + AIR_MATERIALS_TARGET.add((byte)Material.STATIONARY_WATER.getId()); + } + + public static Location getTarget(final LivingEntity entity) throws Exception { + final Block block = entity.getTargetBlock(AIR_MATERIALS_TARGET, 300); + if (block == null) { + throw new Exception("Not targeting a block"); + } + return block.getLocation(); } public static Location getSafeDestination(final Location loc) throws Exception diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbigtree.java b/Essentials/src/com/earth2me/essentials/commands/Commandbigtree.java index ded3ffdaf..c6cf83df4 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbigtree.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbigtree.java @@ -1,6 +1,5 @@ package com.earth2me.essentials.commands; -import com.earth2me.essentials.TargetBlock; import org.bukkit.Server; import org.bukkit.TreeType; import com.earth2me.essentials.User; @@ -31,14 +30,10 @@ public class Commandbigtree extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - - final int[] ignore = - { - 8, 9 - }; - final Location loc = (new TargetBlock(user, 300, 0.2, ignore)).getTargetBlock().getLocation(); + + final Location loc = Util.getTarget(user); final Location safeLocation = Util.getSafeDestination(loc); - final boolean success = user.getWorld().generateTree(safeLocation, (TreeType)tree); + final boolean success = user.getWorld().generateTree(safeLocation, tree); if (success) { user.sendMessage(Util.i18n("bigTreeSuccess")); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtree.java b/Essentials/src/com/earth2me/essentials/commands/Commandtree.java index 8013453ab..26bc9a8ee 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtree.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtree.java @@ -1,13 +1,10 @@ package com.earth2me.essentials.commands; -import com.earth2me.essentials.TargetBlock; import org.bukkit.Location; import org.bukkit.Server; import org.bukkit.TreeType; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; -import org.bukkit.Material; -import org.bukkit.block.Block; public class Commandtree extends EssentialsCommand @@ -20,7 +17,7 @@ public class Commandtree extends EssentialsCommand @Override public void run(Server server, User user, String commandLabel, String[] args) throws Exception { - Object tree = new Object(); + TreeType tree; if (args.length < 1) { throw new NotEnoughArgumentsException(); @@ -46,9 +43,9 @@ public class Commandtree extends EssentialsCommand { 8, 9 }; - final Location loc = (new TargetBlock(user, 300, 0.2, ignore)).getTargetBlock().getLocation(); + final Location loc = Util.getTarget(user); final Location safeLocation = Util.getSafeDestination(loc); - final boolean success = user.getWorld().generateTree(safeLocation, (TreeType)tree); + final boolean success = user.getWorld().generateTree(safeLocation, tree); if (success) { user.sendMessage(Util.i18n("treeSpawned"));