From 5d5584241bace6438e879340af17e1e8f3386726 Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Tue, 15 Dec 2015 20:07:08 -0800 Subject: [PATCH] Easier claim management on water. If in water, shovel and stick ignore water. Otherwise they treat water is a solid block. Should make creating claims on water and resizing claims when the corner to be moved is beneath water much easier. --- src/me/ryanhamshire/GriefPrevention/DataStore.java | 1 + .../GriefPrevention/PlayerEventHandler.java | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/me/ryanhamshire/GriefPrevention/DataStore.java b/src/me/ryanhamshire/GriefPrevention/DataStore.java index d22b346..9c7912e 100644 --- a/src/me/ryanhamshire/GriefPrevention/DataStore.java +++ b/src/me/ryanhamshire/GriefPrevention/DataStore.java @@ -1387,6 +1387,7 @@ public abstract class DataStore this.addDefault(defaults, Messages.BookDisabledChestClaims, " On this server, placing a chest will NOT claim land for you.", null); this.addDefault(defaults, Messages.BookUsefulCommands, "Useful Commands:", null); this.addDefault(defaults, Messages.NoProfanity, "Please moderate your language.", null); + this.addDefault(defaults, Messages.IsIgnoringYou, "That player is ignoring you.", null); //load the config file FileConfiguration config = YamlConfiguration.loadConfiguration(new File(messagesFilePath)); diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index e30db80..ef29d19 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -2671,14 +2671,19 @@ class PlayerEventHandler implements Listener static Block getTargetBlock(Player player, int maxDistance) throws IllegalStateException { - BlockIterator iterator = new BlockIterator(player.getLocation(), player.getEyeHeight(), maxDistance); + Location eye = player.getEyeLocation(); + Material eyeMaterial = eye.getBlock().getType(); + boolean passThroughWater = (eyeMaterial == Material.WATER || eyeMaterial == Material.STATIONARY_WATER); + BlockIterator iterator = new BlockIterator(player.getLocation(), player.getEyeHeight(), maxDistance); Block result = player.getLocation().getBlock().getRelative(BlockFace.UP); while (iterator.hasNext()) { result = iterator.next(); - if(result.getType() != Material.AIR && - result.getType() != Material.STATIONARY_WATER && - result.getType() != Material.LONG_GRASS) return result; + Material type = result.getType(); + if(type != Material.AIR && + (!passThroughWater || type != Material.STATIONARY_WATER) && + (!passThroughWater || type != Material.WATER) && + type != Material.LONG_GRASS) return result; } return result;